Đời tư của nữ sinh viên múa Học viện Điện ảnh Bắc Kinh bị phanh phui: nhiều cảnh cám dỗ trong đồng phục, sờ mó bộ phận sinh dục, hôn lưỡi, xuất tinh, nuốt tinh dịch, v.v. bị rò rỉ. Ngoại hình hàng đầu, dâm đãng và trơ trẽn, không thể bỏ qua nếu muốn thủ dâm.","lastmod":"2026-07-11","duration":"30:10","url":"/play/19153386.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZTgxYjA2NmY0OTE5YWVjMjA3YmY4MjNhNjU2MTM4Y2IuanBn.cache","vod_id":18953820,"title":"MKON-091 Tôi và bạn gái đang có một chuyến đi chơi của trường rất vui vẻ, nhưng tôi bị một đám DQN ma quỷ đánh đập và chúng bảo tôi \"cứ làm gì tùy thích với cô ta\".","lastmod":"2025-03-19","duration":"02:00:31","url":"/play/18953820.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMjZkNWJlOGI5ZjIxM2Y4NGNiNjRiZmViY2Y1MTgxNTguanBn.cache","vod_id":19142286,"title":"MFCS-110 [Một người phụ nữ xinh đẹp với vòng ngực cỡ H khoe thân hình, mong muốn trở thành bạn gái chứ không phải bạn tình] Quay video sex, bao gồm cả cảnh xuất tinh bên trong cô ấy, và nhiều hơn nữa.","lastmod":"2026-03-18","duration":"01:31:16","url":"/play/19142286.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvN2QwOTk1MTI1YzllOTI5ZDdjNGUzNzM2NGZlOGQyZTAuanBn.cache","vod_id":19045257,"title":"PBD-477 Chị gái dâm đãng của bạn đang ôm chặt bạn từ phía sau! Bị đối xử đáng thương! Màn thủ dâm từ phía sau tuyệt vời nhất!","lastmod":"2025-03-19","duration":"04:01:05","url":"/play/19045257.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MDMvZjA3OWNjYzA1NjQ0ZjU1MWQxZjNmNmI5MTY1YTEyOWYuanBn.cache","vod_id":19098270,"title":"498DDH-194 Tôi đã kết nối với một người phụ nữ lớn tuổi hơn một chút, quyến rũ cô ấy bằng dục vọng của mình và chụp ảnh lén. Bất cứ điều gì bạn muốn làm, thậm chí là xuất tinh vào bên trong cô ấy.","lastmod":"2025-04-03","duration":"54:28","url":"/play/19098270.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOGQ3NjY0MGJjZjU5OWQzNWEyZTc0Y2Q4ZDkxYTRhZDguanBn.cache","vod_id":18969869,"title":"HALE-035 Bữa tối của bạn mẹ - Vòng lặp bất tận Tập 30: Kyoka xinh đẹp, dáng người mẫu và quá gợi cảm...","lastmod":"2025-03-19","duration":"02:10:13","url":"/play/18969869.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDRkMWQ2NmZkODQ4ODVkZDAwMTQ4M2UzN2MzZTY0MzQuanBn.cache","vod_id":19053249,"title":"Chuyến đi ba người với bạn gái đầy mâu thuẫn: Say xỉn, không dùng biện pháp bảo vệ và xuất tinh bên trong.","lastmod":"2025-03-19","duration":"08:56","url":"/play/19053249.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODU1MTdkMmE3NjA4ZDhhMjRjYjY1NjMwMjNiZTQxOTkuanBn.cache","vod_id":18983341,"title":"MIDV-631 Tôi sẽ dạy cho con nhỏ lạnh lùng, thiếu động lực này một bài học! Nó sẽ bị một lão già lực lưỡng cưỡng hiếp tập thể và xuất tinh vào trong nó cho đến khi tinh dịch trào ra ngoài.","lastmod":"2025-03-19","duration":"01:57:46","url":"/play/18983341.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjNhNDZhNWM3ZjdmOGQ3MDFkYWUwZjVmOTYzNWEwNzIuanBn.cache","vod_id":19083492,"title":"435MFC-262 Một con điếm tên Maya, mặc bộ yukata gọn gàng, đang ngồi lên dương vật của bạn trai bạn thân. Hầu hết các chàng trai trong câu lạc bộ quần vợt đều là những kẻ đê tiện, toàn là dân chơi! (Cười ướt)","lastmod":"2025-03-19","duration":"01:30:22","url":"/play/19083492.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjc1YWVmNzdhNTI1NTk3NGM1YWY4NzhkZmM2YjVhMGQuanBn.cache","vod_id":19078915,"title":"Tôi thực sự thích cảm giác nuốt tinh dịch từng ngụm một.","lastmod":"2025-03-19","duration":"14:13","url":"/play/19078915.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MjgvNGEzYTgyNzIyNmUwODUxN2UyZGZiMjBjOThiZWUxNjQuanBn.cache","vod_id":19118396,"title":"Một cô gái trẻ mặc quần tất đen, đôi chân trắng như ngọc, đôi chân dài miên man, đã bị xâm hại tình dục không dùng bao cao su và bị xuất tinh vào bên trong.","lastmod":"2025-08-28","duration":"11:43","url":"/play/19118396.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMzRhNTg0NjM3OGUyMDRmYzU2YWJiOGE2YWQzNmIxNzUuanBn.cache","vod_id":18981558,"title":"— Tinh dịch của Ju Jingyi bị rò rỉ","lastmod":"2025-03-19","duration":"09:44","url":"/play/18981558.html"}]},
videoTitle: 'TYSF-019-C Tôi sắp lên đỉnh rồi!! Núm vú của tôi sướng quá nên tôi cần xuất tinh vào trong đó. Tôi đã cho bạn của chị gái tôi uống thuốc kích dục.',
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=/`;
}
};
}