Chuyên gia hướng dẫn bạn cách sử dụng nền tảng hẹn hò Việt Nam. Bạn chỉ cần bỏ ra vài trăm đô la để hẹn hò với hai cô gái xinh đẹp. Chất lượng gái gọi rất cao.","lastmod":"2026-07-11","duration":"01:59:03","url":"/play/19153999.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNTdkMTM4NGMzYTM1YTA1ZmIyM2M1ZDRkODAzMDk2MGYuanBn.cache","vod_id":19118971,"title":"Đôi ngực lớn, đang phát triển được vuốt ve và liếm láp. Một nữ sinh viên ngực khủng tham gia vào bốn giờ quan hệ tình dục khiêu dâm, tục tĩu. Nữ diễn viên vô danh SUJI-286","lastmod":"2026-01-17","duration":"03:59:58","url":"/play/19118971.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MDkvZDQ5YjczNTRhMjNhMGU2NTUwN2Y2YjkzN2ZkNDkxMmMuanBn.cache","vod_id":19094467,"title":"Video ghi lại cảnh người phụ nữ Đài Loan đã kết hôn, Zhang Nannan, ngoại tình với khách hàng đã bị lộ.","lastmod":"2025-09-08","duration":"11:01","url":"/play/19094467.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMzAvYWM5OWY1MTA1ZDMwOTU1YWZjMjExNDg5YWE4NjMwODMuanBn.cache","vod_id":19103244,"title":"Tác phẩm kỷ niệm 25 năm thành lập trường Natural High _ Trại huấn luyện Shame 2 _ Nhóm cổ vũ nữ - Diễn viên không rõ danh tính NHDTB_970","lastmod":"2025-10-29","duration":"04:07:34","url":"/play/19103244.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZTcwODBhZTAyY2RhMjJkOGM3ZWRmN2E5ZDdkMTdiZWEuanBn.cache","vod_id":19117110,"title":"Tuyển chọn những nữ sinh ưu tú trong giới học thuật: Những scandal thực sự bị phơi bày - Cuộc sống phóng túng, gương mặt hoàn hảo, thân hình đẳng cấp và khí chất học thuật - Lu Mengfan đến từ Đại học Giao thông Đông Trung Quốc, Zhou Yan đến từ Đại học Bắc Kinh.","lastmod":"2026-01-08","duration":"32:36","url":"/play/19117110.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjhmMDVjYWQ5MjkwYWJkYTNjMjY1ZmE3NjRiZjFmYzguanBn.cache","vod_id":18978942,"title":"Nữ diễn viên quyến rũ đang lên kế hoạch","lastmod":"2025-03-28","duration":"01:03:00","url":"/play/18978942.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNmMwZmJkMjE2MGQ4NjhmOGIyYzAwOWMxZTRiZGRkMTguanBn.cache","vod_id":19129969,"title":"Thông tin độc quyền: Lưu Tiểu Mộng đến từ huyện Tân Thành, thành phố Lâm Nghĩa, tỉnh Sơn Đông, đã bị rò rỉ các đoạn chat khỏa thân và video tự quay cảnh sờ ngực trên WeChat. Cô ta ngày nào cũng khoe khoang về vòng một lớn của mình.","lastmod":"2026-03-11","duration":"04:45","url":"/play/19129969.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNWYyMzBlNmU4NThmN2M3NDJkOTgzODk3YWIwM2M2NWYuanBn.cache","vod_id":19043843,"title":"\"Cô gái Lolita với khuôn mặt trẻ con và mối quan hệ loạn luân 4\" - Với sự tham gia của Yui Nagase, Mitsuki Nagisa, Reimu Hayami và các diễn viên khác.","lastmod":"2025-03-29","duration":"04:02:06","url":"/play/19043843.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMTQvNmE1YjNhMjA4ZGU0MGYzOTg3OGIxNDFiMGZmMGQyMjAuanBn.cache","vod_id":19100657,"title":"Một cô gái tuổi teen đang trong thời kỳ động dục bị làm nhục nhiều lần và bị xuất tinh lên người trước mặt người khác thông qua một nụ hôn kiểu Pháp; lưỡi của họ quấn vào nhau. (Diễn viên không rõ danh tính NHDTB989)","lastmod":"2025-10-13","duration":"03:55:11","url":"/play/19100657.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYzU4ZmVhNzFjODBkY2I5ZDk0ODQ0MDE1MTZlYzViYjIuanBn.cache","vod_id":19005215,"title":"Người đẹp chân dài liếm láp và quyến rũ, để cho âm đạo mềm mại của mình bị chịch mạnh và xuất tinh lên mặt cô ấy.","lastmod":"2025-03-28","duration":"07:39","url":"/play/19005215.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOGMyODZkNmE3NDY3NTlkNWI3MTViOTRiMzYxZWM5MzcuanBn.cache","vod_id":19058224,"title":"300MIUM588 [Người đẹp cao ráo, tựa người mẫu] Tôi đang ở chỗ làm, nhưng bạn trai tôi lại ngoại tình... Chuyện gì đến sẽ đến! Vậy thì, hãy trốn tránh thực tại, vui chơi một chút và tận hưởng cuộc yêu NTR đầy kích thích nhất! Rồi anh ta bất ngờ nói, \"Thật lòng mà nói, anh luôn muốn quan hệ tình dục\": Sao hôm nay em không nghỉ làm? 13 ở Kinshicho...","lastmod":"2025-03-29","duration":"01:14:12","url":"/play/19058224.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZmIwMDc2MDk4NDMwZTlkZGQ2MjkyY2MzMWQ0Y2FmOTUuanBn.cache","vod_id":19024662,"title":"Anh ta thấy mình chỉ còn lại một mình với người vợ say xỉn, không vũ khí và đang ngủ say! Điều bắt đầu như một trò đùa đã hoàn toàn làm anh ta mất hết lý trí!","lastmod":"2025-03-29","duration":"04:04:05","url":"/play/19024662.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MjEvZmFjNDk5MDNkNzJiYzRjNmNmOTU5ZTYzMzcwMjEwMGMuanBn.cache","vod_id":19096452,"title":"[Được sự cho phép của chồng] Phụ nữ đã kết hôn NTR 03: Những người vợ cuồng nhiệt tình dục bị ngủ cùng và bị trừng phạt (Nữ diễn viên không rõ danh tính TCHB033)","lastmod":"2025-09-20","duration":"03:57:32","url":"/play/19096452.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvODM2YTk5NzY2YjBkNjkxYjcxY2Q4MGQ1MWRlNzFhN2QuanBn.cache","vod_id":19141333,"title":"Một người đàn ông tên Diao Ge (屌哥) đã bỏ ra 3000 nhân dân tệ để gọi gái gọi, sau đó quan hệ tình dục với một người mẫu bán thời gian trên Taobao. Cuộc gặp gỡ bắt đầu bằng màn dạo đầu trên ghế sofa và sau đó là nhiều tư thế khác nhau trên giường.","lastmod":"2026-05-05","duration":"01:15:05","url":"/play/19141333.html"}]},
videoTitle: 'Vợ của nam diễn viên Kim Ga-yu, Shi-yeon, bị phanh phui chuyện ngoại tình với trẻ vị thành niên trong thời gian cô đang mang thai.',
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=/`;
}
};
}