Cô gái nóng bỏng nhất, Hina, bị làm tình đến mức cực khoái. Núm vú của cô ấy cực kỳ nhạy cảm và cô ấy bị trêu chọc cho đến khi đạt nhiều cực khoái. Cô ấy bị cưỡng hiếp tập thể và bị bắn tinh dịch. Hazuki Hina. Bữa tiệc độc hại.","lastmod":"2026-07-11","duration":"","url":"/play/19267528.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZmRkZTZjMjc1ZjVlMTcwMWRkOGUzN2YyZTlkM2MzZTAuanBn.cache","vod_id":19109289,"title":"Một cô gái mới đến trông dễ thương và ngây thơ với thân hình tuyệt vời đã vén áo lên để lộ bầu ngực, quỳ trên ghế sofa và lắc mông.","lastmod":"2025-03-29","duration":"0:09:29","url":"/play/19109289.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZTFmN2RkNGM5ZmY5MDg4MWQ3NDcyYmM4MzIzZmU1ZWEuanBn.cache","vod_id":19141789,"title":"GIGL-706 Những bà nội trợ thích uống rượu một mình chắc chắn sẽ gây thêm áp lực cho chồng! ? Đặt món mang về và giao tận nhà tại Izakaya S","lastmod":"2025-03-29","duration":"4:00:12","url":"/play/19141789.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjBiYTA4MjZlZTk5MTYwYzY1MDA3NGM3NjBmN2I0YzguanBn.cache","vod_id":19117190,"title":"Một người cha bị bạn gái của con trai mình lạm dụng tình dục và bị ép buộc phải trải qua kích thích hậu môn và cực khoái tuyến tiền liệt khi con trai ông vắng nhà. (Sato Nonoka!)","lastmod":"2025-03-29","duration":"2:03:19","url":"/play/19117190.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MjkvOTc4NjRiOTE1ZmEyYWVlYTVlZWM3ODBhMTgyNzc0ZGQuanBn.cache","vod_id":19219612,"title":"Một cô dâu mới xinh đẹp với mái tóc dày và một người đàn ông trùm mũ có cuộc ái ân nồng cháy.","lastmod":"2025-08-28","duration":"0:44:20","url":"/play/19219612.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDIyZDU1YjZlZTYyMGRmYWVmM2I5MTM5ODUxZTcyZjkuanBn.cache","vod_id":19253632,"title":"KAWD-765 Cực khoái liên tục và mất tập trung, 3 hiệp quan hệ tình dục mãnh liệt, 160 phút không gián đoạn. CAWD-765-C","lastmod":"2026-04-12","duration":"2:30:31","url":"/play/19253632.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvY2U1M2RlZGZlYTcyNGU0MWIxZWJhNzAwMGNhZWU5OWMuanBn.cache","vod_id":19141304,"title":"Nữ diễn viên phim người lớn Trung Quốc MD0179, một diễn viên mới nổi, đã bị theo dõi và cưỡng hiếp.","lastmod":"2025-03-29","duration":"0:29:00","url":"/play/19141304.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOGEzNGQ0ZjBlYWU0ODkzNWIxMjkxZDY4ZTVhODMyNDQuanBn.cache","vod_id":19060688,"title":"MIFD-102 Bản giao hưởng của những cao trào mãnh liệt không bao giờ ngừng! Một hố sâu vô tận của dục vọng, một nghệ sĩ piano mông đẹp ra mắt AV! Mayu Nagisa (1) (1)","lastmod":"2025-03-29","duration":"2:46:05","url":"/play/19060688.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MTgvMmZhZTBiNDJkNTEyZDgzMWQ3YzhjY2ExNTdmYWUzMTEuanBn.cache","vod_id":19208512,"title":"MTALL102 [Quay phim 4K] Núm vú cỡ G phát triển vượt trội so với một số núm vú khác, cực khoái","lastmod":"2025-06-18","duration":"2:04:12","url":"/play/19208512.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzRlZWNmYTgyYjA5NTVlM2Q4ZTkwMzJlNjg1YWNjNTQuanBn.cache","vod_id":19126573,"title":"Otosan (26 tuổi), một phụ nữ đã kết hôn với vòng một cỡ F, thỏa mãn ham muốn tình dục của mình thông qua mối quan hệ ngoại tình với một người đàn ông lớn tuổi giàu có. [Người vợ trẻ năng động về tình dục trải nghiệm cực khoái cùng người đàn ông lớn tuổi]","lastmod":"2025-03-29","duration":"1:23:52","url":"/play/19126573.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOGE5ZmU3MjVhNjJiNTFlNzI2YThkODEyOTZlNjIyMWEuanBn.cache","vod_id":19043170,"title":"Tấn công nữ trợ lý đạo diễn đang tháo dỡ địa điểm quay phim — Oẳn Tù Tì! Ban sản xuất, Natsumi Nioka","lastmod":"2025-03-28","duration":"1:07:24","url":"/play/19043170.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MTQvYjI1ODZkZjFiNTE3NzQyMDJiZjRlYTIwY2NhNTQ4YTcuanBn.cache","vod_id":19222163,"title":"Cô ấy đã bị người chị gái độc ác và tàn bạo của mình thao túng, người đã trêu chọc và khiến cô ấy đạt cực khoái! #MiyataMaiMiyataMaiSGOR014","lastmod":"2025-09-13","duration":"1:35:14","url":"/play/19222163.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZTQ4ZWJiNDdmN2Y3NzNiNjcwMWUyZTlhYTBkYmI3MWUuanBn.cache","vod_id":19243808,"title":"\"Tôi sắp lên đỉnh rồi, đừng cử động!\" Anh ta tiếp tục đưa cô ấy lên đỉnh trong 14.400 giây! MIKR-065","lastmod":"2026-02-08","duration":"2:02:47","url":"/play/19243808.html"}]},
videoTitle: 'STARS-949 Một nữ diễn viên tân binh không thể về nhà kịp vì tuyết rơi dày đặc đã bị một đạo diễn trung niên xảo quyệt ép buộc phải đạt cực khoái.',
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=/`;
}
};
}