Nệm ngọc bích hương vị cực đỉnh - Chất lượng hàng đầu - Quan hệ tình dục không an toàn","lastmod":"2026-07-11","duration":"45:05","url":"/play/19161285.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDE1M2MxMTZkNDRlMjQ0NzU3ZTQwZWIyMTIzYzNlMWUuanBn.cache","vod_id":19007769,"title":"Những cảnh nóng giữa hai người bạn thân rất đẹp và gợi cảm; ngay cả đàn ông xem cũng sẽ muốn xuất tinh.","lastmod":"2025-03-24","duration":"36:00","url":"/play/19007769.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvZDc0YzJhMWY0Zjk0NDc2ZjMyN2IzMDUwMzE3YjI1NWUuanBn.cache","vod_id":19064370,"title":"Cô thu ngân siêu thị Xin Xin Yue'er, với bộ ngực tuyệt đẹp, đã thực hiện một điệu nhảy khiêu gợi trong khi tự thỏa mãn bản thân.","lastmod":"2025-12-14","duration":"27:38","url":"/play/19064370.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MTgvNGM2Mzc0YmVlMThkZDg2YjJlNWQxOTA1Y2RjOWQwN2UuanBn.cache","vod_id":19043407,"title":"FWTR018 \"Mẹ cậu thật quyến rũ!\" Một người mẹ 50 tuổi đã thu hút sự chú ý của bạn con trai mình bằng bộ ngực lớn đầy gợi cảm.","lastmod":"2025-07-17","duration":"01:55:00","url":"/play/19043407.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNWU4YmI3OGVjY2U5NGQ2NzkxYmY2NDdiZjQ2MjhlYmQuanBn.cache","vod_id":18955885,"title":"✿Săn bắn cao cấp✿Quan hệ tình dục bùng nổ với người mẫu và gái gọi hàng đầu▌Những con thú tinh tế▌Bữa tiệc 3 người - Quá kích thích! Chưa bao giờ trải nghiệm thâm nhập kép trước đây! Quá dâm đãng! Người đẹp giá trị cao với khuôn mặt hơi hở hang","lastmod":"2025-03-22","duration":"00:48:52","url":"/play/18955885.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvM2RjOTZiOTBhYmFiOTg1MTMzMGZmNDdlOTljY2Q3MTkuanBn.cache","vod_id":18947421,"title":"Video gốc HD 1080P mới nhất của nữ sinh viên quốc tế gợi cảm, thân hình bốc lửa, 'Xue Gege', đang có màn quan hệ tình dục 3 người đầy đam mê với hai fan nam, bao gồm quan hệ không an toàn, thâm nhập từ phía trước và phía sau, và xuất tinh.","lastmod":"2025-03-22","duration":"00:55:54","url":"/play/18947421.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNzAzYmE0NTQzYWY3OWNmNTQ0ZTdkYWQzZmE4OTVmZTIuanBn.cache","vod_id":19146574,"title":"Bài tập thể dục của một người đẹp da ngăm quyến rũ! Vòng hông 98cm! Thân hình cô ấy vô cùng gợi cảm! Khoe trọn vóc dáng đó trong trang phục khiêu gợi, POW MIBB-067","lastmod":"2026-03-05","duration":"02:05:25","url":"/play/19146574.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNmVkNGMzYjE1M2M5MjdjZTBiMjgxOTNmNGFiMmZjZmIuanBn.cache","vod_id":18973419,"title":"✅Cô gái trẻ ngực khủng✅ Cô gái trẻ ngọt ngào trong chiếc vớ trắng tận hưởng khoái cảm khi được quan hệ tình dục. Toàn thân cô toát lên vẻ trẻ trung năng động. Vóc dáng nhỏ nhắn và những tư thế quan hệ độc đáo tạo nên một trải nghiệm tình dục điên cuồng. Bộ đồng phục thủy thủ gợi cảm, không dùng bao cao su, xuất tinh bên trong.","lastmod":"2025-03-23","duration":"00:13:11","url":"/play/18973419.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODM3MDAxM2M1Yzg4MTljYTFlNWY5MGE0Y2FiYmFjZjQuanBn.cache","vod_id":18965211,"title":"Trinh nữ! Nữ thần thuần khiết~ Màn trình diễn ký túc xá~ [Bai Wei] Siêu thuần khiết~ Của tôi đang đập thình thịch~ ✨✨✨--Không che đậy gì cả, không biết bạn nam nào may mắn được gặp bạn ấy_20220516-183841-465","lastmod":"2025-12-14","duration":"00:16:00","url":"/play/18965211.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWE1OTI0NDQ0NTg0ODg1MzhjMmJhNzhjMmE5MTFkMTEuanBn.cache","vod_id":18963355,"title":"Người sáng lập ban đầu của diễn đàn Haijiao (một diễn đàn trực tuyến của Trung Quốc) chưa bao giờ mơ rằng mình sẽ thực sự chinh phục được trái tim vợ của một người nổi tiếng trên mạng. Điều đáng kinh ngạc hơn nữa là anh ta quyết định không muốn kết hôn nữa và cầu hôn cô ấy để có con với mình.","lastmod":"2025-12-14","duration":"00:05:13","url":"/play/18963355.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZGM2YmU0MmYwODU0ZTFhZGE1MTc0NTYxMDczYmMzMTIuanBn.cache","vod_id":18955983,"title":"Nổi tiếng ✅ Người nổi tiếng trên mạng ✅ Quay phim riêng】Cô phù thủy nhỏ thuần khiết luôn thay đổi 【nụ cười】Xem thêm cảnh quay riêng ~ Quấy rối tình dục và huấn luyện Tử Vi trong đồng phục ~ Tương phản cực độ (3)","lastmod":"2025-12-14","duration":"00:01:28","url":"/play/18955983.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZGU3YmE0MWIyNTExOWE4ZWI5Y2VhMmY3MTRmNjE0NDUuanBn.cache","vod_id":19024193,"title":"JUQ448C Một cậu bé đã tích góp tiền và tinh trùng để đi tắm bồn nước nóng cao cấp. Một tháng sau, cậu ta mất trí và mang thai với một bà quản lý ký túc xá ngực khủng, gợi cảm và dâm đãng.","lastmod":"2025-03-24","duration":"01:58:09","url":"/play/19024193.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2E0NDlkZjA0ZTIwN2Q0NzE1ODM2MGZlNGEyNjhjZmIuanBn.cache","vod_id":18972276,"title":"Hàng hiếm và tinh xảo ✅ Được mua với giá cao. Hãng phim người lớn hàng đầu Trung Quốc 【Water's Edge】3 video quy mô lớn ~ Người mẫu chất lượng cao với cảnh hở mặt, trói buộc, sốc điện, roi vọt, treo người, đạo cụ và dịch tiết âm đạo nhiều. Phiên bản gốc 1.","lastmod":"2025-12-14","duration":"00:32:29","url":"/play/18972276.html"}]},
videoTitle: 'Ngôi sao mạng gợi cảm hàng đầu Mai Shiranui diện bikini màu hồng để cosplay.',
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=/`;
}
};
}