Từ hôm nay trở đi, tất cả những cô gái này đều là bạn tình! Cô gái nghiệp dư tuyệt vời nhất, cô ấy yêu thích tình dục đến mức có thể dễ dàng duy trì nó. 240 phút nghiệp dư hạng S","lastmod":"2026-07-11","duration":"04:01:07","url":"/play/19162711.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MjcvOWJlMDZhOTI2NjRlOTA4NzAwOTc2ODVmMWY0OGRjMzkuanBn.cache","vod_id":19040085,"title":"IPZZ562 “Là một phụ nữ, đến đây một mình là một sai lầm…” Câu nói của một nữ sinh viên đại học được truyền tai nhau giữa các bạn cùng lớp tại một bữa tiệc ở nhà cô.","lastmod":"2025-06-26","duration":"02:26:00","url":"/play/19040085.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MDYvMDA5ZDU1OGFmNGQ5ODc5NjYxZmYwNTU1NjIzYWRhNmEuanBn.cache","vod_id":19028105,"title":"Người phụ nữ xinh đẹp và bạn trai của cô ấy ôm nhau đầy mãn nguyện sau khi anh ta đã làm cô ấy hài lòng ở nhiều tư thế khác nhau trên giường.","lastmod":"2025-04-06","duration":"29:25","url":"/play/19028105.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzJlZjM0ZjE2NDIxMGQ0NmFiMTljZDI2YzAwNzg3OTAuanBn.cache","vod_id":19016162,"title":"Một người vợ xinh đẹp với vòng một cỡ NTK155G, đang trên bờ vực ly hôn, trải qua kỳ kinh nguyệt đầu tiên và trở nên nghiện cảm giác khoái lạc mà cô chưa từng cảm nhận được với người chồng vô cảm. Sau khi say đắm oral sex với dương vật của một người lạ, cô ngồi lên người anh ta và đạt được nhiều cực khoái trong cuộc gặp gỡ tình dục chia tay! : Ly hôn 01.","lastmod":"2025-03-24","duration":"01:02:12","url":"/play/19016162.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MjcvNzUxOTllYTRmNWI1NDJjOTNhNjNjZWE5NDYzYTVjNGEuanBn.cache","vod_id":19035444,"title":"[Mối quan hệ loạn luân giữa mẹ và con trai] Khi người cha vắng nhà, người mẹ kế quyến rũ đã dụ dỗ con trai mình và phạm tội loạn luân.","lastmod":"2025-05-27","duration":"23:03","url":"/play/19035444.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzljODRkNjE0NWFiNTliMjE3NmI1NmFiYmFkYzBkOTkuanBn.cache","vod_id":18960931,"title":"FSDSS-501 Thủ dâm tại nhà có được chấp nhận không? Cô ấy giao những món đồ không được phép đến nhà một người đàn ông thích khổ dâm, ngồi lên người anh ta và trêu chọc núm vú của anh ta để quan hệ tình dục! (Fang Longning)","lastmod":"2025-03-22","duration":"02:02:40","url":"/play/18960931.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDVkZTMxNTc1MmE3ZGRlYzhiMzc5MmU4MmQ5MTNiYjkuanBn.cache","vod_id":18955288,"title":"[Phụ đề tiếng Trung] HUNTB-396 Một Giá, Ngủ với Ai Cũng Muốn! Nhà trọ suối nước nóng Tập 2 Với một mức giá cố định, bạn có thể quan hệ tình dục với bất kỳ ai tại nhà trọ suối nước nóng, bao gồm cả nhân viên và khách nữ!","lastmod":"2025-12-14","duration":"02:33:13","url":"/play/18955288.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmUxZTcyMDZiMjA4MWUzZjZiM2Y2ZmJjZGNkMzljOWYuanBn.cache","vod_id":19012894,"title":"Bản ghi chép 5 ngày huấn luyện của JUFE132 về hành vi tấn công tình dục và xuất tinh lên người dì có vòng ngực lớn của mình khi vợ vắng nhà. (Neo Akari)","lastmod":"2025-03-24","duration":"02:25:32","url":"/play/19012894.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MTgvMjk1ZWI4MjA0OWQyM2JiMGJmNmI0YmFmNDI5YjJjMzguanBn.cache","vod_id":19038792,"title":"MTALL088 Một nữ sinh bị hàng xóm, một kẻ theo dõi, đánh thuốc mê và sau đó bị cưỡng hiếp khi bố mẹ cô không có nhà.","lastmod":"2025-06-18","duration":"02:28:00","url":"/play/19038792.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWE5NWUzMjA2OGRkODU5NWRjNmNhNmEwNmYzYjZkYzQuanBn.cache","vod_id":18994236,"title":"[Nhóm nữ Quảng Đông: Một đàn ông và ba phụ nữ] Vớ và mặt lộ ra - Bạn thích cái nào hơn? Mát-xa ngực, kích thích âm đạo, tắm chung trong phòng tắm, quan hệ tình dục bằng ngực, dương vật to, dâm đãng và kích thích, hãy tận hưởng dịch vụ của một người phụ nữ lẳng lơ.","lastmod":"2025-12-14","duration":"21:48","url":"/play/18994236.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMjU2N2EzOGVlYzg4YThhZWMzNjE1ZmYyMzhhNWFjYWYuanBn.cache","vod_id":19135696,"title":"Với khuôn mặt đỏ bừng và tim đập thình thịch, cô ấy điên cuồng theo đuổi một dương vật to lớn. Một người đẹp Đài Loan đã tận hưởng cuộc ái ân mãnh liệt với ba đại diện người Nhật Bản. (FTAV-011)","lastmod":"2025-12-29","duration":"04:11:57","url":"/play/19135696.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTM1MjZiMzA5NzYxNmFlZDQzM2Y4MzUxZDZjOGFkYzUuanBn.cache","vod_id":18981703,"title":"JUY-918 Chuyến đi dã ngoại cùng cô giáo yêu thích - Chuyện ấy lén lút dưới chăn - Kazama Yumi","lastmod":"2025-12-14","duration":"01:57:46","url":"/play/18981703.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYzE2YjE3ZWY0NmE2YzE3MDhkNjI4OWI4YjBiZGQzMjUuanBn.cache","vod_id":19135270,"title":"Một cô gái trẻ bị lừa làm công việc môi giới mại dâm bí mật với mức lương cao trên một diễn đàn trực tuyến, sau đó bị trói và treo lên tường như một món đồ chơi, cuối cùng biến thành một người phụ nữ có thể... (HAME-045)","lastmod":"2025-12-25","duration":"01:06:36","url":"/play/19135270.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTNiNTYxN2NkNWViYzY4ZjBlODYzNWQ0NDA4ZDYxNmIuanBn.cache","vod_id":18989561,"title":"Đoạn phim thực tế của 360 cho thấy một người đàn ông trẻ đang quan hệ tình dục với người vợ xinh đẹp của mình tại nhà giữa ban ngày.","lastmod":"2025-12-14","duration":"22:02","url":"/play/18989561.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTYxZjBkMGMyMjFjZGU5MDlkOThjZGM4NjkyYzI5MTUuanBn.cache","vod_id":19020493,"title":"Thử nghiệm thực tế: Con gái cũng có thể phun tinh dịch không?","lastmod":"2025-03-24","duration":"12:02","url":"/play/19020493.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvNTFkYjY5OTFhZmJmYjBiYjE4NmVlNmM5YzQ3ZDJkZjguanBn.cache","vod_id":19158622,"title":"TeamSkeet - Những bậc thầy tập luyện quyến rũ giúp bạn có \"cậu nhỏ\" săn chắc hơn [TeamSkeet]","lastmod":"2026-05-17","duration":"18:23","url":"/play/19158622.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDU5MjA1YzlhZWNmZWJhN2NhMWYxMDZlNTJiYTg3ZWMuanBn.cache","vod_id":18951041,"title":"[Phụ đề tiếng Trung] HUNTA-347 \"Hôm nay là ngày nguy hiểm của tôi, nhưng nếu cô dám, tôi sẽ không đùa đâu!\" Vào ngày nguy hiểm của cô em kế hơi kiêu ngạo, quyến rũ, lôi cuốn và lẳng lơ này, tôi sẽ cho cô ta một trận đòn nhớ đời! Cha tôi tái hôn, và giờ tôi có một cô em kế thông minh, học ở một trường danh tiếng, nhưng lại hơi trơ trẽn và quỷ quyệt! Mặc dù vẻ ngoài thông minh và ngây thơ, cô ấy lại cực kỳ…","lastmod":"2025-12-14","duration":"02:30:08","url":"/play/18951041.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODY2YzI0NTM4OTBiNDgyYjkyNDg2NWQ5ZmUyZjI1MTUuanBn.cache","vod_id":18950490,"title":"300MAAN-494 Mở cánh cửa đến thế giới phim khiêu dâm với Biyak! Cô thủ thư lên đỉnh trong màn threesome!! ~】","lastmod":"2025-03-22","duration":"01:09:57","url":"/play/18950490.html"}]},
videoTitle: 'MIST-311 Một Ngày Làm Nhiệm Vụ Nguy Hiểm!! Một loại xà phòng có thể sinh em bé ~Sinh con tại nhà với J○~ Hoa Biển',
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=/`;
}
};
}