MVSD-681 Một mỹ nhân thiên tài thông minh với chỉ số IQ 78 Một mỹ nhân dâm đãng, khổ dâm với chỉ số IQ 0 Giấc mơ mà một mỹ nhân 20 tuổi luôn khao khát là được học tập","lastmod":"2026-07-11","duration":"02:33:42","url":"/play/19153169.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MjIvY2I4MWUyZWI3N2VlMzYxYmY5ZTBlMjhmYTU0YWU5ZDAuanBn.cache","vod_id":19117651,"title":"#1 Tôi trở thành nô lệ tình dục của anh rể, một cô bé dễ thương phải quan hệ tình dục bằng miệng với một dương vật khổng lồ và nhận đầy tinh dịch của anh ta.","lastmod":"2025-08-22","duration":"08:57","url":"/play/19117651.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MjYvNzZkNTdiN2I2ZmYyYzZlNTNjYzdmZWZiYjBjMWU5MDguanBn.cache","vod_id":19113846,"title":"DAZD-244 Cưỡng hiếp là giáo dục. Tôi sẽ trút từng giọt tinh dịch siêu đậm đặc của mình vào âm đạo non nớt của một cô gái xinh đẹp trong bộ đồng phục học sinh. \"Trúng đích vào tử cung\" tuổi trẻ","lastmod":"2025-07-26","duration":"04:00:49","url":"/play/19113846.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOGU5YmM0MWNmZjNhMGU5ZWM3MTYyYzFjM2NmODNhMDYuanBn.cache","vod_id":18929164,"title":"NNPJ-381 Một cô gái tuổi teen bị xuất tinh sớm và một gã nghiệp dư mê dương vật sẽ có màn \"quậy phá\" trong phim AV đầu tay.","lastmod":"2025-03-19","duration":"02:59:17","url":"/play/18929164.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvY2JiNjI5ZDlhY2I2MTQ2NGZiYTg2NTllYTUyMDU4M2UuanBn.cache","vod_id":18940321,"title":"MDTM-807 [Hoàn toàn mang tính chủ quan] Tuyển tập những khoảnh khắc quyến rũ của các nữ sinh dễ thương trong bộ đồng phục (4 giờ)","lastmod":"2025-03-19","duration":"03:59:51","url":"/play/18940321.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMTAvYjNlZjlkNmQwMjMxYjlhMzQzODYzZjFjZTUxNDlkMDcuanBn.cache","vod_id":19128164,"title":"Nữ thần hổ trắng cô gái mèo hồng","lastmod":"2025-11-10","duration":"12:44","url":"/play/19128164.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjRhYTA4N2FmYzQ4NGJiM2YyZmVjZWQwMzU4OGFiMTkuanBn.cache","vod_id":18942286,"title":"420SEF-001 RIMA (21 tuổi) Nghiệp dư Hoi Hoi · Bạn tình · Góc nhìn POV · Chị gái · Thân hình mảnh mai · Eo thon · Ngực to · Cô gái xinh đẹp","lastmod":"2025-03-19","duration":"01:44:19","url":"/play/18942286.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MTMvNGI4ZDIzNTQ3ZjE5MjY0ZjVhMjQyNDY0OWIyMjEyNGEuanBn.cache","vod_id":19153825,"title":"SIRO-5249 \"Tôi muốn anh làm tôi rối bời...\" Một cô gái nhỏ nhắn, dễ thương xuất hiện! Vẻ gợi cảm tiềm ẩn của cô ấy được giải phóng!? Đã lâu rồi","lastmod":"2026-07-13","duration":"01:04:52","url":"/play/19153825.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMjIvMmFmNDg5NzJhYjQ2ZjA5ZGM1YTAxZGFhNzcxN2IzOWQuanBn.cache","vod_id":19125785,"title":"FC2-2858723 [Ưu đãi đặc biệt chỉ hôm nay] Một tác phẩm gây tranh cãi, miêu tả một cô gái xinh đẹp giống Hori Mina mang thai, trông giống hệt Hori Mina. -cd3","lastmod":"2025-10-22","duration":"25:57","url":"/play/19125785.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODU3MzlhOTJhZjcwMGYwYWJhZmJjNDdjYzc3ZjkwMDcuanBn.cache","vod_id":19066034,"title":"PTS-525 Chuyên viên làm đẹp chuyển giới xinh đẹp hạng S - Đừng nói với mẹ tôi... Massage dầu gợi cảm Eskawa","lastmod":"2025-03-19","duration":"02:44:16","url":"/play/19066034.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNDlkZDAwYjNlZWMzZGQ5NzY3MTE3ZTk0NTk3YjI3YjYuanBn.cache","vod_id":19014089,"title":"OKB-162 Aitsuki Mineri - Vòng ba đầy đặn, quần ống rộng, những cô gái xinh đẹp và quyến rũ trong chiếc quần ống rộng bó sát và đồ tập thể dục, những mỹ nhân nóng bỏng.","lastmod":"2025-03-19","duration":"01:33:37","url":"/play/19014089.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNmVjMmMyMmEwNGVhY2NkYjFlZmY4NWNlN2I3YTY4ODMuanBn.cache","vod_id":19039360,"title":"[Cô gái ăn bám cấp cao] Cô gái da trắng mặc quần jeans tự sướng bằng những lời lẽ tục tĩu.","lastmod":"2025-03-19","duration":"13:58","url":"/play/19039360.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjYxNWI4NWQ1YTBhYzViYzI3NTYzY2QxNDUxMzEyNWYuanBn.cache","vod_id":18996623,"title":"FOCS-192 Gương mặt mới ra mắt: Một cô gái xinh đẹp với thân hình trong suốt và quyến rũ là một y tá. Mọi ham muốn gợi cảm của bạn sẽ được thỏa mãn.","lastmod":"2025-03-19","duration":"02:04:29","url":"/play/18996623.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMmRmYTEwZjM3NjY4NWViOTZkNmVjZTYwYzUwNzY3NmIuanBn.cache","vod_id":19091632,"title":"_Cô gái da trắng, ngực to chất lượng hàng đầu_ Thủ dâm và thúc đẩy bằng dưa chuột trong nhà vệ sinh (1)","lastmod":"2025-03-19","duration":"01:37","url":"/play/19091632.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZWI3MzI5YmRjOTNjM2UyNWYwYTFhNzNhMDEwNWI1ZDAuanBn.cache","vod_id":19090894,"title":"SQTE-586 Dịch tiết tình yêu của một cô gái ngực cỡ H mềm mại cứ tuôn trào không ngừng! Quần của tôi đã ướt sũng trước khi tôi chạm vào anh ấy.","lastmod":"2025-03-19","duration":"02:24:19","url":"/play/19090894.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYzlkZWMxZWViNWI0NjIyNjE2MzMyOTQyODZiZDRmZDguanBn.cache","vod_id":19132885,"title":"#Nổi bật #Selfie Cô gái chanh dễ thương với khuôn mặt trẻ thơ và vòng một lớn 2","lastmod":"2026-02-13","duration":"02:17","url":"/play/19132885.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYTExMmZmODkxYTVlNzEzZDg2NzE5Y2Y5MWE1MzFjMTcuanBn.cache","vod_id":18967193,"title":"200GANA-2966 Tán tỉnh cực dễ, lần đầu tiên. 1999 [Cô gái xinh đẹp trên đường về nhà sau đám cưới] Tán tỉnh một cô gái xinh đẹp, trong sáng và có làn da trắng hồng ở Daikanyama!","lastmod":"2025-03-19","duration":"01:10:33","url":"/play/18967193.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYzg0YzM2OTYwNjBjOTIzMTJmOGM0MjAzNTVmM2MwNWQuanBn.cache","vod_id":18938506,"title":"BLK-411 Những cô nàng mông to người Mỹ! Hậu môn của cô ta mở rộng, và cô ta trở nên cuồng loạn, tử cung bị đập mạnh từ phía sau như một cái pít-tông. Cô ta bất ngờ biến thành siêu anh hùng và xuất hiện trong một bộ phim AV!","lastmod":"2025-03-19","duration":"01:58:33","url":"/play/18938506.html"}]},
videoTitle: 'SONE-217-C Cô gái xinh đẹp huyền thoại, Tamana Mimi, trở lại màn ảnh nhỏ~ Ba kiểu quan hệ tình dục mà tôi thực sự muốn trải nghiệm~',
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=/`;
}
};
}