Rò rỉ bộ nhớ đám mây chất lượng cao, những cô gái lẳng lơ trái ngược nhau thích quan hệ tình dục với những cô gái dịu dàng này nhất.HEYZO 3290 Người đàn ông và Buga gợi cảm: Một cô sinh viên đại học nóng bỏng, da ngăm đen phải lòng một người đàn ông trong quán bar ngay từ cái nhìn đầu tiên, và anh ta tận hưởng đôi chân quyến rũ của cô trong lần đầu tiên của họ.","lastmod":"2026-07-11","duration":"33:13","url":"/play/19162865.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODY5MWE3NTBjYmQ2YzlhODcxZmY0MDVhZDg4NzdlNmEuanBn.cache","vod_id":18995309,"title":"Bữa tiệc thác loạn của Kim Bo-na trên du thuyền trước mặt bạn trai: quyến rũ thuyền trưởng.","lastmod":"2025-03-23","duration":"24:35","url":"/play/18995309.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMzJhZmVlYzdmZDVjOTEwZmE2M2RiMDM1MGM1YzlkMDMuanBn.cache","vod_id":19136147,"title":"Cuộc sống thường nhật của những nữ nhân viên văn phòng xinh đẹp và hai cảnh liếm mút dâm dục; quan hệ tình dục bằng miệng trong phòng nghỉ của công ty; ngoại tình trong công ty; diễn viên không rõ danh tính; MIAB-512","lastmod":"2025-12-31","duration":"01:57:58","url":"/play/19136147.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjVmMGU4ZTE5NGYxZjZlMjFkNDgzNmEzNWFhMTllZmIuanBn.cache","vod_id":18992936,"title":"KTKL-056 淫荡婊子学生会长渚美月 - 在女生仅占10%的学校里,一年高潮1000次,拥有性权力的恶魔女学生 - 1","lastmod":"2025-12-14","duration":"02:29:30","url":"/play/18992936.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvNzZiOGE2MGQyYTMwZGI2MjU1NGM0NjY2Y2Q2N2JmOTUuanBn.cache","vod_id":19159258,"title":"Gia sư dâm đãng, hổ trắng, tiền bối Mina nổi tiếng.","lastmod":"2026-05-21","duration":"09:37","url":"/play/19159258.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MjMvYWQxMjgwN2JjNTg3Y2QzMDAzNzM1ZGQzNGQzM2YyZGUuanBn.cache","vod_id":19165256,"title":"Sự lý trí của người chị gái xinh đẹp và sự sụp đổ của tuyến Bartholin, sự thức tỉnh cực khoái, dịch tình yêu dâm dục và xuất tinh 3 lần liên tiếp Haruna Hana Mr.michiru","lastmod":"2026-07-11","duration":"02:38:49","url":"/play/19165256.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjZhYzhmN2NhZmFlNDMzN2FkOWQ2ODYzZTQwZjUwNDguanBn.cache","vod_id":18942069,"title":"ABP-783 Những nụ hôn nồng cháy và sự dâm dục: Ba cảnh","lastmod":"2025-03-22","duration":"02:15:20","url":"/play/18942069.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9pYy4xNTUyNTAyMTQudG9wLzIwMjYwMjIwL2R0T0d0N3pHLzEuanBn.cache","vod_id":19144791,"title":"Hai cặp đôi đặt phòng khách sạn để chơi trò đổi bạn tình, dẫn đến một cuộc thác loạn bốn người.","lastmod":"2026-02-22","duration":"01:14:43","url":"/play/19144791.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWU4NTViN2I1N2IzOThlZjBjYWU3YjAyMjM2NWE0YWMuanBn.cache","vod_id":18947200,"title":"STAR-152 Saori Hara: \"Này, bạn thích con gái mặc loại quần áo nào?\" 6 bộ trang phục &","lastmod":"2025-12-14","duration":"03:01:07","url":"/play/18947200.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTQ1ZjE1NjdjYzJmYjk1Njg5YzcwY2YyM2UzNGRiNTcuanBn.cache","vod_id":18941888,"title":"[Phụ đề tiếng Trung] IWAN-07 Một bà nội trợ dâm đãng quyến rũ đàn ông trong bộ đồ lót gợi cảm","lastmod":"2025-03-22","duration":"01:49:46","url":"/play/18941888.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNWFhMDI2NjAzMjRhOTIxYzgyYmEwYmQwZGNkMGI0MTQuanBn.cache","vod_id":18956371,"title":"Ngoài trời, tôi gặp một người nông dân và chúng tôi đã có một buổi quan hệ tình dục 4 người đầy đam mê. Bên cạnh máy kéo của anh ấy, tôi cởi quần và dùng miệng kích thích dương vật to lớn của anh ấy, sau đó là quan hệ tình dục qua đường hậu môn. Trên giường, chúng tôi đã có một buổi quan hệ tình dục 4 người hoang dã và đầy kích thích.","lastmod":"2025-03-22","duration":"00:36:11","url":"/play/18956371.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDNkODc5NGI3Y2RjMzNjODljZTg2NzM3ZDgxMTNkYzguanBn.cache","vod_id":18940688,"title":"Bộ sưu tập từng rất nổi tiếng này gồm những bức ảnh tự chụp mang tính khiêu dâm của một ông chủ doanh nghiệp tư nhân trí thức điển hình và những người bạn tình trao đổi vợ của ông, bao gồm 181 bức ảnh và 1 video gốc hoàn chỉnh.","lastmod":"2025-03-22","duration":"00:07:57","url":"/play/18940688.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MTAvMTBlMmMzZWMzNmMyMjhmYTI5MjQ2MDUyZTFiNjgyYjMuanBn.cache","vod_id":19032828,"title":"477GRMR-101 Quan sát con người: Một người vợ trẻ lăng nhăng ngoại tình với kế toán thuế riêng của chồng giữa ban ngày ban mặt.","lastmod":"2025-05-10","duration":"32:23","url":"/play/19032828.html"}]},
videoTitle: 'Quan hệ tình dục tập thể trong ký túc xá nữ sinh New Oriental 2',
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=/`;
}
};
}