Một chàng trai đẹp trai tán tỉnh một người mẫu cao ráo, xinh đẹp. Cô gái có vẻ ngoài dịu dàng và rất nhạy cảm. Cô ấy hét lên khi bị xâm nhập, khiến người ta có cảm giác như cô ấy đang mất trinh. Chắc hẳn vùng kín của cô ấy rất khít. ...title>","lastmod":"2026-07-11","duration":"04:04","url":"/play/19153545.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjYwOWZlMGFiYzY2ZDU1MDZhZWM4YTlhOTUwNjIwOGEuanBn.cache","vod_id":19038743,"title":"408KIWVR-381 [VR] \"Chỉ cần 1cm là đủ...làm ơn cho vào một lần thôi!\" Đối với tôi, trinh tiết [sự phát triển thiêng liêng!] - cd1","lastmod":"2025-03-19","duration":"29:51","url":"/play/19038743.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDAwMjUxYTQwNDg3YjdlZGNkYjMwZDJjMzIwMjEwY2MuanBn.cache","vod_id":18981437,"title":"JUQ-562 Khi hông của người phụ nữ đã kết hôn đang đẫm mồ hôi lắc lư dữ dội, tôi đã đạt cực khoái bên trong cô ấy mà không cần di chuyển hông một lần nào.","lastmod":"2025-03-19","duration":"02:26:57","url":"/play/18981437.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjFmODNlMDhkZDFkNzcwOGU2ODZhMTMwMGY2NGNmNDMuanBn.cache","vod_id":19074779,"title":"Một cô gái ngực khủng bị quay phim lén lút khi đang bị tấn công tình dục bằng dương vật lớn và các đạo cụ khác...","lastmod":"2025-03-19","duration":"08:29","url":"/play/19074779.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYmQ3NTYzMWM3ODI1YzNjNTZiNjk0ZTFkZjk2YzYyNzUuanBn.cache","vod_id":18922169,"title":"IPX-911-C Tôi ghét sếp của mình, nhưng cuối cùng, tôi lại phải ở chung phòng với ông ta tại một khách sạn suối nước nóng trong một chuyến công tác… Ông già xấu xí, tham lam này đã khiến tôi xuất tinh hết lần này đến lần khác.","lastmod":"2025-03-19","duration":"02:27:02","url":"/play/18922169.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODEzMzk3ZmY1Y2Q0YWZmZTIwNmNkMDc0NDg2NWNkM2EuanBn.cache","vod_id":19030403,"title":"Một cô gái quyến rũ với mái tóc trắng dày và bộ ngực lớn đã cho phép tôi chơi đùa với cô ấy trong 39 phút.","lastmod":"2025-03-19","duration":"39:21","url":"/play/19030403.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjc5YWY0NjJlYWI0Yjg1OTk1YzQwNTc2MmY4MDkzNzMuanBn.cache","vod_id":18943147,"title":"Người mẫu nữ mới, phát trực tiếp không chỉnh sửa, chân thực nhất, tự sướng hoàn toàn khỏa thân, cận cảnh cô ấy dang rộng chân, hoàn toàn trần trụi, với rất nhiều chất dịch màu trắng.","lastmod":"2025-03-19","duration":"41:40","url":"/play/18943147.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNTFmYmEzZmZiM2EyZjQxNTk2OGExNjM0NzJmYzA0ZmMuanBn.cache","vod_id":19065457,"title":"NPS-454 Màn quyến rũ đời thực! Một cô gái còn trinh, lo lắng về chứng hẹp bao quy đầu và bất lực, bị kích thích và quyến rũ anh chàng, nói: \"Em cho vào nhé?\" Nhưng anh chàng đáp: \"Đây là lần đầu tiên của anh.\"","lastmod":"2025-03-19","duration":"03:55:42","url":"/play/19065457.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZWE0MDRmYmMzZTg2MDQ1MjIyNGVlZmI5MjVjNzA4MDcuanBn.cache","vod_id":19023313,"title":"HD Một người đàn ông và hai người phụ nữ đang quan hệ tay ba. Người đàn ông rất thích thú. Sau khi xong xuôi, hai người phụ nữ lấy một quả dưa chuột, đeo bao cao su và tự chơi với nó.","lastmod":"2025-03-19","duration":"42:41","url":"/play/19023313.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYTg0YjA4MDljOGQ2YmViYWY1ZmI5NWZhYmYyMjI4OTAuanBn.cache","vod_id":19137743,"title":"RBK-118 Amaryllis Chương 1: Hậu môn của một người phụ nữ xinh đẹp bị xâm phạm","lastmod":"2026-02-13","duration":"01:59:31","url":"/play/19137743.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZTk1NzI3M2NlY2IyMTZiYjk3ZjU2Y2Q0MjkyM2E0MzQuanBn.cache","vod_id":19138820,"title":"MIDA-342 Dịch vụ tận tâm với vòng một cỡ H: Trải nghiệm tắm bồn bong bóng đầu tiên của người mới triệu yên! Ayana Trắng Tinh Khiết (Đĩa Blu-ray)","lastmod":"2026-02-17","duration":"02:22:58","url":"/play/19138820.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjg0N2E2OGFmZWUzOGMyMjdkYTE2ZjFiODE3OTE0OGUuanBn.cache","vod_id":18926126,"title":"Việc dậy sớm để làm \"chuyện ấy\" nhanh chóng thật sự rất thỏa mãn; cô gái lẳng lơ đó đã đề nghị quan hệ tình dục bằng miệng với tôi.","lastmod":"2025-03-19","duration":"06:39","url":"/play/18926126.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNWQzYTE1MGU0ZjY5YTY5ZTJhYmQ3Mjk2ZmY4YTdiMTAuanBn.cache","vod_id":18989430,"title":"Một nữ sinh trường dạy nghề có vẻ ngoài ngây thơ, đầy hình xăm – rõ ràng là kiểu người không tốt và chỉ muốn vui chơi – đã bị xâm hại dã man.","lastmod":"2025-03-19","duration":"20:20","url":"/play/18989430.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYWM0Y2YzZjFlZjRkMGYyMWZmZjIxOWY2MDk3Y2ExMWMuanBn.cache","vod_id":19071185,"title":"HAWA-340 Một cô vợ nghiệp dư được một sinh viên đại học bình thường tặng một chiếc bao cao su và không hài lòng với việc chỉ quan hệ tình dục bằng bao cao su một lần mỗi đêm, vì vậy cô đã quan hệ tình dục với anh ta hai lần trong thời gian lưu trú.","lastmod":"2025-03-19","duration":"03:21:41","url":"/play/19071185.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzIwOTQ5ZGJmOGVkZGMwY2Y1ZjIxZmFkMTViODQwOGYuanBn.cache","vod_id":18967602,"title":"Rina Tsukino - Cháu gái tôi, người mà tôi gặp lại sau mười năm, đã trở thành một cô gái gợi cảm và dễ thương, quyến rũ tôi! Cô ấy đạt cực khoái hết lần này đến lần khác ở tư thế cưỡi ngựa.","lastmod":"2025-03-19","duration":"02:22:44","url":"/play/18967602.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjJjYzA4MDIxMjQzNzM1MmZmZTkyZWFkMTVlYTBlYjMuanBn.cache","vod_id":18940194,"title":"Một cô gái nặng hơn 80 pound [Yueyue Ao] đã quan hệ tình dục với bạn tình sau khi tắm xong. Cô ấy tự kích thích âm đạo đầy lông và ham muốn của mình, nắm lấy dương vật to lớn và liếm nó, rồi chủ động nhấp nhô lên xuống.","lastmod":"2025-03-19","duration":"23:51","url":"/play/18940194.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTU2NDFmNTA1NWFiYmM2N2JjMGQ5ZmQxYmM2MmY2MTQuanBn.cache","vod_id":18932361,"title":"[Quyến rũ cô em dâu xinh đẹp, ngực khủng] [Lần đầu tiên] Lộ mặt toàn bộ, tất đen, tư thế 69 gợi cảm, quan hệ bằng miệng, em dâu rên rỉ dâm đãng, rất lẳng lơ, dương vật to, không dùng bao cao su, thúc mạnh, ghế tình dục, chủ động, rên rỉ.","lastmod":"2025-03-19","duration":"27:40","url":"/play/18932361.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMmExZDM5MmY2MGYwNmQwOTdmNzhkYTNlNDVlMDAwMDkuanBn.cache","vod_id":18923266,"title":"MIAA-060 Tôi, đạt cực khoái chỉ trong một lần bởi em trai của bạn gái cũ mà tôi thích. —Ai Hoshina","lastmod":"2025-03-19","duration":"01:59:30","url":"/play/18923266.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MDUvNGYxM2Y3MzJiNDRiZmY1NDEyZWE0NTE3Yjk4N2M1MjAuanBn.cache","vod_id":19114689,"title":"FJIN-074 Lần tắm đầu tiên của tôi. Sau khi cha tôi tái hôn, tôi chào đón một người mẹ kế với vòng một cỡ H. Trong một chuyến đi chơi gia đình, bà phát hiện ra tôi vẫn còn trinh.","lastmod":"2025-08-05","duration":"02:17:45","url":"/play/19114689.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZTE1MzZjNGNjNzZjYjRmOWNlMzJkZjkwMGY4MDE0MzguanBn.cache","vod_id":19051889,"title":"MIDV-835 Tôi sẽ cho vợ tôi mượn con một tuần. Tôi đạt cực khoái hết lần này đến lần khác dưới dương vật của những người lạ và bố vợ tôi...","lastmod":"2025-03-19","duration":"02:41:44","url":"/play/19051889.html"}]},
videoTitle: 'Đây là lần đầu tiên một cô gái ngực phẳng lại phải chịu đựng một cuộc tấn công dữ dội như vậy; cô ấy có vẻ hơi choáng váng.',
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=/`;
}
};
}