Ảnh riêng tư bị rò rỉ: Hamburger không ngon bằng dương vật, con điếm dâm đãng thậm chí không quan tâm đến việc ăn hamburger, khóc lóc đòi dương vật của bố để được quan hệ","lastmod":"2026-07-11","duration":"","url":"/play/19267161.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMDMxZjJiMzI0NjU2NWE0YWM4NjRhY2ZmM2E0MGFkOWMuanBn.cache","vod_id":19101090,"title":"IPX-295 Trong 3 ngày bạn gái tôi đi vắng, tôi đã ngủ với cô bạn người mẫu ngực khủng của cô ấy, Mia Masaka.","lastmod":"2025-03-29","duration":"2:25:56","url":"/play/19101090.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMGZiZWFmMjIzMzM1MDc1NzQ2YWIxNWVlOTkxNTU1MjMuanBn.cache","vod_id":19260761,"title":"Cô gái vô cùng xinh đẹp, quan hệ tình dục không an toàn dẫn đến 7 đứa con, 300 điểm, Ngôi sao đầu tiên","lastmod":"2026-05-27","duration":"5:02:48","url":"/play/19260761.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYWMyNzgxYzMwOTYzMjA1NjQzODc1OGZjODVmZWQ3ZjQuanBn.cache","vod_id":19137846,"title":"Con gái riêng của tôi, sinh ra từ cuộc hôn nhân thứ hai, ngây thơ điều khiển việc xuất tinh của tôi và làm cho tôi cương cứng. \"Nếu con có thể cưỡng lại việc quan hệ tình dục với mẹ, mẹ sẽ cho phép con xuất tinh!\"","lastmod":"2025-03-29","duration":"2:20:00","url":"/play/19137846.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMDhhNDdjMjI0Y2EyMTY0NjQ3ZWQ1MTE2ZWFmYWMwZmYuanBn.cache","vod_id":19166721,"title":"Anh ta tán tỉnh vợ của bạn mình!","lastmod":"2025-03-30","duration":"0:24:45","url":"/play/19166721.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MDIvODBmYTQ3MWNiNGJiNzI4Zjc4ODViYTFiNjUxY2YwNjguanBn.cache","vod_id":19195434,"title":"CHRV076 Cao ráo, ngực nở nang, chuyển động quyến rũ: Trăm nghe không bằng mắt thấy, Rina nói.","lastmod":"2025-04-02","duration":"","url":"/play/19195434.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNTE2N2Y0ZTIyZjIyZDZjN2FiOGUxZWMyYjYzYjVjNTkuanBn.cache","vod_id":19154587,"title":"Lễ Tạ ơn dành cho người hâm mộ nữ trưởng thành, cuộc thi xuất tinh âm đạo, tiệc nhập vai.","lastmod":"2025-03-30","duration":"2:22:19","url":"/play/19154587.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYzU4MTFlNzEyZDVmNWNkYTMwNjMwMjhiMGFlOGE4M2YuanBn.cache","vod_id":19064299,"title":"Vẻ quyến rũ gợi cảm của một cô nhân viên văn phòng ngực khủng, người thậm chí còn cưỡi lên dương vật của tôi như một tay đua cừ khôi!","lastmod":"2025-03-29","duration":"0:18:39","url":"/play/19064299.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZDg0ZTEwNzM4MGE4ZDEzOGI5MjU4NDQ3NzhmNTIxZmIuanBn.cache","vod_id":19256989,"title":"Sẽ rất nguy hiểm nếu chúng bị phát hiện! Màn quan hệ tình dục bằng miệng tuyệt vời của chú thỏ nghiệp dư (Phần 1): Xuất tinh dữ dội lên lưỡi Usagi - Bộ lạc ảo tưởng","lastmod":"2026-05-04","duration":"3:10:42","url":"/play/19256989.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZTBlYWQzMThkMjg4MzI5MTEzZDg3MjQ5ZWM4NDdlYTYuanBn.cache","vod_id":19051238,"title":"Băng sex trong khách sạn của người đẹp ngực khủng dễ thương","lastmod":"2025-03-29","duration":"0:50:50","url":"/play/19051238.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvM2M5M2Y1OGZhY2JiMzRjZDMwZjgxZmEwMWFhZjEzODEuanBn.cache","vod_id":19126139,"title":"Chị gái kết nghĩa của bạn tôi đã bịt mắt tôi và thậm chí còn tự mình lắc chiếc bịt mắt đó nữa!","lastmod":"2025-03-29","duration":"0:12:17","url":"/play/19126139.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MjMvZmY0MTZiY2RlZmU0ODFjYmMyM2MxNWZiMGRmYWE1MzkuanBn.cache","vod_id":19265095,"title":"Cô Gái Nông Đình Hổ Trắng ~Trong khung cảnh yên bình của vùng quê, hành vi quấy rối tình dục tinh nghịch của cháu gái cô ấy xảy ra~ Lỗ nhỏ phẳng Moeka 147cm Ayase Moeka Ayase Moka Kẻ hiếp dâm - Bộ tộc ảo tưởng","lastmod":"2026-06-23","duration":"1:51:09","url":"/play/19265095.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MjcvNzE5ZDU0ZmZlMDlkNWQxYjkzMDZlNGY1ZjI3MTRhN2EuanBn.cache","vod_id":19199607,"title":"Nữ cosplayer cởi bỏ quần áo, khoe vòng một cỡ G và thân hình nóng bỏng!? Sato Riko EKDV-631-C","lastmod":"2025-04-27","duration":"","url":"/play/19199607.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZWQ5NzkyZjg2NmE5ZTUzMmEzN2UwOGM3MmM0OTc1OGYuanBn.cache","vod_id":19134949,"title":"Maki, một cô gái nghiệp dư ngực khủng đến từ vùng nông thôn Wakayama, 20 tuổi, cỡ ngực L!","lastmod":"2025-03-29","duration":"2:09:54","url":"/play/19134949.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMTdlY2E2NDBmNzE4OTBmMmIzNWU4NzBlZGVjOTU0ZjguanBn.cache","vod_id":19132484,"title":"Bạn có muốn quan hệ tình dục sau khi dùng ma túy không? Cô hàng xóm của tôi, một người từng là tội phạm (giờ là một phụ nữ đã kết hôn và vỡ mộng), đã mời tôi ngoại tình với cô ấy, và tôi vô cùng sung sướng.","lastmod":"2025-03-29","duration":"1:59:45","url":"/play/19132484.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MDYvNDFlZTQ5NTYwNmI4ZTFjMjc3MWY3OGQwMWZmNTE0YTUuanBn.cache","vod_id":19267579,"title":"Một mỹ nhân tóc đen trong sáng, thuần khiết bị bạn trai phản bội làm hư hỏng... Một dương vật khổng lồ trực tiếp thâm nhập vào cô cho đến khi cô xuất tinh và đạt cực khoái liên tục mà không dùng bao cao su. Doujin AV Club - Delusion Clan","lastmod":"2026-07-11","duration":"","url":"/play/19267579.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMDc4NmMwZWJhMzNkZmYzMDEzMzAzZDBkYTVhZWEyNGMuanBn.cache","vod_id":19031461,"title":"[Hay nhất năm] Vụ cưỡng hiếp trong buổi hẹn hò ngoài đời thực! Hai tên vô lại đã đánh thuốc mê một cô gái, liên tục cho thêm thuốc để giữ cho cô ấy tỉnh táo! Chúng thay phiên nhau và lạm dụng cô ấy một cách tùy ý!","lastmod":"2025-03-28","duration":"1:43:10","url":"/play/19031461.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDFlZDI0YWRhNzkyY2FhZDM0NmY0OTE3ZTgzMjZiY2EuanBn.cache","vod_id":19107128,"title":"Một cô gái xinh đẹp chiến đấu với một tên gangster xăm trổ đầy mình, bị hắn cưỡng hiếp không ngừng nghỉ ở nhiều tư thế khác nhau; cô gái này vô cùng kiên cường.","lastmod":"2025-03-29","duration":"0:33:31","url":"/play/19107128.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvM2JkM2QzZmUyYjlkOGRiYWU3ZTczYzFhMzdkYjhiMWMuanBn.cache","vod_id":19249987,"title":"\"Lý do ông ấy cưới mẹ tôi là vì tôi.\" Người vợ trở về quê nhà một tuần, và cô con gái riêng sớm trưởng thành, ngực lớn của bà đã bị một dương vật cực kỳ mạnh mẽ dạy dỗ bằng những chuyển động như pít-tông. (PPPE-392)","lastmod":"2026-03-19","duration":"1:59:22","url":"/play/19249987.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNGVlNTNmMWQxOGZmN2M5MjViNDQ5NTFmNzMxYWFhMDkuanBn.cache","vod_id":19168460,"title":"[Màn quan hệ tình dục bằng miệng do cô giáo biến thái Jinguji Nao thực hiện mang lại khoái cảm hơn nhiều so với với bạn gái tôi. - Jinguji Nao]","lastmod":"2025-03-30","duration":"2:00:26","url":"/play/19168460.html"}]},
videoTitle: 'FPRE079 Một cô gái ngực khủng lén lút trêu chọc núm vú của bố bạn mình, tận hưởng cảm giác xuất tinh liên tục.',
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=/`;
}
};
}