Sâu bên trong âm đạo của vợ, thỏa mãn với sự xuất tinh không kiềm chế. 浜辺淞帆 KANBi","lastmod":"2026-07-11","duration":"01:37:15","url":"/play/19163544.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjE2NTFkODkxODJlMWNmY2E5MTI3MDllYWE3ZGIzN2UuanBn.cache","vod_id":19005035,"title":"JJDD-010-C Khi một cậu bé có hành vi quấy rối tình dục, một người quản gia trung niên không thể từ chối. 10 Thiện chí","lastmod":"2025-03-23","duration":"02:07:03","url":"/play/19005035.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTNmNWI0YzYyODZkOTA2ZWIzZjMxOTQzNmNhYzhkYjguanBn.cache","vod_id":18993502,"title":"FC2PPV-1245649 [Quay phim riêng] ♀190 Người mẫu Ri◯-chan 21 tuổi, lần thứ 9, cô gái thỏ chất lượng cao nhất, vùng kín được cạo sạch và không dùng bao cao su, tràn ngập tinh dịch của người đàn ông trung niên trong cảnh xuất tinh thật!","lastmod":"2025-03-23","duration":"01:08:22","url":"/play/18993502.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMzIxYjIxZDBlYzE1MzgwMjBkODIwZDcyMGIzZGQ4YjAuanBn.cache","vod_id":19152615,"title":"Giữa những chuyển động mạnh mẽ của người phụ nữ đã kết hôn, người đầy mồ hôi, tôi đã xuất tinh mà không cần cử động hông. JUR-659","lastmod":"2026-04-10","duration":"01:59:52","url":"/play/19152615.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvNDg5ZmUyOTkwMjJhZDY5MzVjZThlYmE4Yjk2NWUwZWYuanBn.cache","vod_id":19160483,"title":"\"Mặc dù tôi có một cô gái tôi thích...\" (Câu sau là một câu riêng biệt, không liên quan: \"Một kẻ hiếp dâm bị một cô gái nổi loạn, gợi cảm làm cho đạt cực khoái nhiều lần. Diễn viên chính: Nagisa Mitsuki, Fukada Eimi, Kururugi Aoi, v.v. kira☆kira\")","lastmod":"2026-05-28","duration":"04:00:59","url":"/play/19160483.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZGEyZTgyNzgzZjQzNTJhY2YwMTg0YzExOTUxYmYwYjIuanBn.cache","vod_id":18988763,"title":"EKDV-581 Xuất tinh liên tục như lợn mà không cần rút ra... Đâm mạnh không ngừng!! Quan hệ tình dục co giật tột độ!! Kase Nanaho.","lastmod":"2025-12-14","duration":"01:55:58","url":"/play/18988763.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMDMvYThhNDZkNzZmZThhMzU1ZjFhZWJhYTc4YmYyM2UyMzkuanBn.cache","vod_id":19055779,"title":"Cô gái mặt tròn, 18 tuổi, xinh đẹp với mái tóc dựng đứng, thành viên câu lạc bộ điền kinh, Nagano Suzu, Nagano Suzu, PKPD338","lastmod":"2025-10-02","duration":"02:06:04","url":"/play/19055779.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2YzMzczMWYyZTlkNzYzMGMwNjNlYTU4YzM3ZDg3NmMuanBn.cache","vod_id":18980880,"title":"KSBJ-240 Vì cô ấy là phụ nữ trưởng thành, nên quan hệ thâm nhập cũng được! ? 12 người","lastmod":"2025-03-23","duration":"04:00:55","url":"/play/18980880.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWY2NTZkYjlkZDczZmE0NGI0ODVmMzA2NWRkNDA4MzMuanBn.cache","vod_id":18969447,"title":"531HFC-007 Một cậu bé cao 153cm tên là \"Amber\" trở về nhà bố mẹ và tham gia vào một trò chơi đồng tính nữ cấm kỵ với mẹ mình, kết thúc bằng việc bà xuất tinh vào bên trong cậu! (Matsumine, Kouhaku, Shimazaki Kasumi)","lastmod":"2025-03-23","duration":"00:38:46","url":"/play/18969447.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYWY1OGViMjc2YmM5YWU2MDk5MjJiNmQzMDc0NWVhMmMuanBn.cache","vod_id":19023569,"title":"IPZZ069C Siêu đỉnh SPLcup với bộ ngực khủng đung đưa và lên đỉnh một cách ích kỷ. Nếu anh làm em lên đỉnh, em sẽ làm anh lên đỉnh.","lastmod":"2025-03-24","duration":"01:56:52","url":"/play/19023569.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvOWE5M2RlYjQ4YjkwNjExZTVkYjdhZDQ0OTY5NDRiMmQuanBn.cache","vod_id":19149338,"title":"MIDV-646-C Lưng cong, phát ra tiếng lách tách! 310 lần cực khoái, 5200 cơn co thắt, 22000 ml tinh dịch, cực khoái đặc biệt, kiêng cữ.","lastmod":"2026-03-20","duration":"02:32:23","url":"/play/19149338.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZWEzZjA0MmJkMGEzMzhhZTI4MGIzMGQyN2ZlOGU0OTYuanBn.cache","vod_id":18975475,"title":"BBAN-300 Hot Spring Inn, Đồng tính nữ, Cặp đôi, Du lịch, Nô lệ, Sự thống trị, Kana Hino, Miki Haruhara","lastmod":"2025-03-23","duration":"02:46:19","url":"/play/18975475.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNGNhZGExMzZiN2RhODRhMjI2NTUxNDc0MDU2M2JlMTEuanBn.cache","vod_id":19145730,"title":"Để vợ tôi thừa nhận tình yêu của tôi, tôi đã bắt cô ấy ở một mình ba tiếng đồng hồ với gã thanh niên lăng nhăng đó… Câu chuyện NTR của tôi: Đánh cắp trái tim vợ bằng 16 lần xuất tinh liên tiếp. JUR-525","lastmod":"2026-02-28","duration":"02:24:07","url":"/play/19145730.html"}]},
videoTitle: 'KBI-030 Thụ thai, Ngoại tình, Suối nước nóng [Cực khoái liên tục] Xuất tinh trọn vẹn Chuyến đi 2 ngày - Aina Shinkawa',
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=/`;
}
};
}