Đồng phục thư ký OL, tất đen hở đáy, đôi chân đẹp, vòng ba gợi cảm, áo sơ mi trắng, quá gợi cảm, quá quyến rũ","lastmod":"2026-07-11","duration":"16:34","url":"/play/19152660.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvY2VmODk1YjA0MTEyOGY0YzYwMDVlYTNkMGZlMzI3ZGUuanBn.cache","vod_id":19059654,"title":"Một cô gái trẻ, ngây thơ và ngọt ngào, mới bước chân vào ngành công nghiệp giải trí người lớn, đang quan hệ tình dục với một người đàn ông lớn tuổi hơn. Cô ấy có thân hình quyến rũ với vòng eo thon gọn và vòng ngực đầy đặn. Những cảnh quay cận cảnh cho thấy cô ấy dang rộng chân và xoa âm vật. Cô ấy bị thâm nhập từ phía sau trong khi bị giữ chặt mông. Biểu cảm của cô ấy hướng về phía máy quay.","lastmod":"2025-03-19","duration":"17:42","url":"/play/19059654.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZmI1YTNhMTY2NTZmODU2MzYxYWVhNjNmYWY1MGJmNDguanBn.cache","vod_id":18994606,"title":"NKKD-328 Loạn luân dương vật lớn: Người mẹ bị cám dỗ bởi dương vật cứng, chưa cắt bao quy đầu của con trai","lastmod":"2025-03-19","duration":"02:00:32","url":"/play/18994606.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzQ3OGFiZjcxNjIxYmQwM2QzNWYyOTYzNjU2MTgzMzYuanBn.cache","vod_id":18941112,"title":"Màn trình diễn khiêu vũ quyến rũ của nữ MC Hàn Quốc ngực khủng.","lastmod":"2025-03-19","duration":"20:26","url":"/play/18941112.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMzNkYTMyMDBkODg3MGUyODMwYmM3NTk1NmVkOGFjNjQuanBn.cache","vod_id":19151375,"title":"Vẻ quyến rũ tột đỉnh của một người phụ nữ trưởng thành xinh đẹp tuyệt trần với đôi môi đỏ rực.","lastmod":"2026-06-20","duration":"53:43","url":"/play/19151375.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMTgvMWI5ZDM2OGNhNjBlNGQyMGRiNDJjYWZhNjU5MGI4YWUuanBn.cache","vod_id":19125260,"title":"Vụ bê bối trực tuyến đỉnh điểm: Video riêng tư của TS Zhang Sini bị rò rỉ, hoàn toàn gây sốc.","lastmod":"2025-10-18","duration":"01:08:57","url":"/play/19125260.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNDg4MWE4YWFlYTUwMDE5OTlmNDkxYWM0NzBiMDM5N2YuanBn.cache","vod_id":19034143,"title":"Tôi xoa bóp cho cô gái trẻ đến khi cô ấy không thể chịu đựng được nữa và lén lút chạm vào dương vật to lớn của mình. Cuối cùng, chúng tôi đã quan hệ tình dục.","lastmod":"2025-03-19","duration":"42:38","url":"/play/19034143.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOWExM2Y5NDYxNDAxYjY4OTM0ZmZjNjE3MTExOTI0NGMuanBn.cache","vod_id":18928855,"title":"[Sữa] Sau giờ học ~Đồng phục ướt sũng~ Hoạt động ngoại khóa 3","lastmod":"2025-03-19","duration":"31:36","url":"/play/18928855.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MTkvOGMyNTI3MjJlMzY3NTMxZTAxMmE2YThjY2U5YmVlMGUuanBn.cache","vod_id":19100838,"title":"#Xiao Qiao không bao giờ no_Một cô gái trẻ quyến rũ và xinh đẹp! Vén áo lên để bú vú! Đứng thẳng, cô ấy đang tận hưởng với đôi mắt nhắm nghiền, tư thế cưỡi ngựa kiểu chó 1_","lastmod":"2025-04-19","duration":"07:48","url":"/play/19100838.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNGU5YThmYTk3N2I5MDViYWZmNWVhODczMzk0ZWQ5NjguanBn.cache","vod_id":19000556,"title":"Một người phụ nữ cao ráo, trưởng thành với vẻ ngoài sang trọng bị một người đàn ông đeo mặt nạ tấn công tình dục. Hắn ta để lộ mặt cô trong khi cô đang nằm trên người một người phụ nữ có đôi chân dài và đi tất đen. Người đàn ông đeo mặt nạ răng sói và máy quay lia cận cảnh vào khuôn mặt cô, cho thấy một biểu cảm quyến rũ.","lastmod":"2025-03-19","duration":"01:28:32","url":"/play/19000556.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MjkvNjJhYmQxM2IwNDJkYjhkNTU4NTczZjYxODEyNTdlZmMuanBn.cache","vod_id":19114359,"title":"Một ngôi sao mạng xinh đẹp đến kinh ngạc! Một vẻ ngoài táo bạo và quyến rũ hiếm có! Quần lọt khe gợi cảm và vòng ba đầy đặn (1)","lastmod":"2025-07-29","duration":"09:34","url":"/play/19114359.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNGI0MjIwNGE5NDYzYzg1Y2M5YjU2MDliMDNkODQ3MDYuanBn.cache","vod_id":18945466,"title":"FOCS-132 Một cô gái năng động thích một chàng trai thụ động!? Một trinh nữ ngồi lên mặt cô ấy và bị ép phải xuất tinh! Quan hệ tình dục trần trụi và xuất tinh! Sự cám dỗ vẫn tiếp diễn.","lastmod":"2025-03-19","duration":"02:09:56","url":"/play/18945466.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MDgvMmVkZTNlMDRjOWMxZGM1MTI3ODgwN2Q5YmM2ODA0MGQuanBn.cache","vod_id":19099297,"title":"WABB-005 [VR] Mát-xa dầu vùng bikini siêu nhỏ của người đẹp tóc vàng - cd1","lastmod":"2025-04-08","duration":"42:28","url":"/play/19099297.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MjgvNGQ0MzlkOWNmYmEzNjc5NWFjYTU4YjA2ZDQyNGNiMGMuanBn.cache","vod_id":19118201,"title":"《1》Một người phụ nữ trẻ đã kết hôn xinh đẹp và ngọt ngào có một cuộc chiến đầy đam mê và thích ở trên và xuất tinh vào miệng.","lastmod":"2025-08-28","duration":"08:42","url":"/play/19118201.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMDMvZTRhZjQwMTMwZTEwMjkxMWQ0NjViMDRkMWIyMjcxMWUuanBn.cache","vod_id":19123412,"title":"Gã trai đường không thể cưỡng lại được việc liếm láp vùng kín hồng hào và mềm mại của cô gái trẻ đang được mát xa chân.","lastmod":"2025-10-03","duration":"29:44","url":"/play/19123412.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MDkvYTY0ZTcxNTYxYTkxOTliYzQ4Mjg1NzRhOWQ5Njc3ZmYuanBn.cache","vod_id":19115847,"title":"HODV-21979 [Số lượng có hạn] Sự quyến rũ giản dị và tao nhã của Fujisaki Murasaki: Tình mẫu tử và ham muốn tình dục (Bao gồm quần lót và ảnh)","lastmod":"2025-08-09","duration":"02:21:13","url":"/play/19115847.html"}]},
videoTitle: 'Mát-xa riêng cho cô gái trẻ, nhiều cám dỗ gợi cảm từ trang phục, quan hệ tình dục không an toàn liên tục.',
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=/`;
}
};
}