Chín cô gái hàng xóm ở các độ tuổi và nghề nghiệp khác nhau lại có sự dâm đãng đáng ngạc nhiên trong đời sống tình dục của họ.","lastmod":"2026-07-11","duration":"19:29","url":"/play/19162816.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MDgvODIyOTMxNGI3MTVlNmRkOTJhN2ViOTc2MzM1MWM2MDYuanBn.cache","vod_id":19037180,"title":"KSBJ249 Một người vợ xinh đẹp bị ép phải dùng thân xác để trả nợ cho chồng.","lastmod":"2025-06-08","duration":"01:59:41","url":"/play/19037180.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNmY5OTMzYTM3NTY4ZWE5ZGU2M2Q3MTU1ZWY4NGVkZWMuanBn.cache","vod_id":19157374,"title":"Hôn qua khẩu trang là màn dạo đầu tuyệt vời nhất! Tập 2. Khi tôi đến quá gần một người phụ nữ xinh đẹp, tôi gần như không thở nổi, và cô ấy đã để tôi hôn lưỡi cô ấy. DANDY","lastmod":"2026-05-10","duration":"02:46:04","url":"/play/19157374.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzJiYWQwZjEzZGMwNzQyNTRkNjE3NmVhYjkwMTUwODEuanBn.cache","vod_id":18943734,"title":"Một thanh niên đến từ Triều Châu, một chuyên gia về mại dâm đường phố, đã mua một gái mại dâm rất trẻ và đưa cô lên sân thượng để quan hệ tình dục giữa lúc gió lớn.","lastmod":"2025-12-14","duration":"00:23:30","url":"/play/18943734.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjgyYzg1MDJiNzE0NzVjYTE0M2U4M2JlMDE1M2UyMDUuanBn.cache","vod_id":18972270,"title":"Quan hệ tình dục không an toàn với một cô gái da trắng, ngực hồng và âm hộ sạch sẽ, hồng hào, phụ nữ ở trên, dương vật dài thọc ra thọc vào.","lastmod":"2025-12-14","duration":"02:10:27","url":"/play/18972270.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYmVlMjIzMTlhNTIxNGQ3YWMzNTBlMjUyNDg5OGVjMDUuanBn.cache","vod_id":19154135,"title":"Gương mặt người nổi tiếng trên mạng, nhan sắc quyến rũ, đồ chơi tình dục cao cấp.","lastmod":"2026-04-19","duration":"01:31:02","url":"/play/19154135.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzc2N2Q3MzA2MThkOGJkZDg5YTNmMTI5MjA2OTI0ZGYuanBn.cache","vod_id":18932201,"title":"FC2PPV-1224981 (Mosaic) [Quan hệ tình dục tập thể/Quay phim cá nhân] Vòng ngực 100cm, cỡ H, Ngực lớn","lastmod":"2025-12-14","duration":"01:36:58","url":"/play/18932201.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZWE0NDdmZTlhZWZkMDA3ZjEyMmQ1MmQyNzNiZDYyOTQuanBn.cache","vod_id":19137800,"title":"Ưu đãi độc quyền dành cho thành viên của nhóm riêng cao cấp của chúng tôi - 23 tính năng hấp dẫn.","lastmod":"2026-01-11","duration":"06:58","url":"/play/19137800.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDIyNWU0OTYxNWJjYjNkY2YxMGFlYTczMzk5NTE3NWYuanBn.cache","vod_id":18978340,"title":"FC2PPV 3508919 [Không, đây là video nghiệp dư cá nhân] Nghiêm túc mà nói, xin đừng chia sẻ! Một cô gái Lolita ngây thơ và nhạy cảm thuộc một công ty sản xuất giải trí xuất hiện để tìm kiếm cảm giác mạnh!","lastmod":"2025-03-23","duration":"01:14:49","url":"/play/18978340.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDRkOWQwZmMyMzQ3ZDE5ODc3NWRkNGQ2MTRmOTVkMmQuanBn.cache","vod_id":18954975,"title":"【潇洒红叶】Hai cô bé mới lớn, xinh xắn như bánh bao hấp~ chưa có lông mu~ tát tát ✨✨✨ Những mỹ nhân trẻ, đây là thời điểm hoàn hảo để tàn nhẫn tiêu diệt chúng -003042-954_(mới)","lastmod":"2025-12-14","duration":"01:10:53","url":"/play/18954975.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2UxNGYzNmQ1NTcwOGZiMWIwNGIwYTRiMmY5ZWY1ZjguanBn.cache","vod_id":18957299,"title":"\"Ngôi sao mạng hàng đầu bị vạch trần\" - Một nữ sinh viên quốc tế 23 tuổi xinh đẹp tuyệt trần đeo kính, giống một người nổi tiếng nào đó, tự thỏa mãn, quan hệ tình dục bằng miệng và nuốt tinh dịch (4)","lastmod":"2025-12-14","duration":"00:02:01","url":"/play/18957299.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZDZlYjRhOWZiNGYxYjE5MmJlM2QxNWNjMmU5MjU0YWQuanBn.cache","vod_id":19135059,"title":"Một người phụ nữ ngoài 40 tuổi với bộ ngực lớn, đầy đặn quan hệ tình dục với bạn trai trẻ tuổi của mình.","lastmod":"2025-12-24","duration":"02:04:05","url":"/play/19135059.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTQvNjNjZWRhYTI0N2Y4NjRiYjY3YmM5YTUyMmMyNzQwYTMuanBn.cache","vod_id":19065878,"title":"Một anh chàng vạm vỡ, đẹp trai đã có cuộc ái ân nồng nhiệt trong khách sạn.","lastmod":"2025-12-14","duration":"24:15","url":"/play/19065878.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMjBkZGVhZDYxMDRkNjhlYmZmN2Q4ZGVhZTMwZDc1MWUuanBn.cache","vod_id":19160998,"title":"Tôi đã gặp một cô gái rất xinh với kiểu tóc búi tại một khách sạn để vui chơi.","lastmod":"2026-05-31","duration":"01:21:35","url":"/play/19160998.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjU3N2E0Mjg0ZWU5N2I5YTE4MzM2ZmY3OTFjNzU0NmEuanBn.cache","vod_id":18940218,"title":"DNW-069_A Một nhóm những người đẹp cực kỳ quyến rũ, bị ám ảnh bởi những người đàn ông lớn tuổi.","lastmod":"2025-12-14","duration":"02:13:38","url":"/play/18940218.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvZGFiZmIyNzNmOGQyNDMwNGIxZTVlZTJjNTdiZDI3NGIuanBn.cache","vod_id":19067105,"title":"Hãy để những mỹ nhân siêu ngầu, những kẻ khinh thường và chiều chuộng người lớn, hiểu rõ về hành vi cưỡng hiếp bằng cách thụ tinh kép với dương vật vô song của họ. (Kumo Sakura, Natsuki RKI_685)","lastmod":"2025-12-14","duration":"02:20:47","url":"/play/19067105.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjllOWM5ZjMxNzVkOTBiN2RhM2ZlODgwY2Y4YjJiZDkuanBn.cache","vod_id":18944258,"title":"Vụ rò rỉ ổ cứng đám mây - Cô sinh viên đại học gợi cảm với vòng một 36E sống lén lút với bạn trai, video sex bị rò rỉ sau khi họ chia tay; bề ngoài có vẻ vô hại, nhưng căn nhà của cô ấy lại vô cùng dâm đãng (tiếng Hoa)!","lastmod":"2025-12-14","duration":"00:11:36","url":"/play/18944258.html"}]},
videoTitle: 'Coco Baby, một cô bé xinh xắn, đã dùng một cây sào dài để chụp những bức ảnh thực sự thú vị.',
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=/`;
}
};
}