EMBM-044 Ứng viên nội trợ hoàn toàn nghiệp dư: Ichikawa Natsuo, một người phụ nữ đã kết hôn nhưng chưa bao giờ nhìn thấy mặt chồng, rên rỉ trước một dương vật khổng lồ và cầu xin được lấp đầy tinh dịch.
JUR-275-C Một chuyến đi suối nước nóng, nơi toàn bộ nhân viên trong phòng cưỡng hiếp tập thể một nữ nhân viên đã kết hôn cho đến khi cô ta trở thành một cái bồn cầu sống.","lastmod":"2026-07-11","duration":"02:39:54","url":"/play/19153469.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMTVmYTllZmMwOTdmZTczYzA0MGFiODk5OWYwZjIxYWQuanBn.cache","vod_id":19008197,"title":"minicat_Y tá da đen trắng nhận một cây kim to và dày từ bệnh nhân.","lastmod":"2025-03-19","duration":"07:05","url":"/play/19008197.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMGRkYTFjMGM0ZGY2Y2EwNjU4NWNjNWFkYzNiN2I4MjAuanBn.cache","vod_id":19094365,"title":"Cô gái ngực lớn rên rỉ không ngừng khi bị xâm nhập; cô ấy dường như thực sự thích thú với điều đó. (1)","lastmod":"2025-03-19","duration":"02:06","url":"/play/19094365.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvY2FjOGVkMTZlZmZjODYwYWY5MTdmNjY4ODYyMDY0NmMuanBn.cache","vod_id":19094613,"title":"HEYZO 3540 Tôi đã quan hệ tình dục với một người giúp việc đã có chồng! ~Bộ truyện Người đẹp Tập 58~ – Haruka Sanada","lastmod":"2025-03-19","duration":"55:37","url":"/play/19094613.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjJhZjAxOGFjYWIyMzQzOTA1ZjRjM2EyYmM5NGNhYjYuanBn.cache","vod_id":19062783,"title":"Cảnh quay tối nay mang đậm không khí học đường trong sáng và thuần khiết, một nữ sinh trung học năm nhất, cao 170cm với đôi chân dài, ngọt ngào và ngoan ngoãn, bị quay lén bằng thiết bị độ phân giải cực cao, những tiếng rên rỉ và thở hổn hển nhẹ nhàng của cô ấy vô cùng quyến rũ và không thể bỏ lỡ.","lastmod":"2025-03-19","duration":"19:49","url":"/play/19062783.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYTNlZGZlNDczNGNkYzAwOGYyNTljYzMwOGMyYWZjYjAuanBn.cache","vod_id":19003734,"title":"Một cô gái trẻ có làn da trắng hồng, vẻ ngoài ngây thơ, liên tục lộ mặt trong suốt buổi phát trực tiếp, thích thú xoa ngực và nghịch vùng kín của mình, trong khi một dương vật giả bằng pha lê lớn đâm vào âm đạo cô, cô dang rộng hai chân để cho người xem thấy tiếng rên rỉ và khao khát xuất tinh của mình.","lastmod":"2025-03-19","duration":"25:57","url":"/play/19003734.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZTUwNTYzNjAzMzY4MjdkZDdlNGQ3OGEzMzAzMWQzYzMuanBn.cache","vod_id":18938863,"title":"DNJR-010 Hoàn toàn chủ quan: Chỉ tập trung vào bạn, đổ lỗi cho niệu đạo","lastmod":"2025-03-19","duration":"02:53:40","url":"/play/18938863.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvZGI3YTA2ZmMyNzFiNDQyMGMzMjYzNzc1MTU0ZmVkNTAuanBn.cache","vod_id":19147980,"title":"HZGD-294-C Tôi đã cướp một người phụ nữ đã có chồng đang ngoại tình với một đồng nghiệp bán thời gian... Tôi đã quan hệ tình dục với con điếm ngực bự, ham muốn tình dục mãnh liệt này ngay tại nơi làm việc!","lastmod":"2026-05-16","duration":"02:15:13","url":"/play/19147980.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvM2Q3NTVhM2Y0N2I3ZGNiZGJiYWIzZDZhYTViZmIwOTguanBn.cache","vod_id":18990555,"title":"VEC-571-C: Bạn thân của người vợ đến để dạy cho người chồng bội bạc một bài học.","lastmod":"2025-03-19","duration":"01:37:20","url":"/play/18990555.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMmM2N2IxYWU0NWY3Y2NkZjM5NzI1ZDJhM2QxM2RlNTYuanBn.cache","vod_id":19053156,"title":"OLM-098 Một nữ sinh viên đại học xinh đẹp với vòng ba tuyệt vời và vòng một cỡ G đã ngoại tình với bạn trai của mình! Dương vật của một người đàn ông trung niên chạm vào âm đạo của cô ấy, và cô ấy đạt cực khoái mãnh liệt!! -cd5","lastmod":"2025-03-19","duration":"01:59:41","url":"/play/19053156.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNTllNzNmYmIzNDVkYWQ0YzI0NzYzNGFkYTA3NDk5NjUuanBn.cache","vod_id":18941721,"title":"Yui Hatano - Chứng rối loạn cương dương đã được giải quyết!! Có tin đồn dễ dàng tiếp cận dịch vụ massage phục hồi sức khỏe của một phụ nữ đã kết hôn lẳng lơ.","lastmod":"2025-03-19","duration":"02:21:43","url":"/play/18941721.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjE4MDFhYWRhZGNkYTIzZTBmOWUwZGZjYTE4NDg4YjMuanBn.cache","vod_id":19006715,"title":"JUQ-669 Madonna Độc Quyền Chương 2: Sau một tháng kiêng cữ, cô ấy tìm kiếm cực khoái tuyệt vời nhất đời mình. Cho đến khi ham muốn tình dục của tôi cạn kiệt.","lastmod":"2025-03-19","duration":"03:27:04","url":"/play/19006715.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNDU1MGQxNGY2NGQxN2IxZWFkNDE4ZjBlY2RkYmEyNjYuanBn.cache","vod_id":19088704,"title":"NVH-038 Cô gái chuyển giới Hifumi Yuuri #Hatano Yui bị một giáo viên đồng tính nữ biến thái bắt nạt, lợi dụng điểm yếu và bộ phận sinh dục của cô.","lastmod":"2025-03-19","duration":"02:48:14","url":"/play/19088704.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODkyOTM4ODNjYjE5Nzg3ZTA3M2Y4MzQ3ZGU5MTc0NDcuanBn.cache","vod_id":18939044,"title":"117NPH-021 Ảnh chụp nội y khiêu gợi của vợ chồng con; người vợ dâm đãng dạng chân đón nhận dương vật của bố chồng, trong khi chồng cô ta ngủ bên cạnh. (Suwan-san)","lastmod":"2025-03-19","duration":"01:17:32","url":"/play/18939044.html"}]},
videoTitle: 'EMBM-044 Ứng viên nội trợ hoàn toàn nghiệp dư: Ichikawa Natsuo, một người phụ nữ đã kết hôn nhưng chưa bao giờ nhìn thấy mặt chồng, rên rỉ trước một dương vật khổng lồ và cầu xin được lấp đầy tinh dịch.',
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=/`;
}
};
}