Vô số đôi chân đẹp trên đường phố, hẹn hò với những cô gái trẻ xinh đẹp sinh năm 2000","lastmod":"2026-07-11","duration":"59:44","url":"/play/19166373.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MDEvODIxMmNjMWI2NDYxMmVkYWIwOWU3ODBmNjhiNzNmM2EuanBn.cache","vod_id":19031678,"title":"Cô gái giao hàng tận nhà","lastmod":"2025-05-01","duration":"22:08","url":"/play/19031678.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNmViNWI3MjVlZTYxNmE1YWY2MTY2MGM5YTVkNzk4MmIuanBn.cache","vod_id":18968587,"title":"Cuộc sống hạnh phúc của ba chị em với hai tên khốn nạn bao gồm những cuộc ái ân nồng nhiệt, như vuốt ve ngực, chơi đùa vùng kín và giao hợp mãnh liệt. Họ cũng được hưởng dịch vụ mát xa từ những cô gái lẳng lơ, với ba người phụ nữ thay phiên nhau thâm nhập vào họ trong một màn trình diễn đầy đam mê và rên rỉ.","lastmod":"2025-12-14","duration":"01:24:44","url":"/play/18968587.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYWI1N2YzYTIyNzgzNDNmYjVhMzliZjg2YmJmZThmN2IuanBn.cache","vod_id":18924446,"title":"Cảnh phim mô tả căn phòng của một chàng trai trẻ với hai người phụ nữ đang phát trực tiếp cảnh mất trinh. Anh ta giải thích rằng rất khó để thâm nhập vào âm đạo của một trinh nữ nếu không có chất bôi trơn, và anh ta đã cố gắng đưa dương vật to lớn của mình vào bên trong, thậm chí làm chảy máu cả ngón tay.","lastmod":"2025-12-14","duration":"00:26:31","url":"/play/18924446.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMTkvOWMzNDk2MTY4MDY4ZjJkNjhjNTBhOTAxYTkyOGI0ZTguanBn.cache","vod_id":19058075,"title":"Netorare sống chung nhà; vợ bị một thanh niên thủ dâm; Mai Arisu; Mai Arisu; NSFS329","lastmod":"2025-10-18","duration":"02:29:58","url":"/play/19058075.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDAxMDI0OTZhYjQzYmY4Njg4ZThlMWM5YjUwYTE0ZWIuanBn.cache","vod_id":18944621,"title":"28 tháng 2 năm 2010 [Su Su và bạn thân của cô ấy đã sắp xếp một cuộc \"quan hệ tay ba\" với em trai cô ấy] Một chàng trai trẻ đã có cuộc \"quan hệ tay ba\" với hai cô gái xinh đẹp, tóc hồng. Cả hai đều dễ thương và quyến rũ, với vòng eo thon gọn và vòng mông săn chắc, thay phiên nhau tranh giành dương vật của anh ta. Góc quay, chất lượng và hiệu ứng hình ảnh đều hoàn hảo.","lastmod":"2025-12-14","duration":"03:08:10","url":"/play/18944621.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MjUvMjYwMjE3YzNlZjgzZmFmNjc0YWU3M2ViMmViZWIwMTEuanBn.cache","vod_id":19039713,"title":"FNS031 Một nữ nhân viên xinh đẹp bị ông chủ đáng tin cậy phản bội, trở nên nghiện ma túy và bị ép buộc cung cấp dịch vụ tình dục cho khách hàng.","lastmod":"2025-06-24","duration":"02:15:08","url":"/play/19039713.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMGFhOWY0ODBkMWZlNmVhN2VmNTU5YTU0NzY2ZTI1ZWMuanBn.cache","vod_id":18940778,"title":"FC2PPV-1243984-A15240 Một cô gái trẻ với vóc dáng vẫn đang phát triển ♥️ Một cô gái 18 tuổi xinh đẹp với nụ cười rạng rỡ trẻ trung và làn da trắng hồng.","lastmod":"2025-03-22","duration":"02:31:42","url":"/play/18940778.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzhlOTBkMjZiOGZmYjg4Y2UzNTllOWM4NmYxNzAyM2UuanBn.cache","vod_id":18937257,"title":"Tôi thích những phụ nữ có bộ ngực chảy xệ xuống tận rốn, đặc biệt là những phụ nữ trẻ. Bộ ngực đung đưa của họ chắc chắn sẽ quyến rũ vô số chàng trai trẻ trên đường phố!","lastmod":"2025-12-14","duration":"00:00:47","url":"/play/18937257.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzFlODUwYmZlMzg0OTZlNTM0NjAzZWM1MmM5Nzg3ZGEuanBn.cache","vod_id":18999762,"title":"Lời nói ngọt ngào như thiên thần, dịch vụ tốt nhất, nàng công chúa xà phòng tuyệt vời nhất, bồn tắm bong bóng.","lastmod":"2025-03-23","duration":"01:58:18","url":"/play/18999762.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMGZlNTFjYjU1NzBiODg2OWM2YTYzZmY3OWRmMTk2MmYuanBn.cache","vod_id":18988024,"title":"Lễ kết nạp Nữ Hầu tước trẻ vào Hoàng gia (Pháp) (1987)","lastmod":"2025-03-23","duration":"01:17:41","url":"/play/18988024.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9pYy4xNTUyNTAyMTQudG9wLzIwMjYwMjIzL2tGY0hPS1U3LzEuanBn.cache","vod_id":19145208,"title":"AI - Triệu Lệ Dĩnh - Phim bom tấn","lastmod":"2026-02-24","duration":"12:16","url":"/play/19145208.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMTgwMjJkZDdiOTU1ZmQ3MmY4ZGU1Y2QyMzI5MGEzMjMuanBn.cache","vod_id":19162894,"title":"Nếu anh không làm tốt công việc của mình, thì hãy phục vụ tôi thật tốt! Một bà chủ mặc quần tất đen thật quyến rũ, hãy để anh thấy đủ bản chất thật của cô ấy và làm tình với cô ấy đến khi anh hài lòng! SWITCH","lastmod":"2026-07-11","duration":"03:41:14","url":"/play/19162894.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMjYyNmEwODA2Mjg3Njk5NjVhODUxMDM5Yjk1ZDg1MjkuanBn.cache","vod_id":19150825,"title":"Kỷ niệm 30 năm! 30 bộ ngực trẻ trung! Tổng cộng 15 người được quay phim! Lượng khách du lịch cao nhất mùa hè này! Đây là SDMM-220-cd2","lastmod":"2026-03-30","duration":"02:09:17","url":"/play/19150825.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzFkMWE0ZWRlZWZhM2Y3MWM3NDI0MTBhNmYyNjA3MTkuanBn.cache","vod_id":19007026,"title":"Các dịch vụ đặc biệt được cung cấp bởi các chuyên viên bất động sản năng động để bán nhà.","lastmod":"2025-03-24","duration":"29:54","url":"/play/19007026.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTVhYTQzMDE0MjlmYzc4ZDFlZTI4MTI4OTg1ZWViMWQuanBn.cache","vod_id":19022057,"title":"ADN114 Bị xâm hại trước mặt chồng, kẻ hiếp dâm đến nhà 11 Kashii Uria.","lastmod":"2025-03-24","duration":"01:54:54","url":"/play/19022057.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjcxOGY5MDAwODdlMWRhN2RjMzMzMjk0MWU3OTZiZmMuanBn.cache","vod_id":18999548,"title":"Chiều hôm đó, khi tôi bước vào một quán cà phê dành cho các bà nội trợ, người vợ trẻ ngồi cạnh tôi...","lastmod":"2025-03-23","duration":"01:59:57","url":"/play/18999548.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzc2OTYzMDZmYzlmZjk4YjM2NGE5ZGI0MDJhNmI5MDguanBn.cache","vod_id":18934009,"title":"[Phụ đề tiếng Trung] DDHZ-005 Vợ yêu dấu của tôi... đã bị một chàng trai trẻ ôm hôn ngay trước mặt tôi, rồi phát điên lên.","lastmod":"2025-12-14","duration":"01:46:03","url":"/play/18934009.html"}]},
videoTitle: 'Cốt truyện hấp dẫn: Bạn đồng hành trong thời gian cách ly tại nhà - Những chú vịt con sẽ mang đến những dịch vụ đặc biệt ngay trước cửa nhà bạn.',
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=/`;
}
};
}