[Phụ đề tiếng Trung] JUQ-163 Bị quyến rũ bởi những lời nói ngọt ngào, anh ta cặp kè với một người phụ nữ đã có chồng cho đến khi phải học lại đại học… Tsumugi Kanara
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/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYmMyM2FjYTFiZTg0YTAwMTk0ODUzM2M4ZGUwMmMwMzYuanBn.cache","vod_id":19068626,"title":"[Phụ đề tiếng Trung] XVSR-506 Cảnh xuất tinh ngoài đời thực của Yu Shinoda","lastmod":"2025-03-28","duration":"01:50:26","url":"/play/19068626.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDQ0ZGZlZDYxMzAxN2Q1ZTgwYjVjZThjMjQ2ZmY0ZWMuanBn.cache","vod_id":19105397,"title":"HDKA-187 (HD) Bà nội trợ khỏa thân - Thành phố Hachioji Oura Manami (28) [Đã được đánh giá HD Phụ đề tiếng Trung].","lastmod":"2025-03-29","duration":"","url":"/play/19105397.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/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvY2NiZjdhNTUzZTgwZWZiMDM1NWU1MGY5OWRmZWU0Y2QuanBn.cache","vod_id":19084718,"title":"[Phụ đề tiếng Trung] JUQ-163 Bị quyến rũ bởi những lời nói ngọt ngào, anh ta cặp kè với một người phụ nữ đã có chồng cho đến khi phải học lại đại học… Tsumugi Kanara","lastmod":"2025-03-29","duration":"02:03:45","url":"/play/19084718.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzNhM2IxMmFkM2JhYzIyZjFhMzMwNTg4ZjY0YzM5NGEuanBn.cache","vod_id":19078150,"title":"Tuyệt phẩm kinh điển ❤️ [Học viện Nghệ thuật] Tất cả sinh viên đều xuất hiện trên màn hình, tất cả đều là những nữ sinh viên trẻ trung, xinh đẹp ❤️ Thật thú vị khi xem (Phần 2)","lastmod":"2025-03-29","duration":"00:16:27","url":"/play/19078150.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmM2ODEyMTg2NWJiMDQ4MDAxN2EzNDY4MmUwNTRlNTEuanBn.cache","vod_id":19153648,"title":"300NTK293 Một cuộc phỏng vấn xin việc khẩn cấp với một nữ sinh viên đại học xinh đẹp trong bộ vest công sở với vòng ba săn chắc!! Cô ấy là một sinh viên đang tìm việc, khơi gợi dục vọng của người phỏng vấn bằng chiếc áo ngực màu đỏ trong suốt và quấy rối tình dục anh ta! Một cuộc chiến tìm việc đầy dục vọng giữa một người phỏng vấn biến thái và một nữ sinh viên đại học lẳng lơ!! Hãy tận hưởng bộ phận sinh dục không lông trong một cuộc kiểm tra tình dục thực tế!! : Khách sạn tình yêu 060 (0001) có giá bao nhiêu...","lastmod":"2025-03-29","duration":"01:16:14","url":"/play/19153648.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDcxMzllOWVlYTY4NmJjYzQyNTI5ZjI4NDdjNTRiYmUuanBn.cache","vod_id":19167730,"title":"Sau một tháng kiêng cữ, trong khi bạn gái tôi đi vắng, tôi đã quan hệ tình dục với em gái cô ấy tám lần, xuất tinh vào trong cô ấy mỗi lần, cho đến khi cô ấy có thai.","lastmod":"2025-03-29","duration":"02:36:50","url":"/play/19167730.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MjIvNWJiNzA3YjljMjFiNDI1MTg2ZjliNzkyNGY1OGYyNWYuanBn.cache","vod_id":19177585,"title":"Kỷ luật cưỡng bức đối với phụ nữ đã kết hôn—Một vòng luẩn quẩn của sự sỉ nhục và tra tấn","lastmod":"2025-05-22","duration":"29:01","url":"/play/19177585.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzVjYjk3YWI1NjAxZThjOGYyMzkxZDMwMTM5ZTc0YmMuanBn.cache","vod_id":19109153,"title":"- [Lần đầu tiên quay phim] [Một người phụ nữ đã kết hôn không có đời sống tình dục và vô đạo đức...] [Cô giáo xinh đẹp] Một người phụ nữ đã kết hôn dịu dàng và xinh đẹp có quan hệ tình dục mãnh liệt với người đàn ông cô vừa mới gặp... Đăng ký trực tuyến → Trải nghiệm quay phim với ông Okukawa, một giáo viên tiểu học 20 tuổi (loạn luân).","lastmod":"2025-03-29","duration":"","url":"/play/19109153.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWY3NThiYjRjNGY5N2JlNzU1NDgzMTU0NGVmZDEyZjMuanBn.cache","vod_id":19113727,"title":"MBRBA-040 Mami Tosaka có màn ra mắt gợi cảm tại cuộc thi Hoa hậu Đại học Grand Prix!","lastmod":"2025-03-29","duration":"01:32:55","url":"/play/19113727.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTkzNGZkOTBjNjZjYWZhODlmMjdjZWEwMDBmNzFiYzcuanBn.cache","vod_id":19034339,"title":"[Phụ đề tiếng Trung] JPSB-005 Tài liệu phơi bày tình dục thực sự! Gương thần","lastmod":"2025-03-28","duration":"02:40:27","url":"/play/19034339.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMDkyMjA5NDdjODM5N2Q4OThjMTE2NmUwNGRiNWJhOGQuanBn.cache","vod_id":19072380,"title":"[Phụ đề tiếng Trung] IPZ-527 Minami Nami 180 Điểm Phim Sex Cao Cấp Nguyên Bản 4 Phần + Salon Hồng","lastmod":"2025-03-28","duration":"02:12:07","url":"/play/19072380.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNWRkMDUxNmYxZDAxM2MxYzM3MWM5ZWUyODhkMmJmYWYuanBn.cache","vod_id":19035141,"title":"[Phụ đề tiếng Trung] MCSR-376 Người vợ đảm đang bị làm nhục trước mặt chồng... Shiiba Miku","lastmod":"2025-03-28","duration":"02:09:42","url":"/play/19035141.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjY5ZmM0ZmVjNDM3MjE2MmI2YzQ4MTYyZmMyYjdkMjMuanBn.cache","vod_id":19036049,"title":"[Phụ đề tiếng Trung] MUDR-092 Vì không thể về nhà tìm sân tập cho đội bóng chày nên tôi đã đi cùng chuyên gia tư vấn.","lastmod":"2025-03-28","duration":"02:17:30","url":"/play/19036049.html"}]},
videoTitle: '[Phụ đề tiếng Trung] JUQ-163 Bị quyến rũ bởi những lời nói ngọt ngào, anh ta cặp kè với một người phụ nữ đã có chồng cho đến khi phải học lại đại học… Tsumugi Kanara',
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=/`;
}
};
}