Uống rượu làm tăng ham muốn tình dục!! Quan hệ tình dục NTR với 8 người vợ của bạn bè. Diễn viên bao gồm Ichijo Kimika, Enjo Hitomi, Shindo Nozomi, v.v. Dự án KSB - Emaniel","lastmod":"2026-07-11","duration":"04:03:20","url":"/play/19163495.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9hLjE1NTEyMTAudG9wLzIwMjUxMTI3L2cxQ2Rnak4yLzEuanBn.cache","vod_id":19066614,"title":"Kuramoto Sumire, một cô nàng lẳng lơ thích cạnh tranh và sử dụng ngôn từ khiêu gợi để quyến rũ người khác. Kuramoto Sumire KYMI_044","lastmod":"2025-12-14","duration":"02:05:10","url":"/play/19066614.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNmM2YTNhZTM4YWNiMGRlZjZhODcwY2EwNzVhMmE1OWYuanBn.cache","vod_id":19026349,"title":"[Miệng của em gái tôi tuyệt nhất, phải không?] Những lời thì thầm dâm dục bên tai, liên tục liếm núm vú và dương vật. Với sự tham gia của Asuka Nakama, Moe Hazuki, Ryoka Aoyama và những người khác. AARM-115-C","lastmod":"2025-03-26","duration":"02:04:17","url":"/play/19026349.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMDY4MmVkMGRmYzA5M2M1YjE0MDU3NGNiOWE5Y2ZjNGIuanBn.cache","vod_id":19162014,"title":"\"Giới tính của tôi có kỳ lạ không?\" Câu chuyện hậu trường đầy đủ về Mami (tên tạm thời), cô gái cầu hôn K.M.P., 31 tuổi.","lastmod":"2026-07-11","duration":"02:11:46","url":"/play/19162014.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MjAvYzlkZDlmNjAxMWVmODExMjRiNjg3OTliM2E3MmYxZWYuanBn.cache","vod_id":19039251,"title":"CEMD680 Tôi đang cố gắng nuôi dạy một búp bê tình dục biết vâng lời tôi, tập 14","lastmod":"2025-06-20","duration":"02:08:53","url":"/play/19039251.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTUxZDFiY2NlMDliM2ZmODcxNmVhMTJmYWE0YzE2ZWYuanBn.cache","vod_id":19017402,"title":"417SRYA060 Chỉ dành cho các cô gái Nhật Bản tuổi vị thành niên! Nếu thắng, bạn sẽ nhận được giải thưởng! Nếu thua, bạn sẽ bị phá sản hoàn toàn!!","lastmod":"2025-03-24","duration":"01:11:12","url":"/play/19017402.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvN2FmZTMwNDkwZTRkY2VhYmFjYzk2YmU2YTg0YzA5MGMuanBn.cache","vod_id":18989217,"title":"300MAAN-501 Lang thang khắp cung điện, không ngừng quyến rũ một người phụ nữ xinh đẹp đã có chồng! Chào mừng đến với thế giới dâm đãng, đầy cám dỗ của những cặp mông căng tròn như quả đào, cám dỗ tất cả những gã đàn ông dâm dục! Quần lót của cô ta vấy bẩn sau khi bị làm nhục, bộ phận sinh dục ướt đẫm! Cặp mông dâm đãng nhưng thiêng liêng của cô ta, dù mặc quần lọt khe hay hoàn toàn khỏa thân, cũng khiến người ta muốn liếm láp toàn thân! Mông cô ta bị hành hạ dữ dội, và tinh dịch được xuất sâu vào âm đạo ba lần liên tiếp! Bắt đầu từ mông, vuốt ve mông, và cuối cùng quay trở lại mông, mọi thứ đều xoay quanh cặp mông căng tròn như quả đào đó!","lastmod":"2025-12-14","duration":"01:10:07","url":"/play/18989217.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZGY3ZGEwNGQ0OTU5YmQyYTZmMTgzMDFkOTIyOGYwYzAuanBn.cache","vod_id":18933628,"title":"MIAA-198 Một cô gái làm việc trong cửa hàng xà phòng liên tục quan hệ tình dục với người bạn trai cũ phiền phức của mình, người biết rõ những điểm nhạy cảm của cô.","lastmod":"2025-12-14","duration":"02:59:24","url":"/play/18933628.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MjAvNGQ0N2Q5MzE0YmZlM2U0YWRkNjE3ZTRiYzRmMWZjY2UuanBn.cache","vod_id":19048086,"title":"REAL892 Đây là những gì phụ nữ sẽ như thế nào vào những ngày bạn muốn \"mạnh bạo\". Hãy đưa một cô nàng nóng bỏng, ngoan ngoãn đến khách sạn và để cô ấy \"thỏa mãn\" bạn bằng màn oral sex.","lastmod":"2025-08-19","duration":"02:08:53","url":"/play/19048086.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNmRhNDA2ZjBmNjFhYmE1NzgxNGQyZTAyZGVjYWY5MjcuanBn.cache","vod_id":18975242,"title":"MDTM-815 Quan hệ tình dục thô tục với một người đẹp mặc đồng phục thủy thủ 02","lastmod":"2025-03-23","duration":"01:59:14","url":"/play/18975242.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjAzOWNlZTE4YTEwYTQwZTQ1MjY2OGQ1YTg2MjcyNWEuanBn.cache","vod_id":19026788,"title":"[Thuê dì] Chỉ cần hỏi cô ấy và bạn có thể lén lút quan hệ tình dục với cô ấy. 29 Nữ diễn viên vô danh MEKO-247-C.","lastmod":"2025-03-28","duration":"02:11:16","url":"/play/19026788.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDliMDYyMjQxYTc2MGQ4MzczY2NlZDJiZmZiNDU1NmQuanBn.cache","vod_id":18972440,"title":"IPZZ-023 Anh ta đáng lẽ phải nhẹ nhàng lấy đi sự trinh tiết của người em trai còn trinh, nhưng hóa ra lại là một con quái vật tình dục với dục vọng vô độ!? Tình thế đảo ngược: một chuyển động thúc đẩy không kiểm soát như pít-tông! Tsumugi Julie","lastmod":"2025-03-23","duration":"01:59:47","url":"/play/18972440.html"}]},
videoTitle: 'Một cô gái kiêu hãnh bị cưỡng hiếp dã man khi đang đứng, và bị làm nhục bằng việc bị xuất tinh vào bên trong. Diễn viên không rõ danh tính NHDTC-052',
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=/`;
}
};
}