[Trao đổi khuôn mặt] Những cảnh nóng kín đáo của Christina Hendrix...","lastmod":"2026-07-11","duration":"10:26","url":"/play/19164546.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MDUvOTkxNmJkNzk1NDUxMTg1NDQwMDQ1MDNkYjg4ZDZjNjguanBn.cache","vod_id":19051011,"title":"Trò chuyện với các nữ sinh viên đại học đến từ Đại học Waseda","lastmod":"2025-09-04","duration":"38:45","url":"/play/19051011.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjhjZTdmYWJiOGE2OGRkZWNhMDc1YzQ0YmQ0ZTMwNDkuanBn.cache","vod_id":19004911,"title":"IENF-286-C sở hữu ống kính camera hoàn toàn ẩn với các tùy chọn được che giấu. Xuất tinh không giới hạn và thâm nhập trần trụi từ một chuyên viên làm đẹp nam thần thánh hiếm có và khó đặt lịch.","lastmod":"2025-03-23","duration":"02:18:10","url":"/play/19004911.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZWFlZDBmN2U0ZTE5Y2Y3ZDJlMThlYWVlYTZhOTU1OGQuanBn.cache","vod_id":18940725,"title":"FC2PPV-1254817 Aika, 19 tuổi, cực kỳ nổi tiếng! Quan hệ tình dục trong karaoke với một cô gái xinh đẹp sở hữu vòng một cỡ G và nhan sắc chuẩn thần tượng!","lastmod":"2025-03-22","duration":"00:33:14","url":"/play/18940725.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODVhNGE3NmJiMjk2YWE0Yjk2YTIwYzU2NjUxZjNhZTguanBn.cache","vod_id":18940975,"title":"[Phụ đề tiếng Trung] SSNI-625 Chào mừng đến với căn hộ nhà thổ hạng sang cỡ J - Jun Kagaya","lastmod":"2025-12-14","duration":"02:32:12","url":"/play/18940975.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvM2M1Yjk0ZTllNTY0NzVhZjUyYzdiOWM0YTIyNzFkNjkuanBn.cache","vod_id":18993981,"title":"SHM-013 Nhật ký quay phim cá nhân của cô gái nghiệp dư: Yuka-chan, thần tượng ngầm cực kỳ nghèo, ngực phẳng, cỡ B, Shirai Yuka 1","lastmod":"2025-12-14","duration":"01:31:02","url":"/play/18993981.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNmIwYjI5MDIzODYyOGZlMDJiNjJlMTNjNzQwM2MyMTUuanBn.cache","vod_id":18954546,"title":"WANZ-850 Nếu bạn có thể chịu đựng được kỹ năng tuyệt vời của Eimi Fukada, bạn sẽ được trải nghiệm tình dục trần trụi, đầy khoái cảm!","lastmod":"2025-12-14","duration":"01:37:25","url":"/play/18954546.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMGFlMzBkZjZiNTY5OTQwZjYwZGI2NmQ1MjM2OWQ4NWEuanBn.cache","vod_id":18989098,"title":"326PIZ-009 Hơn XX lần cực khoái!? Một nữ sinh trung học đạt cực khoái nhờ tư thế cưỡi ngựa và liếm láp liên tục, đến mức vùng kín đã cạo sạch lông của cô bị tê liệt.☆ Một cô gái xinh đẹp ngây thơ không thể từ chối đã bị xâm hại tình dục mà không được sự cho phép, haha.","lastmod":"2025-03-23","duration":"44:52","url":"/play/18989098.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MTQvOWM3Y2I2NDE0NmY1ZjdiMTRkN2Q5NjI0ZThmYzFkOGUuanBn.cache","vod_id":19029074,"title":"Thụ tinh nhân tạo cho một nữ sinh da trắng, mịn màng.","lastmod":"2025-04-13","duration":"11:18","url":"/play/19029074.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjMxZTI5NzQ5YTRjMjQ3NGVlYTZhNDIyOWZmZGY5MTcuanBn.cache","vod_id":18957657,"title":"\"Những bức ảnh riêng tư của một cô gái gợi cảm bị rò rỉ bí mật - Phần 2\" - Nữ sinh ngây thơ [Yoona] quay nhiều video khiêu dâm để bán kiếm tiền - Khỏa thân nơi công cộng và bãi đậu xe, các hoạt động tình dục bùng nổ (2)","lastmod":"2025-03-22","duration":"00:05:41","url":"/play/18957657.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNGM0OWNkZjVkMjJmMDg1MDMzODM3Zjc1MWMxZmYxYWIuanBn.cache","vod_id":18979279,"title":"FC2PPV 3582425 Một bộ phim không thể bỏ lỡ dành cho những fan của các cô gái ngực khủng, mặt gấu trúc! Cô ấy thích bị tấn công... Cô ấy dễ thương như một thần tượng! Lần đầu tiên Gen○ ngực cỡ F được xuất tinh vào bên trong!","lastmod":"2025-03-23","duration":"01:08:13","url":"/play/18979279.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNGVjNWJiNGU0NGIzMThhN2Q4OTk2NjRhYmQxMzUyOTQuanBn.cache","vod_id":18975381,"title":"393OTIM-259 Nữ sinh thuần khiết và ngây thơ trong bộ đồng phục và những cuộc tình bất tận Ruri","lastmod":"2025-12-14","duration":"01:20:49","url":"/play/18975381.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly8xNTI2MDMwOXAudG9wLzIwMjYwMzE1L2RURnY2SVBhLzEuanBn.cache","vod_id":19148614,"title":"Mofos - Cảnh nóng trong khách sạn với Jasmine [MOFOS]","lastmod":"2026-03-16","duration":"08:00","url":"/play/19148614.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTNhNjVjZDFlYWZkYzhkNGI1MzI1ZThiYjNkNDQ0NmQuanBn.cache","vod_id":18956422,"title":"Người phụ nữ cao ráo, xinh đẹp, chúng ta hãy duỗi người một chút trước, rồi đổi tư thế. Tôi thích nhất những cậu em trai ngoan ngoãn. Cứ thư giãn như thế này đã. Tôi sắp xuất tinh rồi. Đừng nói thế, tôi vẫn chưa đủ. Đây là lần đầu tiên tôi trải nghiệm việc phá trinh em trai mình.","lastmod":"2025-03-22","duration":"00:07:10","url":"/play/18956422.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDcxNDFlOTdkYjI3MTg4YWQ0OWE5OWM1Y2E2MzU1OTIuanBn.cache","vod_id":18935611,"title":"MDBK-088_A: 30 Buổi Quan Hệ Tình Dục Liên Tiếp Với Bánh Kem Cùng Một Nữ Sinh Hiện Đại!! Phần 1","lastmod":"2025-12-14","duration":"02:01:02","url":"/play/18935611.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MDkvN2EyNTIxZTg1ZGFjNDdiYTUzZmU3Mjc4ZmIzMDU2YzguanBn.cache","vod_id":19042136,"title":"XMOM086 Một người phụ nữ đã kết hôn có hành vi quan hệ tình dục đáng xấu hổ vào ban ngày","lastmod":"2025-07-08","duration":"01:56:17","url":"/play/19042136.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvZTBjNmQ0ZDZjMDhiMjJjNzIxZTQ3ZDkyMDk2MTgwODMuanBn.cache","vod_id":19158935,"title":"Người bạn đời thứ hai, giấu kín chuyện này với người bạn đời thứ hai của mình, đã ngoại tình với người khác; chuyện tình dục khiến anh ta nghiện đến mức không thể dừng lại... (Aoi Yurika, JET Image)","lastmod":"2026-05-19","duration":"02:00:34","url":"/play/19158935.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvM2E5MDFiYjgxOGMxMzdkNmIzZDM0N2FlODZkZjMwOGEuanBn.cache","vod_id":19003334,"title":"[Không kiểm duyệt] Một bữa tiệc trong mơ với những người đẹp ngực khủng, các tiểu thư thượng lưu và cô Meng Aixiu xinh đẹp! Một thiên đường của tình dục tay ba, nơi bộ não sẽ không bao giờ phạm sai lầm!!","lastmod":"2025-03-23","duration":"56:18","url":"/play/19003334.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MzAvMWI2NTFkNzA2ZjMzMDQxOGYzMWVkNTBhNmFhZWQ3MTkuanBn.cache","vod_id":19044709,"title":"MADV585 [4K] Nữ sinh tài năng và xinh đẹp nhất trường, mặc đồng phục thể thao vi phạm nội quy trường, bị tiếp cận... và sau đó bị xâm hại tình dục nhiều lần.","lastmod":"2025-07-29","duration":"02:08:04","url":"/play/19044709.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTE5NTZmNjZkNjQ3Zjk5NTZmNTUyNDZiYzI5NGM3YjEuanBn.cache","vod_id":18933272,"title":"KBI-026 Hai ngày quan hệ tình dục với cô y tá xinh đẹp","lastmod":"2025-12-14","duration":"03:04:18","url":"/play/18933272.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMmIwODY1YmIzNTQ2ZjgwOGRlMzY1NDg3NTg5MzdjMjEuanBn.cache","vod_id":18958820,"title":"MIGD-731 Các nữ sinh viên thích được xuất tinh sâu bên trong âm đạo! Shiina Sora","lastmod":"2025-03-22","duration":"02:38:10","url":"/play/18958820.html"}]},
videoTitle: '324SRTD-0151 Một nữ sinh cỡ F hét lên thật to! Quan hệ tình dục nguyên thủy! Cô ấy thậm chí còn cảm ơn tôi vì đã xuất tinh vào trong cô ấy, haha.',
language: 'vi',
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('Đã sao chép liên kết!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Đã sao chép liên kết!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Đã sao chép liên kết!');
}
}
},
// 切换布局
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=/`;
}
};
}