Cặp đôi trung niên tham gia trao đổi vợ chồng 4 người đầy nhiệt huyết: một kỷ lục có thật được ghi nhận bởi các phương tiện truyền thông chuyên về trao đổi vợ chồng.
RaizenStudio: Hai chị em Laura Lisa hàng đầu, thân hình đẫm mồ hôi, quan hệ tình dục cuồng nhiệt hai lỗ, liếm láp nhau đầy đam mê, dịch âm đạo chảy tràn.","lastmod":"2026-07-11","duration":"","url":"/play/19245434.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMWZjYzI1MTM3YTBkOGM3ZmIyNDE3MzMzNGNmN2I0YjEuanBn.cache","vod_id":19081553,"title":"\"Nguồn lực khan hiếm\" - Việc lộ mặt là chìa khóa! Những cuộc gặp gỡ thực sự với nhiều sinh viên trường nghệ thuật nổi tiếng trên mạng - sự tương phản cực độ - những cơ thể trẻ trung tràn đầy sức sống (8)","lastmod":"2025-03-29","duration":"00:21:28","url":"/play/19081553.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMTVmMDM3MGM4NjFkNzlhYjIxZmM5NmI1N2IzZTRiMDguanBn.cache","vod_id":19055130,"title":"Sự thật là, mỗi ngày tôi đều huấn luyện cái ông trung niên nhàm chán sống cạnh nhà mình. —Ichika Matsumoto","lastmod":"2025-03-28","duration":"","url":"/play/19055130.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMDMvNzM3YzA2ZjQ2NWE3ODJlZjZhOWRiMGE0OTE0NTQ1NGMuanBn.cache","vod_id":19197484,"title":"Một người phụ nữ đã kết hôn, đang khát khao tình dục, đã đề nghị một cuộc gặp gỡ nhanh chóng và nồng nhiệt, ngay lập tức thỏa mãn ham muốn cháy bỏng của chồng mình.","lastmod":"2025-10-02","duration":"21:14","url":"/play/19197484.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMmI1ZDc2OWVkZjA2N2M0NTliN2M4MTVlMGY2NDQ5NjEuanBn.cache","vod_id":19104540,"title":"START-089 NTR trong phòng chung sau khi trở về từ địa điểm quay phim. Một cô gái dự báo thời tiết, không thể về nhà vì tuyết rơi dày, bị quấy rối suốt đêm bởi sự bám víu của một đạo diễn trung niên xảo quyệt, khiến cô tiếp tục phát triển. Manami Yano 300 1 - Aima Yano","lastmod":"2025-03-29","duration":"","url":"/play/19104540.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvNDJkYTliMzQwNWI3NTZhY2Y2NmE0ODgzMGMyYWI5MTcuanBn.cache","vod_id":19208243,"title":"Căn phòng siêu hẹp ở Tokyo có màn \"quan hệ tay ba\" ngược! Hai chị em ngực khủng Mizuhara Misono và Himesaki Hana không hề hay biết mình đang tận hưởng những khoảnh khắc thân mật đầy đam mê. (DVMM_140)","lastmod":"2025-12-13","duration":"2:22:22","url":"/play/19208243.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNGZiODlmZjg1ODIzNzI4MGJkMzg1ODA5YjUwMmUyM2UuanBn.cache","vod_id":19121805,"title":"PRED-164 Một phụ nữ trẻ trở lại làm việc và liên tục mang thai với người quản lý trung niên của mình trong công việc bán thời gian đầu tiên. (Kirishima Leona)","lastmod":"2025-03-29","duration":"02:29:08","url":"/play/19121805.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNWYwNTNkMDk4MWU5OTBiMzljMTUwZjFmOGU3NWJlODcuanBn.cache","vod_id":19054671,"title":"[Gian hàng Trung Quốc] Một phụ nữ họ Li, một người nổi tiếng trên mạng và là gái gọi, đã bị bắt quả tang đang quan hệ tình dục cuồng nhiệt với một người đàn ông giàu có trong khách sạn. Cô tự mô tả mình là người có thân hình đẹp, nhút nhát và tình cảm, và nói rằng cô ấy rất ướt át.","lastmod":"2025-03-28","duration":"","url":"/play/19054671.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MTkvYTNhMTVjODM2MjMzMGRlNjZhMGY1M2I0ZjI2NGRlMTAuanBn.cache","vod_id":19190291,"title":"Màn hoán đổi khuôn mặt do AI tạo ra với hai chị em sinh đôi của Dilraba Dilmurat, màn ân ái cuồng nhiệt đêm Giáng sinh với những cao trào không ngừng nghỉ, tập tiếp theo còn dâm đãng hơn nữa!","lastmod":"2025-08-18","duration":"11:58","url":"/play/19190291.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMTUxYzVjOGU5MTg3ODI0N2Q0YjBjMjhiOGM3MWY5YTMuanBn.cache","vod_id":19163108,"title":"Jelly Media - Bạn gái cũ dâm đãng - Fan Keke","lastmod":"2025-03-29","duration":"37:14","url":"/play/19163108.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNTY0ZmJkYTU5MjZiN2E1NzNiYzc1ZDZhZTQ1ZGZjZDEuanBn.cache","vod_id":19137828,"title":"SSNI-639 Nữ diễn viên thanh lịch Riko Shiraha tham gia vào những nụ hôn nồng cháy, trao đổi nước bọt và đổ mồ hôi đầm đìa trong khi quan hệ tình dục.","lastmod":"2025-03-29","duration":"02:31:26","url":"/play/19137828.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMGUzMmFmM2ZmOTM3YTA3ZjI2NjRhOTRiYjYxNDg4ZWYuanBn.cache","vod_id":19230993,"title":"Niềm đam mê lúc nửa đêm! Âm đạo của nữ thần gái gọi hạng nhất mở rộng, cho phép bạn làm tình mạnh mẽ và xuất tinh vào bên trong cô ấy.","lastmod":"2026-04-26","duration":"0:33:04","url":"/play/19230993.html"}]},
videoTitle: 'Cặp đôi trung niên tham gia trao đổi vợ chồng 4 người đầy nhiệt huyết: một kỷ lục có thật được ghi nhận bởi các phương tiện truyền thông chuyên về trao đổi vợ chồng.',
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=/`;
}
};
}