Lần đầu tiên cởi bỏ mặt nạ, lần đầu tiên quay phim, đầy rẫy lý do ngoại tình, 10 người phụ nữ trưởng thành xinh đẹp, không dùng bao cao su, xuất tinh ~Tuyển chọn từ một trang web phát video trực tuyến nổi tiếng~ Edo-EDO","lastmod":"2026-07-11","duration":"03:59:58","url":"/play/19166624.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZDQwOTU0ZjBiMWI4MmI1MDIzMDMwZWM0MGIzODhhNmUuanBn.cache","vod_id":19147675,"title":"Cửa hàng massage tăng kích thích núm vú và nâng ngực. (Đây dường như là một chuỗi ký tự và cụm từ vô nghĩa, có thể là kết quả của lỗi nhận dạng ký tự quang học. Bản dịch trực tiếp sẽ không có ý nghĩa.)","lastmod":"2026-03-11","duration":"02:02:46","url":"/play/19147675.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MDcvMjA4ZDFjMTEyYzZjYjgzNWU3ODViMjYwNDkxMmJhNWQuanBn.cache","vod_id":19028270,"title":"Nữ thần ngực khủng Yo●Tu●e●, người vừa được gỡ lệnh cấm, lần đầu tiên quan hệ tình dục trước ống kính. Hẹn gặp lại ngày mai, MIDV-249-C tương lai.","lastmod":"2025-04-07","duration":"02:37:11","url":"/play/19028270.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MDcvNmYzNzVkOTI0NDljZTgwMDNmZjU1YmJkMjUyNTQzNGUuanBn.cache","vod_id":19166890,"title":"Sau giờ học Cô gái xinh đẹp H Xuất tinh tức thì Ngực khủng Cỡ G! Đắm chìm trong âm thanh anime ngây thơ Cực khoái! Ngực khủng, Miku Arima, Orola Project Annex","lastmod":"2026-07-11","duration":"02:28:13","url":"/play/19166890.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTNlNmE4OGNmZDBmNmJhNmRmYjhmMDA5ZGU2ZGI5MzQuanBn.cache","vod_id":18944144,"title":"300MIUM-555 [Cực khoái với vòng một khủng!] Cô nàng JD quyến rũ và gợi cảm, sở hữu vòng một cỡ G khổng lồ.","lastmod":"2025-12-14","duration":"01:18:50","url":"/play/18944144.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTFkYWIzZDkzNTYyMDEwNWRkMWM0ZTVmMWUzNDQ4YmIuanBn.cache","vod_id":19006028,"title":"[HD tiếng Trung] Quan hệ tình dục thâm nhập và xuyên thấu, chồng ngoại tình, vợ bị cưỡng hiếp tập thể.","lastmod":"2025-03-24","duration":"02:05:16","url":"/play/19006028.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MjkvNjkxNjkwY2RmYTJlNTgxMWU2YTNlOTlhYmI4MTE0ZjYuanBn.cache","vod_id":19040596,"title":"MIAB482 Ngôi làng đang trên bờ vực bị bỏ hoang vì tỷ lệ sinh thấp...!? Thực tế, khi cô ấy cởi bỏ quần áo, bộ ngực cỡ G tuyệt vời của cô ấy quyến rũ tất cả đàn ông trong làng! Vào ngày rụng trứng, cô ấy chỉ là một cô gái làng quê bình thường.","lastmod":"2025-06-28","duration":"02:01:41","url":"/play/19040596.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjlmNjhkOTYzYmVlNTU2Mjg2NDI5OTJjN2QwODQ4ZDcuanBn.cache","vod_id":19004873,"title":"Liệu dục vọng có thể đánh bại tình bạn? Các cặp đôi trải nghiệm những tiếp xúc thân mật: massage dầu và quan hệ tình dục vùng kín! ...","lastmod":"2025-03-23","duration":"02:32:05","url":"/play/19004873.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvOTE0YThlODFhZTQ5ZjhjZjU1NTg2YTBkZjAxMWI0NzMuanBn.cache","vod_id":19149171,"title":"MILKJunkieSisters Tập 4 (Có phụ đề tiếng Trung)","lastmod":"2026-03-19","duration":"30:02","url":"/play/19149171.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWFlMDdlZWMxZTQwMmUwZTkxY2FlOThjMDc1NzVhNGEuanBn.cache","vod_id":18992932,"title":"KBI-014 Cô giáo năng động Natsume Sayuri, 37 tuổi, Ngoại tình của người phụ nữ đã kết hôn tại suối nước nóng 1","lastmod":"2025-12-14","duration":"02:59:59","url":"/play/18992932.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMDYvOWExODE3ZDc3NTQ1NGJkM2JhNjRiYzJkMDMzODEyMTEuanBn.cache","vod_id":19056378,"title":"[Tiếng Trung] URE119 lượt tải xuống vượt mốc 100.000!! Phá kỷ lục!! 5 cảnh sex đồi trụy!! Tác phẩm gốc: *Bad End Dreamer*","lastmod":"2025-10-05","duration":"03:06:11","url":"/play/19056378.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOGZmMzM3ZDg1YzljMDA0ZmY5MTg4NDMwZmQwMDYyZGUuanBn.cache","vod_id":19013049,"title":"KBI026 có mối quan hệ bất chính kéo dài vô tận với một nữ y tá xinh đẹp, dẫn đến việc thụ tinh trong hai ngày liên tiếp. Anh ta cũng quan hệ tình dục với Kanzaki Mai 20 lần liên tiếp (loạn luân).","lastmod":"2025-03-24","duration":"03:04:18","url":"/play/19013049.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTJkMjFmOTFlNzU3NDE5Yzc1YTMyNmIwM2I5YmVhNmMuanBn.cache","vod_id":18948185,"title":"HND-090 Này? Cùng nhau \"làm chuyện ấy\" ở trường nhé, Nanase Otoha!","lastmod":"2025-03-22","duration":"01:57:32","url":"/play/18948185.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNGE1YzMzZjNiMThjODljNzJmM2YwODM4MTM4NDlhMWMuanBn.cache","vod_id":19006300,"title":"Mát-xa thủ dâm của Yang Ying (Angelababy)","lastmod":"2025-03-24","duration":"08:30","url":"/play/19006300.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODVhMzcyY2E4ZTE0MmMwNWYzYTIyNTM4OGM3ZjJiMzIuanBn.cache","vod_id":19013090,"title":"300NTK288 Riisa, người vợ xinh đẹp của một quan chức chính phủ cấp cao bận rộn!! Bộ ngực cỡ F tuyệt đẹp, đầy đặn!! Cực khoái mãnh liệt và xuất tinh! ...","lastmod":"2025-03-24","duration":"01:06:38","url":"/play/19013090.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZWU0ODYyMmYwYTA2NWM3ZTI4YjJkNzU5N2Q2ZDRmZjMuanBn.cache","vod_id":18936283,"title":"[Phụ đề tiếng Trung] HOKS-043 Tôi đã thấy! Con gái hư hỏng của con gái tôi, Kana Amatsuki","lastmod":"2025-03-22","duration":"01:20:22","url":"/play/18936283.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMTQvZDMyMjZlZDU3Mzk1MzRmMTg2NGQzZmNkZjBkNmJhM2EuanBn.cache","vod_id":19062519,"title":"Mông Nhỏ Chưa Sử Dụng, Lòng Thương Xót, Xuất Tinh, Thụt Rửa Hậu Môn, Xịt Xịt & Xâm Nhập Kép để Mở Rộng và Khiến Nàng La Lên Trời! Vẻ Đẹp Hậu Môn Haruka Ikeuchi Haruka FSBK_001","lastmod":"2025-12-14","duration":"02:19:05","url":"/play/19062519.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTE5MGMwNzdhNTcyYjVjM2E4MWM4ZjAwMjk3MDlmMjYuanBn.cache","vod_id":18972534,"title":"FANH-156 Luka-chan, một cô gái lẳng lơ 20 tuổi sinh ra ở Okinawa. Một nữ sinh viên đại học da nâu tự nhiên, thân hình đầy đặn, đang quan hệ tình dục bằng cách cọ xát niêm mạc. Một nữ sinh năm hai da ngăm đen mặc đồng phục có tinh dịch trắng sữa bên trong âm đạo. Quan hệ tay ba với xuất tinh bên trong.","lastmod":"2025-03-23","duration":"01:55:07","url":"/play/18972534.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MjAvZGUwMTViZDUyZjI3MTAyMGMyODdkNmJlMTU3OWI0YzMuanBn.cache","vod_id":19039218,"title":"CAWD828 là một cựu thần tượng underground, người đã dành cả tuổi trẻ của mình cho ca hát và nhảy múa, và khao khát được đến với thế giới bên kia thông qua một sự kiện giao lưu dành cho thần tượng.","lastmod":"2025-06-20","duration":"02:54:30","url":"/play/19039218.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTZlYjNkMmM5YjdlMWQ0ZTFiYWFjNjZlZTc3YWUzYWIuanBn.cache","vod_id":18963340,"title":"91 Hookup Guru CDN8089 Căn hộ riêng: Một nữ tiếp viên hàng không xinh đẹp, vừa tan ca, đã bị tấn công dã man trên giường mà chưa kịp thay đồng phục. Họ quan hệ tình dục mãnh liệt, khuôn mặt cô hoàn toàn trần trụi, và hắn ta xuất tinh vào bên trong cô.","lastmod":"2025-03-22","duration":"00:28:23","url":"/play/18963340.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MDcvN2FhNGZkZDUwNGNjNjcyMmMzOTA3NzU3Nzg0NmUyZWQuanBn.cache","vod_id":19041816,"title":"Carib-081723-001-FHD-180 phút thâm nhập liên tục ~ Cảm giác tê tê không thể cưỡng lại! Xuất tinh liên tục vào âm đạo nổi tiếng khao khát khoái lạc! ~Phần 1~ Rion","lastmod":"2025-07-06","duration":"01:33:40","url":"/play/19041816.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MjIvN2VhZmJhMDU1Y2MyNzM2Y2FjODNiODYxNDZlNzVmYTUuanBn.cache","vod_id":19034657,"title":"EBWH011 Phòng Homecoming Comiket NTR Khách sạn tình yêu Cho thuê đóng vai Mặc trang phục cô gái thỏ ngược, Bị bạn tấn công và ngoại tình, và xuất tinh","lastmod":"2025-05-22","duration":"02:26:09","url":"/play/19034657.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvY2RhYzA4ODc0NWI2ZTRjNTdjYTM1YjI3N2VmMGE5MzYuanBn.cache","vod_id":19143849,"title":"Chuyến đi cắm trại ba ngày hai đêm; cuộc họp làng; vợ bị nhiều người đàn ông lớn tuổi xâm hại tình dục; NSFS-426","lastmod":"2026-02-17","duration":"02:19:43","url":"/play/19143849.html"}]},
videoTitle: '[Phụ đề tiếng Trung] HODV-21416 Bộ ngực cỡ F quyến rũ được trẻ hóa tại tiệm massage',
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=/`;
}
};
}