Bánh trái cây, không có chuyện mang gánh nặng, chỉ là có ai đó đang làm cho cuộc sống của bạn bình yên mà thôi. IPX-901","lastmod":"2026-07-11","duration":"09:20","url":"/play/19161703.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvNzAzYWQ2ZDNiMDJhYzllM2ZjZTNjNTUwMzlkZDAxZDQuanBn.cache","vod_id":19161507,"title":">Twistys Sexy Schoolgirl Will Do Anything for Credits【Twistys】","lastmod":"2026-07-11","duration":"12:00","url":"/play/19161507.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MTcvZDA2MTA5ZDU0ODM0ZWI3NTExZGU3NDVjZWJlOTJmYmMuanBn.cache","vod_id":19033955,"title":"Bạn có hài lòng với việc các cô gái quỳ xuống phục vụ bạn không?","lastmod":"2025-05-17","duration":"12:04","url":"/play/19033955.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWU0MzNiYWRlNzFhOGRiZmQyNWRmY2MwMjI4ZDRkODguanBn.cache","vod_id":18929577,"title":"Một cô gái xinh đẹp với đôi môi đỏ và kính râm tự thỏa mãn trong nhà vệ sinh, để lộ ngực và vùng kín, dùng máy rung để đi tiểu. Cô ấy không có lông và rất quyến rũ. Đừng bỏ lỡ nếu bạn thích.","lastmod":"2025-12-14","duration":"00:13:44","url":"/play/18929577.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvYmE2ZjYxODZjNjc1OTIxYzExNDEwOGM3MDg4NWI0N2QuanBn.cache","vod_id":19163407,"title":"Chàng trai trẻ đoạt huy chương vàng bạch kim hẹn hò với cô gái ngực khủng hàng đầu và trở nên ám ảnh với bộ ngực của cô ấy","lastmod":"2026-07-11","duration":"25:43","url":"/play/19163407.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTA5N2EwMjVhNGUwZTlhZDVjZjZhODIyMzQ1MDUxYWQuanBn.cache","vod_id":19024545,"title":"Cô gái này rất dâm đãng; cô ta tự thỏa mãn trước mặt bạn trai trước, rồi sau đó hai người mới quan hệ tình dục.","lastmod":"2025-03-24","duration":"21:38","url":"/play/19024545.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2E4YzAzYWY1NzQ3OWE1YjE2ZWFhZDY4NDY5MzgyNTkuanBn.cache","vod_id":18930422,"title":"Một người đàn ông và hai người phụ nữ đang chơi đùa cùng nhau. Người phụ nữ trẻ khỏa thân và đang tự vuốt ve cơ thể mình. Cô ấy có thân hình mảnh mai và vùng kín rất mềm mại. Cô ấy trông rất quyến rũ và gợi cảm. Đừng bỏ lỡ nếu bạn thích.","lastmod":"2025-03-22","duration":"00:44:52","url":"/play/18930422.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjUwZDU4ZjA0ZTIzNmVlYWJjM2ZiOTljZmJmMGIzNWQuanBn.cache","vod_id":18983249,"title":"109IENFH-32301 Một tiếp viên hàng không hiện đang làm việc cho một hãng hàng không! Bạn có thể giúp tôi giải quyết một vấn đề liên quan đến một người nhút nhát, thiếu kinh nghiệm và chưa từng hẹn hò với phụ nữ không?","lastmod":"2025-12-14","duration":"00:49:55","url":"/play/18983249.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMmFiZDAwOTk5NzBhMjMzOWQ4YWRlYmZlYzljYWQ1ODEuanBn.cache","vod_id":19010330,"title":"Cô gái Lolita nghiệp dư nhỏ nhắn, dâm đãng","lastmod":"2025-03-24","duration":"59:18","url":"/play/19010330.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MDkvYWM0ZjE2MjZiMzkzZjA0ZjlkZjViODU5NjYyMjRiY2UuanBn.cache","vod_id":19046200,"title":"Cô gái xinh đẹp, ngọt ngào trong chiếc quần tất đen này trông vô cùng quyến rũ.","lastmod":"2025-08-08","duration":"36:32","url":"/play/19046200.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNTdiYjQxZWJmZWI4YTc3OGVmNjU5MTY0NzZmODVlMzIuanBn.cache","vod_id":19137737,"title":"Cô gái mà tôi tán tỉnh có vòng một cỡ G và cả dương vật nữa!? Nữ diễn viên vô danh PETS-052","lastmod":"2026-01-10","duration":"01:48:34","url":"/play/19137737.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvM2QyMzM5NjA3Y2M4ZmE2OGFlOTFkNGExYmY3NzYyZDMuanBn.cache","vod_id":18981911,"title":"[Không kiểm duyệt] MAAN-849 [Cựu thần tượng xinh đẹp hóa ra là một cô gái siêu rắc rối chuyên ăn \"của quý\" to!?] Cô gái dễ thương truyền thống đã trở lại.","lastmod":"2025-03-23","duration":"01:26:43","url":"/play/18981911.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvOTRlZDZmMDdmM2Q0NTVhMzUwYmRlYjllMjEwYjMzZDUuanBn.cache","vod_id":19137659,"title":"Người nổi tiếng trên mạng, ngực khủng, thân hình gợi cảm, tóc ngắn, sử dụng đạo cụ để thủ dâm.","lastmod":"2026-01-10","duration":"03:01:42","url":"/play/19137659.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MDYvOTA0NzQ3NTk4MTlmYTI2OWY3ZGJjYTI5MTIzYzM4MTQuanBn.cache","vod_id":19167345,"title":"Một cô gái đoan trang trở nên quyến rũ đến mức khiến các chàng trai phải liếm âm đạo của cô ấy và không thể cưỡng lại việc quan hệ tình dục với cô ấy.Một cô gái đoan trang trở nên quyến rũ đến mức khiến các chàng trai không thể không liếm âm đạo và quan hệ tình dục với cô ấy.HEYZO 3277 Shirai Nana tè dầm! ——Shirai Nana","lastmod":"2026-07-11","duration":"10:16","url":"/play/19162381.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTAwZjY0YjhlYmM0OTJhMTdiNmRjNzY2NGRlZWQ2OTQuanBn.cache","vod_id":18961418,"title":"Những ngôi sao mạng hàng đầu ☀️ Nội dung cao cấp trả phí: Lộ mặt là chìa khóa! Một nữ sinh viên Trung Quốc nhiều lông đang du học với cá tính gợi cảm đến bất ngờ [Nữ thần Mèo] buổi chụp ảnh riêng tư ~ Không học hành chăm chỉ, sẵn sàng làm gái điếm cho người nước ngoài tóc dài - Bé con đang quan hệ bằng miệng ngoài trời.","lastmod":"2025-12-14","duration":"00:06:23","url":"/play/18961418.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTBjNGMyZGM2YTNlYzAwYmIwOThlNDc4OTk1NTlmODEuanBn.cache","vod_id":18944040,"title":"SHN-037 - Không một âm thanh nào có thể phát ra trong thư viện, và tinh dịch tràn ra đến mức đặc sệt như sợi chỉ.","lastmod":"2025-03-22","duration":"01:08:24","url":"/play/18944040.html"}]},
videoTitle: 'SABA497: Mặc dù tôi không có nhiều kinh nghiệm tình dục, nhưng tôi rất dễ bị kích thích! Chất bôi trơn của cô gái quê này giống như một chuỗi sợi chỉ.',
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=/`;
}
};
}