≪Quan hệ tình dục tiết kiệm thời gian trước khi trả phòng≫Tôi đã quyến rũ một nữ nhân viên khách sạn xinh đẹp đã kết hôn đến dọn giường…Cả khách hàng và nhân viên đều là nam giới. (Furukawa Honoka, Nghiệp dư hạng S)","lastmod":"2026-07-11","duration":"02:37:08","url":"/play/19167473.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDYxZWFmYjhlMWU0NDhhMzE0MDg5NWRiMzU5NjhiZDIuanBn.cache","vod_id":18960909,"title":"NACR-621 Nữ diễn viên Yukio Hasegawa, người yêu thích tinh dịch, lần đầu tiên làm gái gọi!? Cung cấp dịch vụ trọn gói cho những người đàn ông nghiệp dư!","lastmod":"2025-12-14","duration":"02:10:56","url":"/play/18960909.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTM5MjgxY2Y4MDdjZjQ4OWViMjI1YzEzZWM3MDQ2MjMuanBn.cache","vod_id":18985099,"title":"FC2PPV 3808880 [Ưu đãi giới hạn thời gian 500 điểm] Cô vợ trẻ cuối cùng cũng hoàn thành việc quay phim phiên bản đầy đủ sau hai lần thoát hiểm vào phút chót.","lastmod":"2025-03-23","duration":"01:03:51","url":"/play/18985099.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTQ2NTNhOWVmZGQ2NzIwMDFlYmFiODhkNDdjYzZmOTguanBn.cache","vod_id":19012116,"title":"Tôi muốn chơi đùa với bộ ngực đồ sộ của bạn sau khi chơi với con chó của tôi.","lastmod":"2025-03-24","duration":"01:01:50","url":"/play/19012116.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMmU4ZGI5NDlhOWViYWQ2N2U1NWJlZDY0MDg1ODY2ZjUuanBn.cache","vod_id":18975876,"title":"[Phụ đề tiếng Trung] HMN-372 Chuyến Tàu Biến Thái NTR: Hôm qua, người phụ nữ biến thái đó là vợ của sếp tôi. Tôi ghét cô ta đến nỗi tôi đã chơi đùa với vòng ba to lớn của cô ta và xuất tinh vào bên trong cô ta cho đến khi cô ta lên đỉnh. (Mina Kitano)","lastmod":"2025-03-23","duration":"01:59:46","url":"/play/18975876.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvYTg0NWI5NmNiMjEyNzhkMzM2YjJiMjNkMzcxY2I2NjguanBn.cache","vod_id":19163083,"title":"Một cặp vợ chồng điều hành một cửa hàng hoa di động cố gắng để vợ ngoại tình với một người lạ và sau đó khiến cô ấy mang thai bằng [Kích thích xuất tinh tức thì 10 piston]. Aozora Hikari SOD","lastmod":"2026-07-11","duration":"02:14:47","url":"/play/19163083.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDZiYzUyZWQzNzc0ZGUyOGFjYTBkNGQ4M2RjYTRmNTAuanBn.cache","vod_id":19134972,"title":"Nông dân cũng muốn quan hệ tình dục! Những ham muốn bị kìm nén của họ cuối cùng cũng bùng nổ! 12 người phụ nữ nông thôn, không thể kiềm chế được bản thân, trong 4 giờ... (Diễn viên không rõ danh tính, MBMA-076)","lastmod":"2025-12-24","duration":"04:00:54","url":"/play/19134972.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMzhmNjVjNjkwMTgzZGQ3MjNmNmU5YTkwNmUyNjcxZjIuanBn.cache","vod_id":19137853,"title":"Một câu chuyện khiêu dâm về việc quan hệ tình dục với một người phụ nữ trung niên xinh đẹp và quyến rũ trong phòng tắm hơi ở Tokyo... Với sự tham gia của Reiko Kobayakawa, Iroha Narimiya, Chisato Shoda, v.v. ODVHJ-065","lastmod":"2026-01-11","duration":"02:39:18","url":"/play/19137853.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMmY1YzVmMjRmZmY5ZjE3MDA3ZTkyMDZlMmRiYWI0Y2QuanBn.cache","vod_id":18967317,"title":"[Phiên bản chưa cắt] SSIS-776 Ông chủ khó chịu của tôi đã quấy rối tình dục tôi và sắp xếp cho tôi ở chung phòng với người khác trong khi tôi đang đi công tác... Tài khoản xem phim khiêu dâm bí mật của cô đồng nghiệp ngực khủng mới của tôi đã bị lộ, và chỉ sau một đêm, cô ấy trở thành một món đồ chơi tình dục.","lastmod":"2025-12-14","duration":"02:33:59","url":"/play/18967317.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzJhZmVjOTY5MzI3NDZjYjEzNmNjMDA4NWQxZWUxMjcuanBn.cache","vod_id":18988562,"title":"GDHH-176 \"Anh sẽ không buông em ra cho đến khi anh xuất tinh vào trong em!\" Chỉ vào ngày rụng trứng! Khao khát có thai! Cuộc tấn công không ngừng nghỉ của người vợ trẻ vào tường! Cú đấm mạnh mẽ của cô ấy xuống sàn! Chuyển động như pít-tông của quá trình thụ tinh!!","lastmod":"2025-12-14","duration":"02:36:00","url":"/play/18988562.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOGE0NjJmZWFiMzEyNjY2MGEyZTNmM2U4NjVlOWIzMDQuanBn.cache","vod_id":18980456,"title":"FC2PPV 3601852 Tôi đưa cô bạn gái siêu dễ thương với vòng một cỡ F của bạn tôi về nhà, rồi ngoại tình với người khác. Tôi khiến cô ấy lên đỉnh nhiều lần, thậm chí còn khiến cô ấy xuất tinh vào trong tôi. \"Tôi sắp xuất tinh rồi!\"","lastmod":"2025-12-14","duration":"00:27:03","url":"/play/18980456.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzQyMzVlMGZmNWFhNGRhMzJmN2VlZWIxYzNlNWVlZjcuanBn.cache","vod_id":18969989,"title":"Đôi gò bưởi trắng nõn, to lớn của cô gái mũm mĩm đung đưa dữ dội, thu hút sự ngưỡng mộ của các chàng trai bằng những bức ảnh cận cảnh vùng kín nhỏ nhắn, hình cánh bướm của cô.","lastmod":"2025-12-14","duration":"00:52:23","url":"/play/18969989.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MTgvMDQyNDYxOTg1NzcyMTk3YTNmMjdjMTEyNTJhM2EyZjEuanBn.cache","vod_id":19034084,"title":"CHERD096 \"Bạn có phiền không nếu lần đầu tiên của tôi là với một người phụ nữ lớn tuổi hơn?\" Lần quan hệ tình dục đầu tiên giữa một người còn trinh và một người phụ nữ đã kết hôn, trưởng thành.","lastmod":"2025-05-18","duration":"02:07:23","url":"/play/19034084.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvM2I0ZTk5Mjc5ZmVkM2UxNWJhYTUxYzY3Y2QxZTI2ZWYuanBn.cache","vod_id":18951019,"title":"HUNTA-634 \"Có lẽ...anh không thực sự có ý định mời em, phải không?\" Một người vợ trẻ làm việc bán thời gian tại cửa hàng tiện lợi.","lastmod":"2025-12-14","duration":"02:43:59","url":"/play/18951019.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvYTg5NGZmMmU3N2U0NmI2MmQ0NzU2YTRiNjg5MTZlYTUuanBn.cache","vod_id":19159240,"title":"Em yêu, cho phép anh tự giới thiệu với em. Một phụ nữ Hokkaido với quầng vú trắng, vòng một cỡ L ngoại cỡ, một thiên tài trong chuyện \"oral sex\" – NPJ.","lastmod":"2026-05-21","duration":"02:12:39","url":"/play/19159240.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MTEvOGE1Y2NhOGYwMDQxZTFkMmU0ZGY0NDU3NjU1YmNhYmEuanBn.cache","vod_id":19168145,"title":"Ngoại tình, lừa dối, quan hệ tình dục trong xe, vợ của bạn tôi lái xe đưa chồng ra sân bay, rồi họ quan hệ tình dục trong xe trên đường cao tốc.","lastmod":"2026-07-13","duration":"11:15","url":"/play/19168145.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTNkM2I5NDA5ZTM1MWQ1ZmU5ODhmZDFhOGI4MmU1NTYuanBn.cache","vod_id":18949548,"title":"[Nữ diễn viên Nhật Bản] MIST-308 Một cửa hàng xà phòng nơi bạn có thể sinh con vào những ngày nguy hiểm 22 Yui Tano 13/08/2020 Yui Tano Độc thân Nữ Khác Yu Khác-132","lastmod":"2025-12-14","duration":"02:41:38","url":"/play/18949548.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvN2M3YzU5MDdhY2JkYWFjYWNhNzE3ZGVmYWExMmViZWEuanBn.cache","vod_id":18979393,"title":"[Phiên bản chưa cắt] MIDE-273 Lần đầu tiên lên đỉnh! Chinami Ito","lastmod":"2025-12-14","duration":"02:27:13","url":"/play/18979393.html"}]},
videoTitle: 'Lạm dụng quyền lực: Vợ tôi bị ông chủ đáng ghét của tôi quyến rũ. Với sự tham gia của Ayano Kato, Kaori Iiyama và Hijiri Maihara, NSFS-418',
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=/`;
}
};
}