Người phụ nữ giàu có đó có ngon không? Môi trên, lưỡi và môi dưới của tôi ngứa quá. Tôi không muốn ai liếm tôi. Anh có muốn quan hệ tình dục không? Anh có muốn liếm âm đạo của tôi không?","lastmod":"2026-07-11","duration":"","url":"/play/19206659.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZmQxZDhkMTJiMDkyMzExNzc1OWZjOWEyYmQ2OTA1N2UuanBn.cache","vod_id":19173971,"title":"Một nữ sinh viên đại học lẳng lơ đã quan hệ tình dục với anh trai của bạn trai mình trong khi chụp ảnh tự sướng. Hành động của cô ta thực sự là một sự sỉ nhục lớn.","lastmod":"2026-01-14","duration":"0:13:59","url":"/play/19173971.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTFlY2RjOGZiMzM4M2QzZTIyZmQzZTU2ZGRiYjQ4ZjQuanBn.cache","vod_id":19116732,"title":"MUDR079 Từ ngày đó trở đi... sự tỉnh giấc đầy khó khăn của cô gái xinh đẹp Kururugi Aoi, người bị trói và mang thai trong bộ đồng phục.","lastmod":"2025-03-26","duration":"1:58:55","url":"/play/19116732.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYmU5ZDliNDkzZGVmMWM1NWFhNjIwMzNiYWMwOWI2MzEuanBn.cache","vod_id":19096353,"title":"Một nữ giáo viên lớn tuổi muốn thử điều gì đó mới lạ – bà ấy tự nguyện để bị trói, bịt mắt và trải qua khóa huấn luyện tình dục cường độ cao; đó là một trải nghiệm vô cùng kích thích!","lastmod":"2025-03-26","duration":"0:49:54","url":"/play/19096353.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODA4N2VkNWFhMzkzYTZkNDQxZDcyMTM0NmI3ZjIxY2YuanBn.cache","vod_id":19117514,"title":"Một người phụ nữ gợi cảm với tất đen và vòng mông tuyệt đẹp bị còng tay và chịu sự xâm hại không an toàn của một dương vật khổng lồ...","lastmod":"2025-03-26","duration":"0:21:34","url":"/play/19117514.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZmIyYjM5ZmY1ZGQ5M2U2ZTc0MjNjYjk5NWNkYmM0MGIuanBn.cache","vod_id":19198181,"title":"Sinh viên trường Cao đẳng Kỹ thuật và Dạy nghề Năng lượng Thiểm Tây thực sự biết cách tận hưởng cuộc sống! Quan hệ tình dục ngoài trời theo kiểu \"doggy style\", đầy đam mê!","lastmod":"2026-05-11","duration":"0:01:18","url":"/play/19198181.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjllZjEyMDBjZjZjZjBlOGJjMzk2YjU1MmRmY2Q2MmUuanBn.cache","vod_id":19069391,"title":"Cô gái 19 tuổi với bộ ngực lớn, hồng hào, khẽ hát về hương vị của chuyện ái ân.","lastmod":"2025-03-26","duration":"0:05:16","url":"/play/19069391.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MTEvMGEzM2FjNmQzMjg0MWJiMWQzNTFkYzFlZmQ4MGI4MWYuanBn.cache","vod_id":19153864,"title":"Đào tạo một tiếp viên hàng không xinh đẹp","lastmod":"2025-09-10","duration":"0:22:10","url":"/play/19153864.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYTMzNDNhZTZjN2M5Zjg1M2YxMTg2MzAyYjdkYTgzMGIuanBn.cache","vod_id":19177409,"title":"Những nữ sinh viên đại học hàng đầu Trung Quốc, chuyên bóc lột tình dục, tất cả đều là những gái điếm vừa mới mất trinh.","lastmod":"2026-01-31","duration":"0:48:14","url":"/play/19177409.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjg1YjlhYWI4ZmVlODVjZmFlN2JlYzYzMWE1N2RjN2MuanBn.cache","vod_id":19061675,"title":"Shiori Kanzaki, cô gái có vòng ngực cỡ G, chuyên tắm bọt cao cấp.","lastmod":"2025-03-26","duration":"2:45:41","url":"/play/19061675.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMTcvMWFiMGVhMmU0ZWY3ZGZlNTY3MWJhYzIwYjU0NGFlNjguanBn.cache","vod_id":19164748,"title":"[Dịch vụ đón khách tại nhà tắm chân] Dùng số tiền lớn để lừa đảo một nữ kỹ thuật viên đã kết hôn, mặc quần tất đen.","lastmod":"2025-11-16","duration":"0:37:41","url":"/play/19164748.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDIzZDAzYjE5YjllYzA3YjIyNGZkMzhmNjU5NjhiZTMuanBn.cache","vod_id":19186774,"title":"[4K] Chuyện ngoại tình của sếp đã có chồng: NTR và kỷ luật trong phòng kế bên. Sếp đã có chồng của tôi, người mà tôi ngưỡng mộ từ khi mới vào nghề, lại đang ở phòng kế bên… và rồi tôi… MADM-214","lastmod":"2026-03-16","duration":"2:27:12","url":"/play/19186774.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9zYnp5dHBpbWc0LmNvbTozNTE5L3VwbG9hZC92b2QvMjAyNjAyMTgtMS8zMjhlMzE4MDQxMTJmMGZkMmIxZTMwNDJjZDNkODdkZC5qcGc=.cache","vod_id":19180963,"title":"Thông tin độc quyền bị rò rỉ: Vụ bê bối ngoại tình của bà mẹ nổi tiếng Lee Do-yeon bị bại lộ; ảnh chụp cận mặt, cảnh quan hệ tình dục bằng miệng và nhiều hơn nữa.","lastmod":"2026-02-18","duration":"0:12:42","url":"/play/19180963.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMzMxNzRlODE2YmVkNWEzZDg1MGE2Yjk1ZTViN2IxYzQuanBn.cache","vod_id":19179162,"title":"Tiếp viên hàng không của hãng China Southern Airlines bị một người đàn ông giàu có xâm hại tình dục sau khi tan ca.","lastmod":"2026-02-08","duration":"0:01:31","url":"/play/19179162.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9zYnp5dHBpbWc0LmNvbTozNTE5L3VwbG9hZC92b2QvMjAyNjAzMTUtMS80ODkyNjhlN2RlNDNjZjBlNGRkMTZmZjhiMjRkOGQ3ZS5qcGc=.cache","vod_id":19186693,"title":"Bộ sưu tập đầy đủ nhất các video của những người nổi tiếng trên Douyin (TikTok) với hình ảnh những nữ thần da đen quyến rũ, trái ngược nhau; vợ bạn bị lôi ra đường và bị ép tham gia huấn luyện BDSM.","lastmod":"2026-03-15","duration":"0:52:51","url":"/play/19186693.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZGM2NTU1M2RjNzczMjM2NTIwYTRmNjc5YmUwMDc4ZTUuanBn.cache","vod_id":19113763,"title":"Chuyện lạ xảy ra ở Hà Nam! Một người cha béo và cô con gái béo của ông ta bị bắt quả tang đang quan hệ tình dục tại nhà.","lastmod":"2025-03-26","duration":"0:24:32","url":"/play/19113763.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzU3MTk2Zjk0ZjVlZWRjZWJhOTBhNDU4ZWQ4NTlmYTMuanBn.cache","vod_id":19033381,"title":"ADN-359: Câu chuyện về việc quan hệ tình dục với một người vợ giản dị, ngực lớn, làm việc tại tòa thị chính. (Kusakabe Kana)","lastmod":"2025-03-26","duration":"1:48:25","url":"/play/19033381.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MTEvM2QzMzAxYjY4OThiOWQyNzUzMDAwNjYyZDFhODNjOTIuanBn.cache","vod_id":19209450,"title":"Thuần hóa một người phụ nữ trưởng thành, cô đơn, chân dài, thuộc tầng lớp thượng lưu.","lastmod":"2026-07-19","duration":"","url":"/play/19209450.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMWVjNzhmMThhNTdjZWEwODk2ODU4YTdkNjY3M2QzMWMuanBn.cache","vod_id":19084477,"title":"[Nữ thần trực tuyến] Cô nàng nóng bỏng tán tỉnh bạn bè nam, quan hệ tình dục bằng miệng với một anh chàng đeo mặt nạ có dương vật to, rên rỉ và lẳng lơ, chủ động dẫn dắt, thúc mạnh vào anh ta từ phía sau và thể hiện những biểu cảm dâm đãng, khiêu gợi của mình.","lastmod":"2025-03-26","duration":"1:00:09","url":"/play/19084477.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMDIvMjU4NDFmNDEyYzRiMGRkYjAzMWQ3MzUzNmIxYzgxNTMuanBn.cache","vod_id":19157418,"title":"Màn quyến rũ thực sự của tình dục ngoài trời - Nữ thần nổi tiếng trên mạng quyến rũ một người đàn ông 70 tuổi ngoài trời, tham gia vào các hoạt động như fetish chân và quan hệ tình dục bằng miệng.","lastmod":"2025-10-01","duration":"1:35:07","url":"/play/19157418.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMzliY2M5MmNjZTM1NjczMzEyNjE4NjM1MWVhNGRmMjUuanBn.cache","vod_id":19033022,"title":"[Cô Y Tá Thỏ Nhỏ] Một ví dụ có thật về một nữ y tá mới tốt nghiệp từ một bệnh viện hàng đầu, với thân hình quyến rũ, lần đầu tiên quan hệ tình dục với bạn trai của mình – một sự tương phản thực sự cực đoan.","lastmod":"2025-03-26","duration":"0:21:30","url":"/play/19033022.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MTgvOGZlNjVlMjVlODZjOWFlNDQ3MDkyZGY2MGFkYTU3MTcuanBn.cache","vod_id":19139826,"title":"Những người đẹp chân dài, chất lượng cao, giá trị tuyệt vời, thích hợp cho quan hệ tình dục không ràng buộc; họ thực sự bền bỉ.","lastmod":"2025-06-18","duration":"0:30:39","url":"/play/19139826.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMDBlOTdhYzllZTViM2ZhYzU1OWMwZTRkZmIxYTQzYTguanBn.cache","vod_id":19199708,"title":"Một nữ diễn viên phim người lớn đã không quan hệ tình dục hay được chụp ảnh trong 300 ngày. Khoảnh khắc lưỡi của họ chạm vào nhau, một điều kỳ lạ đã xảy ra... (Phần còn lại của văn bản dường như không liên quan và có thể là những đoạn văn vô nghĩa do máy tính tạo ra.)","lastmod":"2026-05-18","duration":"2:27:33","url":"/play/19199708.html"}]},
videoTitle: 'Buổi huấn luyện SM dành cho một cô gái mèo con hàng đầu trong tất đen, trói buộc, cuồng chân, tình dục và thâm nhập – cực kỳ kích thí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=/`;
}
};
}