Chuyên gia săn tìm cửa hàng khám phá spa Golden Pool ở Macau, nơi có những cô gái ngực khủng cung cấp dịch vụ trọn gói 1400 RMB bao gồm massage, massage dầu, quan hệ tình dục và oral sex.","lastmod":"2026-07-11","duration":"27:10","url":"/play/19154275.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvM2NiNGY0N2E0YTQ2YmJmMjNiN2I1OTlmNmVjYjY1NDUuanBn.cache","vod_id":19058401,"title":"[Cô gái trẻ ngọt ngào] \"Em muốn anh trai em làm tình với em.\" Giọng cô ấy nhẹ nhàng và ngọt ngào. Quả dưa chuột thủy tinh ra vào, và cô ấy cứ nói những lời tục tĩu trong khi đang làm tình với cái âm đạo nhỏ bé dâm đãng của tôi. Tiếng nước bắn tung tóe rất lớn. \"Em không chịu nổi nữa, em ướt quá rồi.\"","lastmod":"2025-03-29","duration":"53:47","url":"/play/19058401.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMTVkZWZmYzMzMGZkN2NiYTQ0NTdkNmQwNzA5ZTEwNzQuanBn.cache","vod_id":18960613,"title":"Xiao Bao tìm một cô gái trẻ quyến rũ để quan hệ tình dục, và cô ta rên rỉ kêu lên: \"Ahhh, tôi không chịu nổi nữa, anh sẽ làm tình với tôi đến chết mất!\"","lastmod":"2025-03-28","duration":"33:18","url":"/play/18960613.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNWQ0Mzc0YmZhZjljNzk2ZjYxYzI1MTdhOTZjZmY2MjQuanBn.cache","vod_id":18973112,"title":"[Bánh trái cây] Một chiếc kéo chinh phục thế giới - Cô dâu xinh đẹp bị một người đàn ông cầm kéo làm nhục ngay trên sóng truyền hình trực tiếp 1","lastmod":"2025-03-28","duration":"09:16","url":"/play/18973112.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZWIyOTRjOTIxNGE5MWFlZDY1YTkxMjA0Nzc0NDlhMmYuanBn.cache","vod_id":19044451,"title":"Một nữ tiếp viên hộp đêm với hơn 80.000 người theo dõi trên ứng dụng phim ngắn PPE003! Một nữ diễn viên ngực khủng cỡ G ra mắt phim người lớn trong Higashi Akari.","lastmod":"2025-03-29","duration":"01:58:32","url":"/play/19044451.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvN2I0ODRkYzc2MmNmYTFmZTEwMTljNjM5YThiOWIwOTcuanBn.cache","vod_id":19141135,"title":"Sự sỉ nhục, nỗi ô nhục và một buổi hẹn hò ở thành phố nhộn nhịp với một chiếc máy rung điều khiển từ xa! 25 Ayaka Tomoda (Bạn của người nổi tiếng)","lastmod":"2026-05-04","duration":"03:05:05","url":"/play/19141135.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMTg3OTIzYThlMGM3NGY0ZGVlZWY3OTczODllZWJlMTMuanBn.cache","vod_id":19065977,"title":"MSD060 - Trang web chính thức dành cho những ai thích cảm giác làm nhục và chinh phục một người phụ nữ lạnh lùng và xa cách bằng vũ lực và lời đe dọa.","lastmod":"2025-03-29","duration":"31:29","url":"/play/19065977.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNzA0NTMwNTYyNGE3MmYyMTdlZjcwMTAyYTFmYWRmNWQuanBn.cache","vod_id":19134728,"title":"Một người đẹp nóng bỏng với vòng một đầy đặn và vòng ba gợi cảm khoe ngực và vùng kín trước ống kính, tham gia vào những màn tương tác đầy đam mê với những người hâm mộ nam. Mặc áo hai dây gợi cảm và tất đen, cô ấy thực hiện một điệu nhảy quyến rũ, trêu chọc họ bằng vòng ba căng tròn và những tiếng rên rỉ.","lastmod":"2026-04-03","duration":"38:15","url":"/play/19134728.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYWQ4Nzk2YjVjMWFjYjlmMjIwNGZkMGZhNDY0ZGMxMjQuanBn.cache","vod_id":19008653,"title":"[Hoán đổi khuôn mặt bằng AI] Dương Mịch, nữ thần, bị đánh thuốc mê và sa vào trụy lạc.","lastmod":"2025-03-28","duration":"51:38","url":"/play/19008653.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZjBhMTU2NzFlMTI2YWJiZTNmYzEyY2Y1MDRlOTdkZDAuanBn.cache","vod_id":19042789,"title":"Phiên bản giới hạn dành cho phụ nữ trưởng thành. Một phụ nữ trưởng thành đã vào phòng và bị quay phim lén lút. Phim AV đã phát hành. Cao 1m73, đôi chân đẹp mặc quần đen giữa hai đùi. Phiên bản dành cho phụ nữ trưởng thành. Cô Yurika #Cỡ ngực F #4 - Wara Yuka.","lastmod":"2025-03-29","duration":"03:04:22","url":"/play/19042789.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNzRlODkyNjc3OTllODVkZmM5ZDgxZDMyYjExNTg2OTIuanBn.cache","vod_id":19118372,"title":"Hai bộ ảnh riêng tư được chụp bởi Batm, một bậc thầy PUA (nghệ thuật tán tỉnh), OnlyFans và chuyên gia hẹn hò, với sự góp mặt của một phụ nữ trẻ có ngoại hình trái ngược.","lastmod":"2026-01-14","duration":"21:43","url":"/play/19118372.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMmQwOTkxM2EwZGVmY2MyN2JiZjUwZGZiOTVhMzU1ZjIuanBn.cache","vod_id":18960790,"title":"Xiao Ma Xun Hua (một trang web hẹn hò) đã sắp xếp cho một cô gái mại dâm hạng nhất, xinh đẹp quỳ trên ghế sofa và ưỡn mông ra.","lastmod":"2025-03-28","duration":"40:26","url":"/play/18960790.html"}]},
videoTitle: 'RBD-955 Cưỡng hiếp và làm nhục qua đường hậu môn: Hành vi tấn công tình dục qua đường hậu môn đồi trụy của Tổng thống - Mihina',
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=/`;
}
};
}