Vợ của anh trai xinh đẹp Tôi đã phát hiện ra bí mật rất bức bối của chị dâu có vòng ba tuyệt đẹp của tôi, cô ấy đang tìm kiếm một ứng dụng mai mối. Hamasaki Mao, Page Jane","lastmod":"2026-07-11","duration":"02:07:13","url":"/play/19162697.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjQ2OGI4MDE1ODZlNDIwN2MxMzlmODIwOTVkYjliMzcuanBn.cache","vod_id":18992416,"title":"DDHZ-005 Vợ yêu dấu của anh… Anh cảm thấy phấn khích khi thấy em được một chàng trai trẻ ôm ấp và quằn quại trong cơn cực khoái ngay trước mặt anh. Asuka Rin 1","lastmod":"2025-03-23","duration":"01:46:04","url":"/play/18992416.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNTQ4ZDg4ODIxZjRhMTRmNWI1MWY0M2JjNmRkNjUwMjIuanBn.cache","vod_id":19138140,"title":"\"Em không thấy hứng thú với thân thể của tôi sao?\" Cô gia sư Miyako Tsubaki mang thai với một học sinh tuổi teen vì cậu ta coi những lời tán tỉnh của cô là nghiêm túc. Miyako Tsubaki YUJ-042","lastmod":"2026-01-13","duration":"02:02:37","url":"/play/19138140.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzZlOTkzNWQ1MzZmOTRlYTYyMGY2NjhhNmVhNWM4MzcuanBn.cache","vod_id":18968016,"title":"MIST-197 \"Cô gái điếm này có phải là em gái tôi không?\" Khi người anh trai vẫn còn trinh này phát hiện ra em gái mình đang làm việc trong ngành công nghiệp tình dục, anh quyết định tìm kiếm sự giúp đỡ từ cô ấy! Chơi đùa với người em gái đang bối rối của tôi","lastmod":"2025-03-23","duration":"02:43:27","url":"/play/18968016.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMjEvZDUzODY2Mjk1Y2JhMmVmNmM0NzRmYTFmMmNkNmFiYWMuanBn.cache","vod_id":19058962,"title":"Góc nhìn người vợ nghiệp dư sống động, phụ nữ trưởng thành Phần 4: Rò rỉ riêng tư của chú Sukehei. Diễn viên không rõ danh tính SJHD004 bị rò rỉ.","lastmod":"2025-10-20","duration":"04:13:32","url":"/play/19058962.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMWZlNDlhYjYwZGVkMjFhYjJhMDZiNDk0YWM1ZWI2ZTkuanBn.cache","vod_id":19149577,"title":"Chăm sóc khám sức khỏe của Otto-chan: Giáo dục giới tính lệch lạc từ người chú biến thái của cô bé. Giấu kín chuyện này với mẹ, âm đạo non nớt, cạo sạch lông của cô bé chứa đầy tinh dịch trắng sữa. Misaki Oto RE [Face Swap]-959","lastmod":"2026-03-22","duration":"02:12:24","url":"/play/19149577.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjhhYzZhMGFhNzU1ZTljNzYzZDI2YTdhNWIwMjdmYjkuanBn.cache","vod_id":18981838,"title":"FC2PPV 3662771 [Phiên bản chính của Bà mẹ cửa hàng đồ ăn vặt ngực khủng] [kèm phần thưởng 4K] *Giới hạn số lượng 1500pt [Những câu chuyện kỳ lạ/Quan hệ tình dục tập thể] Người phụ nữ đã kết hôn xinh đẹp và ngực khủng","lastmod":"2025-03-23","duration":"00:52:15","url":"/play/18981838.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTc1ZmYxNGQ5M2I3NzJjMWJjNWIxODExNDgwZjcyOWQuanBn.cache","vod_id":18973254,"title":"[Không kiểm duyệt] 348NTR-049 Một người vợ lẳng lơ với vòng một cỡ G không bao giờ bỏ được thói quen ngoại tình. Chúng tôi tìm thấy một cặp đôi gần chùa Senso-ji... hoặc ít nhất là chúng tôi nghĩ vậy, nhưng thực ra họ là một cặp vợ chồng!","lastmod":"2025-03-23","duration":"01:22:17","url":"/play/18973254.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjMyMzY3NGRkMTM1NWZlMDAzNGVhMjJhOWE3NzgxNzEuanBn.cache","vod_id":19016466,"title":"Jelly Media - Người vợ hiếm muộn khao khát có con tìm đến bác sĩ Đông y - Bai Jingjing","lastmod":"2025-03-24","duration":"50:35","url":"/play/19016466.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDY3OTI2YmY1NmRiYzk0MDhjMGIzOTcwOWU2YzNiZjEuanBn.cache","vod_id":18981401,"title":"[Không kiểm duyệt] DLPN-026 \"Tôi hơi tự hào về vòng ba của mình.\" Mizuki (31 tuổi), một người vợ đầy ham muốn, lắc lư vòng ba đầy đặn, gợi cảm của mình, thỏa mãn dục vọng.","lastmod":"2025-03-23","duration":"02:03:33","url":"/play/18981401.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNTA3OGYzMWU2ZmQxYTY3NzlhNzg1NjZhZGY2ZWE4OGUuanBn.cache","vod_id":19141649,"title":"Quan hệ tình dục với vợ nhà hàng xóm. Hai ngày, ba ngày, hai đêm không có vợ. Vợ nhà hàng xóm đến rồi đi lần lượt... câu chuyện về tinh trùng trống rỗng của tôi. Tập 02 HEZ-831","lastmod":"2026-02-05","duration":"02:22:32","url":"/play/19141649.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MTMvYjlhZjJlZjRkODU5MWRjYzc1ZmIzMGNkODM5NWE0NWQuanBn.cache","vod_id":19046670,"title":"OVE Live 20.08.23 | Khách sạn | Váy ôm sát cổ yếm màu đen | Vớ đen và giày cao gót | Tất cả được chụp bằng BB của tôi.","lastmod":"2025-08-12","duration":"56:10","url":"/play/19046670.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzBkZWJmZjU5YTUyNDExMTI2ZGRkZDJlMTJiYjhlMjkuanBn.cache","vod_id":19009867,"title":"MEYD563 Người phụ nữ bước ra từ phòng tập thể dục không có thảm lót là một người vợ hàng xóm xinh đẹp và kiêu hãnh. Tôi đã lợi dụng điểm yếu của anh ta, vì vậy tôi đã ép anh ta quan hệ tình dục và xuất tinh vào trong tôi! Ngay cả khu vực bên ngoài cửa hàng cũng trở thành nô lệ tình dục ngoan ngoãn, Mizumori Midori.","lastmod":"2025-03-24","duration":"01:58:07","url":"/play/19009867.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNWE2Nzc4Y2VjNmQxN2NjZGJiYWVhNjk2NmU2MmE5MDUuanBn.cache","vod_id":18971101,"title":"SW-901 Không sao đâu, miễn là tôi không khỏa thân!? Một nữ sinh tắm ướt trong suốt! Các chị em họ của tôi vẫn tắm chung với nhau dù cơ thể vẫn đang phát triển.","lastmod":"2025-03-23","duration":"03:29:04","url":"/play/18971101.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MTUvMDE2OTZhMjcxOGIzMDhhYzg0NjA4NzQzYTAzMGNiOWMuanBn.cache","vod_id":19043101,"title":"EMBM038 Riku (32 tuổi), người vợ ngoan ngoãn đã phản bội chồng, đến để thực hiện việc này.","lastmod":"2025-07-14","duration":"01:46:20","url":"/play/19043101.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDllZGE3NGU1NmJiOGIyYjM1ZWM5Mjc5NGEwNjI2MmUuanBn.cache","vod_id":19140626,"title":"Xu Huihui, cao 91cm-156cm, là một người vợ hết mực yêu thương chồng. Nếu chồng cô không quan tâm đến cô, người khác sẽ làm điều đó.","lastmod":"2026-01-28","duration":"24:46","url":"/play/19140626.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjljZDk1MTM1ZDg5YTYzYTRiYzBkMjY5MTEyZTUwZmUuanBn.cache","vod_id":18950779,"title":"✿Bạo dâm loạn luân✿ Anh chị em điên cuồng✨ Lần đầu tiên của tôi với em gái vào năm 2023. Vừa học trực tuyến vừa làm chuyện ấy điên cuồng. Thật kích thích, em ấy rên rỉ và lên đỉnh. Trong lúc lên đỉnh, mẹ gọi điện và tôi xuất tinh khắp người mẹ.","lastmod":"2025-12-14","duration":"00:20:48","url":"/play/18950779.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2ZhYWVmMjVjNDNkMjNiZjY5OGYxMWUzNjZmOGNjZmMuanBn.cache","vod_id":18975836,"title":"[Phiên bản chưa cắt] JSN-005 Bà mẹ dâm đãng với kiểu tóc ngắn táo bạo đã cướp mất con trai mình - Reiko Kobayakawa","lastmod":"2025-12-14","duration":"02:08:41","url":"/play/18975836.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzUxZTEyODRhZGYxNmZmM2QyODZjY2JhZTMzYjAxOWEuanBn.cache","vod_id":19025642,"title":"SW604 \"Hãy cùng tắm nào\" Những người anh em họ thất lạc lâu năm của tôi hóa trang thành những con quỷ nhỏ để quyến rũ tôi ◆ Cơ thể tôi đang phát triển nhanh chóng khiến phần dưới cơ thể tôi trở nên cứng và dương vật cương cứng của tôi thực sự muốn được đưa vào âm đạo của tôi.","lastmod":"2025-03-24","duration":"01:36:12","url":"/play/19025642.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTc4ZjRiMGM3NWE5NjEzNGFhYzY5ODNlMGI1Mjg4MzEuanBn.cache","vod_id":18923371,"title":"Khi chồng tôi đang ngủ say -rws_alexis_fawx_kl111216_720p_8000","lastmod":"2025-12-14","duration":"00:48:43","url":"/play/18923371.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmU4ODgzMWM1MmRjMmJmMWI0MTI1MWQ1N2MxY2EzYjguanBn.cache","vod_id":18981110,"title":"FC2PPV 3643837 [Không kiểm duyệt x Quay phim riêng] Một người vợ xinh đẹp ở độ tuổi bốn mươi trông giống Taeki một cách đáng kinh ngạc… độ nhạy cảm của cô ấy đã tăng lên! Độ nhạy cảm tăng gấp đôi.","lastmod":"2025-12-14","duration":"00:47:02","url":"/play/18981110.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYWM4ZTcxZWIyMmZiODgwNTc1NmYwODY4NWM0ZTBmNzkuanBn.cache","vod_id":19014964,"title":"EBOD698 \"Tôi là chuyên gia nữ cao bồi số một thế giới\" Vũ công chuyên nghiệp Rio Matsuda ra mắt độc quyền trên EBODY.","lastmod":"2025-03-24","duration":"02:26:27","url":"/play/19014964.html"}]},
videoTitle: 'ALDN441 Mẹ ơi, mẹ tốt hơn vợ con nhiều...',
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=/`;
}
};
}