Tại một vùng nông thôn không có điều hòa, hãy say đắm ân ái nồng nhiệt, đẫm mồ hôi với người yêu thời thơ ấu của bạn. Haruhi Moka, Haruhi Moka, Triple Eichi","lastmod":"2026-07-11","duration":"01:53:22","url":"/play/19166135.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNmE1MzlhOGRiYjIxYjA3NWFlNGU2MzZlYzE1MWUzN2QuanBn.cache","vod_id":19141863,"title":"\"Anh ơi... Em chẳng cảm thấy gì cả...\" Yumi Nijimura, bạn cùng phòng và người sống chung, đã thuê một \"cứu tinh thể\" để có thể quan hệ tình dục tức thì bất cứ lúc nào. (MIAB-583)","lastmod":"2026-02-06","duration":"01:55:53","url":"/play/19141863.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzEwMzQzNmFiNmY3MWYwMDE4ZjQ1YzYzYWM1ODg5MzMuanBn.cache","vod_id":18987556,"title":"[Phụ đề tiếng Trung] MRSS-148 Tôi muốn có con với vợ nhưng chúng tôi không thể thụ thai, vì vậy tôi quyết định nhờ người hiến tinh trùng xuất tinh trực tiếp vào cơ thể mình. Honda Momo","lastmod":"2025-03-23","duration":"01:55:49","url":"/play/18987556.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9hLjE1NTEyMTAudG9wL3VwbG9hZC92b2QvMjAyMjA5MjcvMWFwMDAxMjlwbCAoMSkuanBn.cache","vod_id":19074103,"title":"AP-129 - Đôi môi của một cô gái say xỉn chỉ cách tôi 1 centimet! Tập 10, kể câu chuyện về một cậu bé chưa từng tiếp xúc với phụ nữ trong suốt thời tiểu học, trung học cơ sở và trung học phổ thông.","lastmod":"2025-12-14","duration":"00:20:00","url":"/play/19074103.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvN2NjOWVlZjQ4MTJjMDFiZmViNmE4Y2I2YWEzMGE4YzguanBn.cache","vod_id":18980791,"title":"[Phụ đề tiếng Trung] HMN-426 Mina Kitano và tôi phơi bày những sở thích bệnh hoạn của nhau trong chuyến đi suối nước nóng—không có thời gian nghỉ ngơi...","lastmod":"2025-12-14","duration":"02:00:12","url":"/play/18980791.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZWU5ZDEzNmRlMzMzZTBmY2ZmMjlmYzc0YjUxMDE4MDYuanBn.cache","vod_id":18977026,"title":"[Phiên bản chưa cắt] CAWD-580 Chuyện tình vụng trộm sau giờ học không thể kể cho bạn bè: Quan hệ tình dục nguy hiểm và dâm dục với một ông già biến thái, dâm đãng trong một căn phòng tối tăm và bẩn thỉu - Momo Shiraishi","lastmod":"2025-12-14","duration":"01:56:52","url":"/play/18977026.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTZiYzA2NjZiOTY0NTFhMjk5N2Y5MDA2MTEwMTAyNjEuanBn.cache","vod_id":18991907,"title":"300NTK-182 Vợ chưa đủ tuổi (19) Chỉ có quan hệ tình dục với một người!! Một người phụ nữ đã kết hôn xinh đẹp với sức hấp dẫn giới tính trưởng thành và thân hình tuyệt đẹp ra mắt phim AV lần thứ hai!! \"Tôi chưa bao giờ cảm thấy như thế này trước đây...\" Cô cảm thấy những làn sóng khoái cảm mà những cái vuốt ve thô bạo của người chồng không thể mang lại, và một vẻ mặt ngây thơ hiện lên trên khuôn mặt cô khi cô rên rỉ!! : Ly hôn 071","lastmod":"2025-03-23","duration":"01:18:49","url":"/play/18991907.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvM2JkZmU0ODczZGI5YWVkNWNjZWZjZjljZDMwMmYyZjUuanBn.cache","vod_id":18999822,"title":"Chúng tôi không thể về nhà, chúng tôi cứ tiếp tục ân ái cho đến sáng.","lastmod":"2025-03-23","duration":"02:00:10","url":"/play/18999822.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzRkNDdmMDQ2ZjAwNDFlMzM4Mjc5ZGE0MmI1Y2U2NDkuanBn.cache","vod_id":18982116,"title":"[Phụ đề tiếng Trung] WAAA-290 Cô gái bị nghiện massage tinh dầu, không thể dừng lại! Cô quằn quại, mất kiểm soát bàng quang và la hét trong cơn cực khoái âm đạo không thể kiềm chế! Hiiragi Yuuki","lastmod":"2025-12-14","duration":"01:58:44","url":"/play/18982116.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDhmOGYzOTU5MTExMjAzN2E5MmFiZmY3Mjk3MDdmMTUuanBn.cache","vod_id":18974869,"title":"459TEN-048 [Squirt] [Squirt] [Squirt] Không cần màn dạo đầu rườm rà, hoàn toàn không có màn dạo đầu dính nhớp!! \"Tôi chưa bao giờ thử tư thế doggy đứng trước đây,\" cô ấy nói với tất cả sự quyết tâm.","lastmod":"2025-03-23","duration":"01:58:35","url":"/play/18974869.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjIyODlkZjAyMWM1NTczMmZhNjJjNGVhNDgyZjI5NjYuanBn.cache","vod_id":18990401,"title":"JUL-158 Tôi không thể nói với vợ rằng tôi đã làm mẹ vợ có thai...—Trong chuyến đi suối nước nóng hai ngày một đêm, tôi đã mất kiểm soát và xuất tinh vào trong bà ấy hết lần này đến lần khác. —Kana Mito (Loạn luân)","lastmod":"2025-12-14","duration":"01:57:21","url":"/play/18990401.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjNlZTdmZjNlMTU5ZGM1ZTlkNzZlZDQ1NTMwYTdhYjYuanBn.cache","vod_id":19007878,"title":"Ưu đãi Hỗ trợ Sự sống Mới ☆ 4000pt → 2000pt 【Toranoana Tập 3】Thời Heisei 1◎Sinh ra ←※Lần này cũng nguy hiểm, thông tin không được phép công bố※","lastmod":"2025-03-24","duration":"51:44","url":"/play/19007878.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTI3MDgxMDA1N2I3NjMyYWZiMzFmNzEwYzZjNjczMjYuanBn.cache","vod_id":19010925,"title":"MUDR092 CHINASES SUB Tôi đang tìm chỗ ở tại trại huấn luyện của đội bóng chày, nên tôi không thể về nhà và cuối cùng phải ở chung phòng với cố vấn của mình. Mặc dù tôi có bạn trai, tôi vẫn bị xâm hại tình dục nhiều lần. 望月はなら.","lastmod":"2025-03-24","duration":"02:17:30","url":"/play/19010925.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODMxNjcwNDczYjRhMDgxMmMzMTIwNWQ4NTRjZjEzYWEuanBn.cache","vod_id":18960104,"title":"[Phụ đề tiếng Trung] NACR-613 Một cơn mưa bất chợt làm tôi ướt sũng... Cô giáo Haruna Hana thân yêu của tôi không thể về nhà.","lastmod":"2025-03-22","duration":"01:59:14","url":"/play/18960104.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjZiOGM5ZGE1YWNjZTQ0NDhkNmU0ZDRlMmVhOGM4MzcuanBn.cache","vod_id":19017980,"title":"ABP537 hạn chế quan hệ tình dục, Meixiangka thích thú khi trèo lên người một cô gái xinh đẹp không thể cử động.","lastmod":"2025-03-24","duration":"02:05:53","url":"/play/19017980.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MTAvYmY5MTgxOWNkODg4MzVjYzE3OTEwZDljNDk4ODllZjUuanBn.cache","vod_id":19167454,"title":"\"Tôi không thể làm điều này giữa ban ngày, quá xấu hổ.\" Một người mẹ 50 tuổi không thể cưỡng lại việc quan hệ tình dục bằng miệng trong 4 giờ giữa ban ngày. Mellow Moon (メロウムーン)","lastmod":"2026-07-11","duration":"04:05:22","url":"/play/19167454.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNmNlYjQwODA1MTY5NjZhNTAzYjM3YjFiZWY0NDlhZjUuanBn.cache","vod_id":18960432,"title":"VRTM-322 Một người vợ, vừa mới sinh con và lo lắng về vóc dáng, đang mặc áo ngực thể thao; ngực cô ấy đầy đặn. Vì đã lâu không quan hệ tình dục, cô ấy cực kỳ nhạy cảm với bất kỳ sự đụng chạm nào. Người phụ nữ trước mặt tôi là 2018-01-12 Izumi Nono, Tsukada Shiori, Kitagawa Erika, Nami, Tano Yui, Cô gái hạng 4, Yu, 046","lastmod":"2025-12-14","duration":"02:42:07","url":"/play/18960432.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYmI5M2Y4NjU3YjQ0ZjM5NmRlYjUzZTM5YmI3MjhlNWUuanBn.cache","vod_id":19150800,"title":"Hầu như không có kinh nghiệm đổ lỗi ## Cô gái nghiệp dư siêu ngây thơ và chàng trai M ở một mình trong phòng bí mật ww \"Xuất tinh nhanh ### Nhưng không thể xuất tinh nếu không được phép SKMJ-711","lastmod":"2026-03-30","duration":"03:29:17","url":"/play/19150800.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYzE1NmRhZWE5M2MyZGJlMTc4NjA4ZjI3ZDE1YzFiYmUuanBn.cache","vod_id":19154419,"title":"\"Ngày xửa ngày xưa, trong lớp tôi có một cô gái cao ráo, vạm vỡ với vòng một lớn và thân hình của một vận động viên bơi lội. Cô ấy thuộc kiểu người bình thường, và tôi không thể nói với cô ấy...\"","lastmod":"2026-04-21","duration":"02:01:13","url":"/play/19154419.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMGNlMThiNjU3YjM1OTU5YTZkZTc0YzEyZTc5YjdjZDAuanBn.cache","vod_id":18944306,"title":"RTP-026 Bạn bè của chị gái tôi đang ở nhà tôi thì trời đột nhiên đổ mưa, và không ai trong số họ mang theo ô.","lastmod":"2025-03-22","duration":"01:55:27","url":"/play/18944306.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MjYvYTJlYTk3MTFiNjVmZTE1ZGNhZWQyN2NlY2RjZjljNjUuanBn.cache","vod_id":19054169,"title":"Bạn gái của bạn thân tôi không muốn bạn trai cô ấy biết, mặc dù cô ấy chưa hề đụng chạm hay làm bất cứ điều gì với anh ta, nên cô ấy vẫn để anh ta quan hệ tình dục với mình. (Aizawa Miyu HSODA056)","lastmod":"2025-09-25","duration":"02:50:08","url":"/play/19054169.html"}]},
videoTitle: 'Khu vực 3D không thể tồn tại nếu thiếu Tifa, cũng như phương Tây không thể tồn tại nếu thiếu Jerusalem.',
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=/`;
}
};
}