Người vợ đức hạnh trở thành vật tế thần và nô lệ tình dục. Oishi Saki bị cưỡng hiếp dã man và bị xuất tinh vào bên trong.","lastmod":"2026-07-11","duration":"","url":"/play/19245902.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MTIvMjhkM2E2ZjNjZWRhMWFjNDVkODE2MWRhYTRmODAxZTMuanBn.cache","vod_id":19176382,"title":"Nữ thần hàng đầu Dương Mịch hóa thân thành người phụ nữ dâm đãng: câu chuyện có thật về cuộc truy tìm khoái lạc điên cuồng của cô tại văn phòng với chiếc quần tất đen.","lastmod":"2025-05-12","duration":"07:04","url":"/play/19176382.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMjJjOTRhM2E4ODkyODRkN2Y5ZTZmM2JlNjcyYjRmNDUuanBn.cache","vod_id":19225274,"title":"MIDA-495 Cô hầu gái ngực khủng Shiraishi Nami bị chủ nhân cưỡng hiếp đến cực khoái và không kiểm soát được bàng quang, âm đạo cô co giật và cầu xin sự thương xót khi hắn xuất tinh vào bên trong cô.","lastmod":"2026-03-30","duration":"2:04:09","url":"/play/19225274.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MDUvNTMyODVlZGQ3MjNjY2MwNDY5ZjI3MGVlMWVhYjM0YzQuanBn.cache","vod_id":19243980,"title":"Ham muốn riêng tư 1: Một người phụ nữ đã kết hôn đầy dục vọng có một cuộc tình vụng trộm vào đêm khuya, với bộ ngực đồ sộ bị cưỡng hiếp dã man cho đến khi cô không thể kiểm soát được bàng quang.","lastmod":"2026-07-05","duration":"0:29:45","url":"/play/19243980.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNzhhN2E5ZjE5MTVjODA1NzRlZDA2MDFiYzI5NjFiODAuanBn.cache","vod_id":19212334,"title":"Vớ đen và giày cao gót, một người đẹp nóng bỏng với vòng ba căng tròn! Đôi chân dài, bờ vai gợi cảm, không dùng bao cao su, quan hệ tình dục hoang dã, oral sex và xuất tinh cùng một lúc.","lastmod":"2025-12-31","duration":"1:01:25","url":"/play/19212334.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvOWQxNzZiM2NmNGNlZDg4MmYxYWRkODJiY2U1YmVkOWQuanBn.cache","vod_id":19218290,"title":"START-450 Một nữ nhân viên văn phòng say xỉn bị đồng nghiệp cưỡng hiếp dã man suốt đêm, không hề hay biết mình trở thành món đồ chơi để hắn ta hôn hít. Cô ta lao vào cuộc sống trụy lạc tại một khách sạn cho đến rạng sáng.","lastmod":"2026-02-17","duration":"2:12:30","url":"/play/19218290.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvY2ZiNDAxMGJmN2EzYTdhMGVlZDIzMjFkYTE0MTgyMjguanBn.cache","vod_id":19231468,"title":"SARA LUVV đã bị James Dean cưỡng hiếp một cách dã man! Âm đạo của cô ta đầy tinh dịch, và con điếm đó đã nuốt trọn hết chất dịch màu trắng đó!","lastmod":"2026-04-29","duration":"0:11:04","url":"/play/19231468.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MjMvZTU2NzlkZTgxZjQ3YmMzMTI0ZmU5NGE2ZTJmYzYxODAuanBn.cache","vod_id":19242309,"title":"Cô gái trẻ ngực lớn, thân hình đồng hồ cát, bị cưỡng hiếp dữ dội đến mức âm đạo xuất tinh.","lastmod":"2026-06-25","duration":"0:24:10","url":"/play/19242309.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvYWE0ZjI1ZGMwZjc0OTlkM2FkMzU3YzNhMmQzYmNhMDMuanBn.cache","vod_id":19236567,"title":"Một người mẫu bị bắt quả tang quay phim lén lút cảnh quan hệ tình dục và bị xuất tinh vào bên trong cơ thể! Người mẫu bị phát hiện đang quan hệ tình dục và bị xuất tinh vào trong người.","lastmod":"2026-05-21","duration":"0:51:26","url":"/play/19236567.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvODE2NzZiZWYyOWNjY2U2MTAxMzBiZGZhOGFkYzY5MGIuanBn.cache","vod_id":19234425,"title":"Chunyang Menghua bị chính con trai mình cưỡng hiếp dã man, trở thành đồ chơi tình dục của hắn. Hắn ta liên tục hãm hiếp và xuất tinh vào trong người bà mỗi ngày.","lastmod":"2026-05-16","duration":"1:58:48","url":"/play/19234425.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMjEzYjE3NDM4ODdkYjRkZDcwODYzYTUzZjY2NDAzNDUuanBn.cache","vod_id":19231446,"title":"Người đẹp Dilraba Dilmurat bị hoán đổi khuôn mặt và bị cưỡng hiếp dã man! Âm đạo dâm đãng của cô bị lấp đầy tinh dịch một cách tàn bạo, và cô xuất tinh không kiểm soát trong lúc lên đỉnh!","lastmod":"2026-04-29","duration":"0:04:50","url":"/play/19231446.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYTZmM2QxZDM5N2MxZTBiNjZkNmIyMWVlOTVhODAyMWEuanBn.cache","vod_id":19224592,"title":"Ba chị em cùng chiến đấu với Lữ Bố, ba chị em quyến rũ thay phiên nhau tấn công một người đàn ông vạm vỡ, cả ba lỗ cùng mở ra đồng thời để xuất tinh bên trong.","lastmod":"2026-03-30","duration":"0:30:23","url":"/play/19224592.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDc3NjYzNDYzZTEyMGE0Njc1OGQyNWJiNDk4ODVkMGIuanBn.cache","vod_id":19227907,"title":"POVdreamsCOM - Niềm đam mê điện ảnh bùng nổ: Màn cưỡi ngựa khiêu gợi và xuất tinh lên mặt của \"ngựa cái\" hàng đầu LittleCaprice kết thúc.","lastmod":"2026-04-09","duration":"0:14:37","url":"/play/19227907.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZjZhMmMxNGQ0MDk0YzJjMmNjNDQ5Y2MxYTBhZmJjOWIuanBn.cache","vod_id":19216062,"title":"Vớ đen, mông cong, ngực to, gái hư, đang quan hệ bằng miệng với dương vật to, cưỡi lên trên và hút cạn tinh dịch của bạn trai.","lastmod":"2026-02-05","duration":"2:20:24","url":"/play/19216062.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvZGU4YWRiNGZjNzc4MjRjZjcwMjM4ZmQyMDEwMmQ5OGIuanBn.cache","vod_id":19241353,"title":"Hai cô nàng nóng bỏng bị một người đàn ông lớn tuổi tuyệt vời cưỡng hiếp dã man! Một tập đặc biệt với vô số cảnh xuất tinh và những màn quan hệ tình dục mãnh liệt liên tục.","lastmod":"2026-06-19","duration":"2:22:41","url":"/play/19241353.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMzEvZWYzOTZjNzVkMzU4M2UyOWY3YmYxM2VkMTU0OGZkODguanBn.cache","vod_id":19202195,"title":"Một chuyến đi hẹn hò đôi và một vụ ngoại tình bị phát hiện! Quá trình huấn luyện khắc nghiệt của bạn trai tàn bạo của người bạn cô đã dẫn đến việc Hinano Yuna đạt cực khoái trong một cuộc ái ân tàn bạo. FSDSS_915","lastmod":"2025-10-30","duration":"02:33:54","url":"/play/19202195.html"}]},
videoTitle: 'Mạnh Ruoyu biến thành Hằng Nga với vòng một đầy đặn, còn Hậu Nghệ thì nổi cơn cuồng nộ, xuất tinh vào bên trong và lên mặt cô ta!',
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=/`;
}
};
}