Hắn ta muốn tấn công cô trợ lý nha khoa đang đeo khẩu trang. Ẩn dưới chiếc áo khoác trắng là bộ ngực cỡ G đầy đặn của cô. Trước mặt bạn trai cô… hắn ta đã vô trách nhiệm khiến cô có thai và xuất tinh vào trong cô. (NPJS-170)
Fruit Pie Ex-Boyfriend is a Gambler's Private Video in Hand DASD-958","lastmod":"2026-07-11","duration":"12:39","url":"/play/19164411.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMTgvYjQyNTExYWE1MzVhMmFhNTZjMzY2MGI2YmMzMjA5MTMuanBn.cache","vod_id":19063166,"title":"\"Loạt truyện về bạn trai Otaku của tôi — Tôi nên chọn đồ điện tử chứ?\"","lastmod":"2025-12-14","duration":"24:28","url":"/play/19063166.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMzAvZmFiNjk5MGFiYzRkY2VkMGZjOGY4NzJhMzhlNzg0NGQuanBn.cache","vod_id":19060378,"title":"Tưởng đó là một tiệm massage thư giãn, hóa ra lại là cơ quan tình báo! Chuyên viên massage nam ngực khủng Yumi Shion EGKD_003","lastmod":"2025-10-29","duration":"02:33:51","url":"/play/19060378.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MjgvYjZhODM4NGFkYmFjZTM5NzgxMmEwNzIzZGM3Y2MxYzQuanBn.cache","vod_id":19044548,"title":"[Tiếng Trung] ROYD215 Một bà chủ ngọt ngào và dâm đãng dùng bộ ngực đầy đặn, cao lớn của mình để bao trọn dương vật nhỏ nhắn của cấp dưới, khiến anh ta xuất tinh khi đang đứng.","lastmod":"2025-07-27","duration":"02:15:40","url":"/play/19044548.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjk1ODIzYjY1MmY3MDdkMGE5NjZiOTkyOTA4ZDljNTMuanBn.cache","vod_id":18953706,"title":"SABA-258: 4 cảnh quay liên tiếp một ông già làm cho một cô gái xinh đẹp có thai bằng dương vật không bôi trơn của mình!","lastmod":"2025-12-14","duration":"02:11:54","url":"/play/18953706.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzEyYmY2ZjU3NGU3OWY2MGM2Y2ZlZWE0YzdmY2MzZjguanBn.cache","vod_id":18937511,"title":"Sau khi vợ tôi có thai, tôi đã dành hơn một tháng để cố gắng dụ dỗ cô em dâu xinh đẹp, yêu thích thể dục của mình lên giường. Ngực cô ấy tròn trịa và săn chắc, tôi kéo tay cô ấy và thâm nhập vào cô ấy từ phía sau!","lastmod":"2025-12-14","duration":"00:18:56","url":"/play/18937511.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYzgzNTY4NzAxNGU3MGRiOWY4NjM0YmVmZjBmNjM3NmEuanBn.cache","vod_id":19139483,"title":"Cuộc sống thường nhật không ngừng nghỉ với cảnh cưỡng hiếp tập thể và xuất tinh - Mariko Sada JUQ-656","lastmod":"2026-01-21","duration":"02:15:02","url":"/play/19139483.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MTUvNzQzMzUxZmViOGYwYTBhYzcyYjdmN2Y2ZmUwOWIxMmMuanBn.cache","vod_id":19052710,"title":"Vợ tôi đã làm người mẫu khỏa thân trước mặt sếp tôi. 13 Nami Kuroki. Nami Kuroki NSFS344","lastmod":"2025-09-14","duration":"02:19:11","url":"/play/19052710.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvM2EwYzMzNzZkYWIwMTViYzY4YjlmMWVhY2M3MmRmODcuanBn.cache","vod_id":18942988,"title":"Một cô giáo họ Lưu đến từ trường Trung học song ngữ Quảng Châu Hoa Minh, có vẻ ngoài vô cùng dâm đãng, đang quan hệ tình dục cuồng nhiệt với bạn trai người nước ngoài trong ký túc xá, cả hai đều mặc quần lót ren gợi cảm và thực hiện các tư thế quan hệ từ phía trước và phía sau.","lastmod":"2025-12-14","duration":"00:17:52","url":"/play/18942988.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvN2UxOTAyZmNkNTFjYjNmZTUwNDBjNzAzYmNmZTZlYTIuanBn.cache","vod_id":18982324,"title":"FC2PPV 3678417 Một cô gái bình thường với vòng một nhỏ nhắn. Cô ấy bị cấm làm việc nên bắt đầu quan hệ tình dục. Kỳ kinh nguyệt của tôi…","lastmod":"2025-03-23","duration":"00:46:33","url":"/play/18982324.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MTEvYzM1NzA2NzY0NDBhMjYyODEyM2Q1NmE2ZGUxNTRiMzEuanBn.cache","vod_id":19168844,"title":"10musume_010525_01_Một cô gái ngực khủng cỡ G đang cố gắng thực hiện hành vi tình dục bằng ngực!","lastmod":"2026-07-18","duration":"20:34","url":"/play/19168844.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDIxOGU5N2MwOWIwZmQ1YTIwMzMyZDRiZGI1NGJkOTkuanBn.cache","vod_id":18949732,"title":"[Phụ đề tiếng Trung] URMC-008 hoàn toàn bị mê hoặc bởi bộ ngực lớn của người chị! Amano Miyu","lastmod":"2025-12-14","duration":"02:41:00","url":"/play/18949732.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMjQvMmJjMzUwOWEyOGJkZjY2YmRjMTNhMjY0ZTk5MDIyYzYuanBn.cache","vod_id":19064004,"title":"Quan hệ tình dục mãnh liệt với cô gái ngực khủng Yuuki Miu 1pondo_022024_001 Yuki Miu 022024_001","lastmod":"2025-12-14","duration":"01:06:24","url":"/play/19064004.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODMxMTFlNGQ2YzQ0NTFiMWFkZmYwMWFjYjZlMTRiOTAuanBn.cache","vod_id":18956711,"title":"FC2PPV 3167107 [Quay lén, 2 lần] Vợ xinh đẹp giống Akita. Đây là video đã được chuyển nhượng bản quyền.","lastmod":"2025-03-22","duration":"00:41:07","url":"/play/18956711.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNGRhNjJmN2U0NzFmOTNjODI3YTU4MDI1NjMzNzRhYWIuanBn.cache","vod_id":18980621,"title":"FC2PPV 3624753 [Gonzo] [Lộ mặt] Phản ứng của cô nàng JD ngực khủng rất tinh nghịch và đáng yêu, thậm chí cô ấy còn lên đỉnh ngay trong đó!","lastmod":"2025-03-23","duration":"00:38:46","url":"/play/18980621.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMTBiYzFmNTFkNDY2MDM5ZmRhMjZlZWZhYzdmOTM1YTYuanBn.cache","vod_id":19160472,"title":"Một bà nội trợ có ham muốn tình dục vô độ sẵn sàng làm việc bán thời gian với nội dung khiêu dâm (NACR-709-C)","lastmod":"2026-05-28","duration":"02:00:29","url":"/play/19160472.html"}]},
videoTitle: 'Hắn ta muốn tấn công cô trợ lý nha khoa đang đeo khẩu trang. Ẩn dưới chiếc áo khoác trắng là bộ ngực cỡ G đầy đặn của cô. Trước mặt bạn trai cô… hắn ta đã vô trách nhiệm khiến cô có thai và xuất tinh vào trong cô. (NPJS-170)',
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=/`;
}
};
}