NATURAL HIGH 25th Anniversary Commemorative Work Fixed Slow Piston Sex 7 Enjoy the Reverse Natural High of Slow Unprotected Insertion","lastmod":"2026-07-11","duration":"","url":"/play/19206629.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvZGIxZGZjYzVmOTI5YWUwZjAwZTEwZTEzYWExMTJiOGIuanBn.cache","vod_id":19202419,"title":"A plain-looking, freckled college girl who grew up amidst the abundant nature of Idaho unexpectedly appears in an AV! Lenny (21 years old) Haikara - Delusion Tribe","lastmod":"2026-05-31","duration":"1:31:18","url":"/play/19202419.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDdkYWM0ZjY0NTc5ZjY1ZGIzN2MzZjcyNmE2ZWNkMGQuanBn.cache","vod_id":19086980,"title":"Her face was that of a slut, her tongue constantly moving. - Yuki Karasawa","lastmod":"2025-03-26","duration":"2:10:22","url":"/play/19086980.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMWUyMzg3ZTU3ZTVhN2JkMzc4MDMwN2JjYjBjZGYyMGQuanBn.cache","vod_id":19086158,"title":"[A wedding planner from Jiayuan.com plays with his flirtatious sister-in-law] He enjoys oral sex on her slutty pussy with his big cock in multiple positions, relentlessly fucking her and making her moan all the while, ejaculating into her mouth.","lastmod":"2025-03-26","duration":"0:27:54","url":"/play/19086158.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZWU1ZjE3MmEyMGFlODM3NmM3MzA3YjVmYzdkNDhlODcuanBn.cache","vod_id":19189163,"title":"Challenge yourself to find your dad in the parking lot and enjoy the ultimate service.","lastmod":"2026-03-27","duration":"0:39:36","url":"/play/19189163.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvOTNjNzg2M2JmMzJlNTNjMzMyNjNiYmRmN2JiMjY1YjAuanBn.cache","vod_id":19174101,"title":"A seemingly innocent but actually wanton woman revels in the pleasure of sex.","lastmod":"2026-01-15","duration":"1:57:37","url":"/play/19174101.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNGJiOGMyMmZiNGU3NTM1ZGY1NmJiY2E5YzY5ODU3NzAuanBn.cache","vod_id":19054516,"title":"[Original Release] July's Latest SexART Masterpiece: Tattooed Man Enjoys Sexy Female Model's Aphrodisiac Massage with Essential Oils, Gets an Erection, and Takes the Initiative in Riding; His Gasping and Moaning Are Extremely Seductive.","lastmod":"2025-03-26","duration":"0:20:37","url":"/play/19054516.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNTVlMGFmZWNjYjUwYTE3NTU5ZThhMWRkYWI2NjI0ZGUuanBn.cache","vod_id":19125333,"title":"A stunningly beautiful goddess recently went into the adult entertainment industry, wearing a sexy see-through outfit, black and white stockings, showing off her beautiful legs through foot fetishes, and playfully begging for sex with her buttocks sticking out. She looked completely blissful.","lastmod":"2025-03-26","duration":"1:15:00","url":"/play/19125333.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZTE5NDNhNWU4ZjEyNDBjYTVhOTBmOGExMmQxMWYwMDAuanBn.cache","vod_id":19177049,"title":"Eye contact! Your first close-up interaction on FTAV!! Enjoy a first-time subjective perspective with Sai Sai Izuki up close! Four scenarios from Taiwan FTAV-012","lastmod":"2026-01-29","duration":"1:47:39","url":"/play/19177049.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MTAvOGFmNzJhNDRkZGM3NTJhOTdiOTgyZGRkZDA4Y2UxMmQuanBn.cache","vod_id":19133881,"title":"A man enjoying a massage in a massage room","lastmod":"2025-05-10","duration":"0:38:51","url":"/play/19133881.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjZmYzU0ZDE1YWE4YWE2MjEyMDQ0M2I0NTU2OTA3ZDcuanBn.cache","vod_id":19049710,"title":"FC2PPV-1245109 ★Follow-up・25-year-old, voluptuous OL Leona-chan with a strong physique☆Aroused by a sensual tongue♥Special oral sex with legs is the best♥Murder without mercy inside her beautiful pussy♥【Private filming】※Comment bonus included!","lastmod":"2025-03-26","duration":"1:09:42","url":"/play/19049710.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjJlMTgyMWMwNTI3M2ZjNjZjNWQxMjAxOWVhZmVmNGEuanBn.cache","vod_id":19098833,"title":"I couldn't stay rational because of my girlfriend's sister's whispered seduction and her amazing oral sex (sweat) her tongue skills are amazing!","lastmod":"2025-03-26","duration":"1:55:47","url":"/play/19098833.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvNTE3ZWE1ZTY4ZTEzZTU5ZGRkMjIwMWQxMTAyYTkxYTUuanBn.cache","vod_id":19165460,"title":"A chubby-hipped girl seduces a lewd man who licks her pussy and thrusts in and out until she climaxes.","lastmod":"2025-12-13","duration":"0:32:58","url":"/play/19165460.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOWEwNGY3Y2Y0NTE3NDg4ZTBlOTFjYjBkMTMyMDhlNjAuanBn.cache","vod_id":19040622,"title":"STARS-511 Popular clothing store clerk Yuna is a slutty slut who loves to lick! With her drool flowing, she uses her incredibly erotic tongue skills to seduce one customer after another! Yuna Ogura licks her entire body from face to toe.","lastmod":"2025-03-26","duration":"2:20:05","url":"/play/19040622.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZjc3NTRjZGIxZDk3MjdlYmNiNmQ1NTc4ZmRkZTIxNWIuanBn.cache","vod_id":19188301,"title":"A selfie leaked showing a girl enjoying being penetrated by a large, unprotected penis; she appeared to be enjoying it.","lastmod":"2026-03-23","duration":"0:03:20","url":"/play/19188301.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MjcvMGFjMzc4MGVkODk0NThhMGVlZTY0M2JmN2NkMzlkNjkuanBn.cache","vod_id":19141005,"title":"A leader sexually harasses a female employee, offering her a threesome with just a glance.","lastmod":"2025-06-26","duration":"0:11:05","url":"/play/19141005.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZmVhOTZiN2FiNzQzZjc4Mjk2NTliMmU0ODM5YjhmOGEuanBn.cache","vod_id":19123154,"title":"The beautiful girl with a pair of huge breasts and a slim waist enjoyed the deep penetration from behind while riding in a jackhammer position at home.","lastmod":"2025-03-26","duration":"0:28:26","url":"/play/19123154.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvY2YyZmM3ZDA5YTZiNjE2YWExYmQ1YjgzZmE0OTlhMmYuanBn.cache","vod_id":19194797,"title":"This super high-value, big-breasted internet celebrity is incredibly cute and sexy. She's just a slut played with by rich guys in private. Lying on her body would be pure bliss!","lastmod":"2026-04-24","duration":"0:21:57","url":"/play/19194797.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzcwMWFmZDY3ODIxZTczYTIyMTcxMzQwZjc5YmIyNTUuanBn.cache","vod_id":19069535,"title":"Top-quality welfare girls, super eye-catching and enjoyable rear entry 1","lastmod":"2025-03-26","duration":"0:13:10","url":"/play/19069535.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZjI1ZjIxZjZmZDU5MGZjMGNmZDQxNjMyMzhjMDUyYTIuanBn.cache","vod_id":19067689,"title":"Super popular 91 high-value mature and beautiful girl [Duoyi] ultimate slow play sexy black uniform stunner, super enjoy the penis sliding in the tender hole, being scraped by the layers of tender flesh folds 1","lastmod":"2025-03-26","duration":"0:10:34","url":"/play/19067689.html"}]},
videoTitle: 'Enjoy the rich flavors of a cat's tongue!',
language: 'en',
dataKey: '01',
loadingPlayer: true,
showShare: false,
pageUrl: '',
// RecommendedMovies 组件状态
isSingleColumn: false,
pageSize: 8,
currentPage: 1,
// 计算属性(使用 getter)
get layoutIconClass() {
return this.isSingleColumn ? 'icon-view-list' : 'icon-grid';
},
get layoutClass() {
return [
'row',
'g-3',
'row-cols-1',
this.isSingleColumn ? '' : 'row-cols-2',
'row-cols-lg-4'
].filter(Boolean).join(' ');
},
// 方法
onAppMounted() {
// 设置页面 URL
this.pageUrl = window.location.href;
// 保存观看历史
this.saveWatchHistory();
// 更新标签统计
if (this.videoData.tag && this.videoData.tag.length > 0) {
this.updateTagStats(this.videoData.tag);
}
// 发送点击统计
this.hitVideoId(this.videoData.id);
// 从 Cookie 读取布局偏好
const layoutCookie = this.getCookie('list_layout');
if (layoutCookie === 'single') {
this.isSingleColumn = true;
}
// 监听 iframe 加载完成,隐藏骨架屏
// 使用 setTimeout 确保 DOM 已完全渲染
setTimeout(() => {
const iframe = document.getElementById('v2-player');
const skeleton = document.getElementById('player-skeleton');
if (iframe && skeleton) {
// 定义隐藏骨架屏的函数
const hideSkeleton = () => {
skeleton.style.transition = 'opacity 0.3s ease';
skeleton.style.opacity = '0';
setTimeout(() => {
skeleton.style.display = 'none';
}, 300);
};
// 检查 iframe 是否已经加载完成
if (iframe.contentDocument || iframe.contentWindow) {
try {
// 如果 iframe 已加载,直接隐藏骨架屏
if (iframe.contentWindow.document.readyState === 'complete') {
setTimeout(hideSkeleton, 500);
return;
}
} catch (e) {
console.log('[Video] 跨域 iframe,无法检查状态:', e.message);
// 跨域情况下无法访问 contentWindow,继续监听 load 事件
}
}
// 监听 load 事件
iframe.addEventListener('load', () => {
console.log('[Video] iframe load 事件触发');
setTimeout(hideSkeleton, 500);
});
// 添加超时保护,确保骨架屏最终会被隐藏
setTimeout(() => {
if (skeleton.style.display !== 'none') {
console.log('[Video] 超时保护触发,强制隐藏骨架屏');
hideSkeleton();
}
}, 5000); // 5秒后强制隐藏
} else {
console.error('[Video] 未找到 iframe 或 skeleton 元素');
}
}, 0);
},
// 随机跳转
async jumpToRandomVideo() {
try {
const response = await fetch(`/api/qun/randomid?t=${Date.now()}`, {
headers: {
'x-data-key': this.dataKey,
'x-api-key': 'dagexxx.com'
}
});
const data = await response.json();
if (data?.status === 1 && data?.data?.id) {
window.location.href = `/${this.language}/play/${data.data.id}.html`;
} else {
console.error('获取随机视频失败:', data?.message || '未知错误');
}
} catch (err) {
console.error('获取随机视频失败:', err);
}
},
// 复制分享链接
copyShareLink() {
const input = this.$refs.shareInput;
if (input) {
input.select();
input.setSelectionRange(0, 99999); // For mobile devices
// 尝试使用现代 API
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(this.pageUrl).then(() => {
alert('Link copied!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Link copied!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Link copied!');
}
}
},
// 切换布局
toggleLayout() {
this.isSingleColumn = !this.isSingleColumn;
this.setCookie('list_layout', this.isSingleColumn ? 'single' : 'multi', 30);
},
// 加载更多
loadMore() {
this.currentPage++;
},
// 保存观看历史
saveWatchHistory() {
try {
const storageKey = 'watchHistory';
let history = JSON.parse(localStorage.getItem(storageKey) || '[]');
// 解码 HTML 实体编码的标题
const decodeHtmlEntities = (text) => {
const textarea = document.createElement('textarea');
textarea.innerHTML = text;
return textarea.value;
};
const video = {
id: this.videoData.id,
title: decodeHtmlEntities(this.videoData.title),
image: this.videoData.images || this.videoData.preview,
duration: this.videoData.duration || ''
};
// 过滤掉已存在的相同 ID 视频
history = history.filter(item => item.id !== video.id);
// 添加新记录到最前面
history.unshift(video);
// 限制最多保存 100 条
if (history.length > 100) {
history = history.slice(0, 100);
}
localStorage.setItem(storageKey, JSON.stringify(history));
} catch (e) {
console.error('Failed to save watch history:', e);
}
},
// 更新标签统计
updateTagStats(tags = []) {
// HTML 实体解码函数
const decodeHtmlEntities = (text) => {
const textarea = document.createElement('textarea');
textarea.innerHTML = text;
return textarea.value;
};
const storageKey = this.dataKey + 'tagWatchStats';
const lastWatchedKey = this.dataKey + 'tagLastWatched';
const raw = localStorage.getItem(storageKey);
const stats = raw ? JSON.parse(raw) : {};
// 解码标签并统计
const decodedTags = tags.map(tag => decodeHtmlEntities(tag));
decodedTags.forEach(tag => {
stats[tag] = (stats[tag] || 0) + 1;
});
localStorage.setItem(storageKey, JSON.stringify(stats));
localStorage.setItem(lastWatchedKey, JSON.stringify(decodedTags));
},
// 点击统计
hitVideoId(id) {
fetch(`/api/qun/hit?type=play&id=${id}`, {
method: 'GET',
headers: {
'x-data-key': this.dataKey,
'x-api-key': 'dagexxx.com'
}
}).catch(err => {
console.error('点击统计失败:', err);
});
},
// Cookie 工具方法
getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
},
setCookie(name, value, days) {
const expires = new Date(Date.now() + days * 864e5).toUTCString();
document.cookie = `${name}=${value}; expires=${expires}; path=/`;
}
};
}