Cô gái xinh đẹp thuần khiết giấu một lỗ hổng dâm đãng dưới bộ Hanfu, quan hệ tình dục cuồng nhiệt và xuất tinh bên trong, đối mặt với nàng tiên.","lastmod":"2026-07-11","duration":"","url":"/play/19244970.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYzhiMjQzNzY2YTkwYWQxNjcwNjM2ZTk0ZDVmYzY3YTQuanBn.cache","vod_id":19055955,"title":"(Đồng tính nữ Nhật Bản) Hai người phụ nữ xinh đẹp hôn kiểu Pháp, vuốt ve và tự thỏa mãn.","lastmod":"2025-03-28","duration":"","url":"/play/19055955.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODIxOTNlYmY3OWUzZTU3YWQ5NzJjOGUxZTU4MzVhMjQuanBn.cache","vod_id":19070584,"title":"Người đẹp Đài Bắc Jemi không hài lòng với việc tự thỏa mãn một mình ❤️ và muốn tìm một người đàn ông để thỏa mãn ham muốn của mình, nhưng thay vào đó, cô lại nhận được một cặp số 1.","lastmod":"2025-03-28","duration":"00:30:11","url":"/play/19070584.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvY2ZhMGJmZmNmNjk2ZmNiODIzOWEwMjJlOGJhZDVlMmIuanBn.cache","vod_id":19228934,"title":"ALDN-390-C Hành Trình Cấm Kỵ Mẹ Con: Người Mẹ Trưởng Thành Tuyệt Mỹ Bị Con Trai Xâm Nhập Hoang Dã, Âm Đạo Bà Đạt Cực Khoái và Xuất Tinh","lastmod":"2026-04-13","duration":"2:03:25","url":"/play/19228934.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2QzNjA2OWNiNzc0ZmI2MWI4N2QzZmUxMjhhYmJmYmIuanBn.cache","vod_id":19119344,"title":"Cô nàng lẳng lơ 3D tự sướng và thực sự rất muốn; tôi chỉ có thể giúp cô ấy thỏa mãn ham muốn của mình.","lastmod":"2025-03-29","duration":"04:12","url":"/play/19119344.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDAwN2JhZjNhOGZjZjhiMjVjYmZhYjc3NDM4MDM2ZmEuanBn.cache","vod_id":19106305,"title":"Trong cảnh giả trai, âm đạo cô ấy siết chặt dương vật và thúc mạnh, cô ấy đạt cực khoái liên tục trong khi bị đâm bằng nắm đấm, dịch tiết trước khi xuất tinh liên tục chảy ra, và tiếng thở hổn hển sau đó cho thấy cô ấy đang lên đỉnh - video tự quay của người Trung Quốc.","lastmod":"2025-03-29","duration":"","url":"/play/19106305.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmNkZDRhNGQzNmU2Yjk4NmMyN2I2MTliN2NhMDk1YTYuanBn.cache","vod_id":19136651,"title":"SORA544 Tình yêu nghiêm túc, bám víu, thích nhìn trộm, dãy núi Alps phía Nam, trường học thành phố, Y, đội Yankees, câu lạc bộ chào mừng, ngực nhỏ, thuốc hỗ trợ giấc ngủ, 3 thiết bị thủ dâm dành cho nữ","lastmod":"2025-03-29","duration":"","url":"/play/19136651.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTgxMGVjOTc2MTk1NDE4OGZmYzc1ODBjZDMyM2JkYzEuanBn.cache","vod_id":19105594,"title":"384SHSS-003 [Cảnh đầu tiên] Ứng dụng AV trực tuyến → Trải nghiệm AV Cảnh 1018 Một nữ lễ tân ngực khủng quyết định đóng phim AV để tìm kiếm cảm giác mạnh. Chỉ cần đưa một ngón tay vào vùng kín đã cạo sạch lông của cô ấy sẽ khiến cơ thể cô ấy co giật và rung lên, đạt cực khoái hết lần này đến lần khác…!","lastmod":"2025-03-29","duration":"","url":"/play/19105594.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjYxOTQ5MTVlMDIzN2QzNGVjMDhmNDdhYWFkZTEyOWQuanBn.cache","vod_id":19041277,"title":"Phiên bản đặc biệt Fruit Loan Beauty: Cô em gái dịu dàng, dễ thương Trương Sinh Lan vô cùng quyến rũ, sử dụng nhiều đạo cụ để tự thỏa mãn. Khuôn mặt trẻ trung và vòng một đầy đặn của cô ấy cực kỳ hấp dẫn.","lastmod":"2025-03-28","duration":"00:23:57","url":"/play/19041277.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvYzc4ZTUwZjdhYmI0Yjk5NGVmZjEzMjcyY2I3MDhiZDEuanBn.cache","vod_id":19236199,"title":"Tên khốn có dương vật to sẵn sàng trả giá cao để cặp kè với những cô gái xăm trổ mặc quần tất trắng, lén lút quay phim họ, rồi liên tục cưỡng hiếp và xuất tinh vào âm đạo của họ.","lastmod":"2026-05-19","duration":"0:38:11","url":"/play/19236199.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvYWUyM2E4N2ZjMjQ1ZjgzY2ViZjZhYzViN2YwZTlhMTQuanBn.cache","vod_id":19235636,"title":"DASS-614-C Thuốc kích thích tình dục - Cực khoái bùng nổ của huấn luyện viên yoga! Âm đạo ướt đẫm mồ hôi, co giật, tiết ra dịch kích thích dục vọng.","lastmod":"2026-05-16","duration":"2:44:26","url":"/play/19235636.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZjBiZTk1NWZmMGQ2YmY0NDU2OWQ1MTg4ZjIzMGMyYTcuanBn.cache","vod_id":19229310,"title":"Nữ influencer trên Twitter hoàn toàn khuất phục! Cô ấy hiến dâng bản thân cho âm đạo của chủ nhân, trải nghiệm những màn quan hệ tình dục mãnh liệt và xuất tinh, tiếng rên rỉ khoái lạc của cô ấy không ngừng vang lên!","lastmod":"2026-04-15","duration":"0:29:04","url":"/play/19229310.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZTliZGQyYjNhMzhlYTEyYThmNWY2OTU0YzY2MGYxODcuanBn.cache","vod_id":19106229,"title":"Một nữ phát thanh viên người Hàn Quốc ngực khủng đã đổ một chất dính lên quần lót của mình và vuốt ve vùng kín!","lastmod":"2025-03-29","duration":"","url":"/play/19106229.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjA3ZGNmMTExODZjM2E2YzkyMjRjOTcwZDdjOWU5YjguanBn.cache","vod_id":19055443,"title":"[Gian hàng Trung Quốc] Tập 2 - Một thanh niên giàu có ở Tô Châu hành hung dã man một gái mại dâm đeo mặt nạ trong biệt thự của mình; người phụ nữ rên rỉ không kiểm soát được.","lastmod":"2025-03-28","duration":"","url":"/play/19055443.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDY1YmQwYjUyOGU1ZjMxYjI1ZTEzZDlmNDBlNjYwZDEuanBn.cache","vod_id":19231614,"title":"Người mẫu nội y cao cấp của SecretCrush4K sa vào trụy lạc trên phim trường, âm đạo của cô bị nhiếp ảnh gia cưỡng hiếp và xuất tinh dữ dội, cô la hét và lên đỉnh không ngừng!","lastmod":"2026-04-30","duration":"0:28:03","url":"/play/19231614.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDQyYjYzNTRkOTNkODlmOWQwNjU5NjZmMjFjMzlkMTMuanBn.cache","vod_id":19111806,"title":"Cô bạn thân gợi cảm của tôi đã trói tay chân tôi và cưỡng hiếp âm đạo tôi một cách tàn bạo trong khi đeo dương vật giả.","lastmod":"2025-03-29","duration":"","url":"/play/19111806.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODQwZTYxMjU2ZTY1ZGYxZWIxMzYzMDQwYzQ2OWU3MjAuanBn.cache","vod_id":19141558,"title":"MEYD549 (FHD) Một người đàn ông thủ dâm khi vào nhầm nhà. Có vẻ im lặng nhưng thực chất rất hung hăng. Akase Naoko [Bản HD đã kiểm duyệt với phụ đề tiếng Trung].","lastmod":"2025-03-29","duration":"","url":"/play/19141558.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MTAvNGU5YmMwYzYwNDg1NzJiNTdhMzk3OTU2MjgwZjVmYjMuanBn.cache","vod_id":19188948,"title":"SMOK009 Đồ lót xuyên thấu quấy rối nơi công sở! Đồ lót trong suốt trêu chọc cấp dưới ngây thơ khiến anh ta cương cứng; vòng ba căng tròn quyến rũ phục vụ ngày đêm, cưỡng bức xuất tinh.","lastmod":"2025-08-09","duration":"02:39:46","url":"/play/19188948.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOWM2MGUwYmQyYjcxOTU3MjllNGM0ZTUxY2M0NWNlZjAuanBn.cache","vod_id":19037851,"title":"DOCP-073_B \"Bạn có thực sự là một thiên thần không?!\" Dương vật của tôi bị gãy và tôi không thể thủ dâm được.","lastmod":"2025-03-28","duration":"01:45:06","url":"/play/19037851.html"}]},
videoTitle: 'Quần lót của cô y tá nghiệp dư hạng S ướt sũng; những ngón tay 4K liên tục thọc vào âm đạo của cô trong khi thủ dâm.',
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=/`;
}
};
}