Shiramine Miu: Một nữ nhân viên văn phòng nội trợ giản dị bị một trưởng phòng trung niên cưỡng hiếp và xuất tinh lên người, nhưng cô hoàn toàn phải lòng hắn!Shiramine Miu: Một nữ nhân viên văn phòng nội trợ giản dị bị một trưởng phòng trung niên cưỡng hiếp và xuất tinh lên người, nhưng cô hoàn toàn phải lòng hắn!","lastmod":"2026-07-11","duration":"","url":"/play/19245659.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvN2YzYWZmNmZmOWIxNTg4ZDk2MGRkNzNiMGNkOGZkYWIuanBn.cache","vod_id":19121052,"title":"MEKO-147 \"Các người muốn gì khi chuốc say bà già này?\" Một người phụ nữ trung niên đang uống rượu một mình trong quán bar đông đúc nam nữ thì bị nhắm đến, quyến rũ và đưa về nhà! Thân thể khô khan của người vợ nội trợ nghiệp dư cô đơn và chán nản này dễ dàng bị ướt đẫm!! Tập 47","lastmod":"2025-03-29","duration":"02:03:33","url":"/play/19121052.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYjFjYTFjMmNmZDlhZDE1M2VlM2NjNWFhMjRjZGU4YTYuanBn.cache","vod_id":19227144,"title":"Một người phụ nữ ngực khủng, thân hình gợi cảm trong chiếc vớ dài rên rỉ và thở hổn hển, những cảnh quay cận cảnh âm hộ của cô ấy bị kích thích dữ dội, vùng kín mềm mại của cô ấy bị xâm phạm dã man bằng đồ chơi trong khi cô ấy tự thủ dâm.","lastmod":"2026-04-07","duration":"2:30:02","url":"/play/19227144.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvN2U1YmExMGQ2MDEzNDFmYjNjM2ZlY2ZmNGRiMjAxNDAuanBn.cache","vod_id":19231310,"title":"AKID-117-C Quyến rũ một bà nội trợ ngực khủng! Người phụ nữ trưởng thành bị cưỡng hiếp điên cuồng trong nhà tôi! Video đầy đủ được quay với tiếng rên rỉ cực khoái.","lastmod":"2026-04-28","duration":"2:29:45","url":"/play/19231310.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvNjNkYjA0N2EwMjI2ZTA1NjcwNzZhNmMxYzZjMmJjNGIuanBn.cache","vod_id":19237029,"title":"HEYZO-3212 Âm đạo ướt đẫm của cô gái văn phòng không lông! Tưởng chừng đoan trang nhưng thực chất lại dâm đãng, bị cưỡng hiếp dã man cho đến khi cô ta xuất tinh bên trong.","lastmod":"2026-05-24","duration":"1:12:23","url":"/play/19237029.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvODVjZDZkYzYzYWFiZTUyMTI2OGEzZTZhY2MyOTc3ZTMuanBn.cache","vod_id":19230403,"title":"Gã đàn ông xăm trổ với dương vật khổng lồ đang đâm mạnh vào cô ta, âm đạo tuyệt mỹ của cô ta bị cưỡng bức cho đến khi cô ta khóc lóc và cầu xin tha thứ.","lastmod":"2026-04-22","duration":"0:09:05","url":"/play/19230403.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYmJjNjZlNzU0NDgyZWQ2OGY2NTIzZjI3YTJiZmI2ODEuanBn.cache","vod_id":19224628,"title":"NAMH-052 Âm đạo tuyệt đẹp của một cựu ngôi sao nhí đã trưởng thành được công khai, cô bị một dương vật khổng lồ xâm nhập dữ dội và xuất tinh bên trong, hoàn toàn mất kiểm soát.","lastmod":"2026-03-30","duration":"1:47:37","url":"/play/19224628.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvZWY4YmRkYjRjZWZlOTAxZTQ0MDg5ZjQ3M2VkNjM2ZjUuanBn.cache","vod_id":19241666,"title":"Một người phụ nữ xinh đẹp đã kết hôn tên Nozomi vô tình bước vào phòng tắm của một gã đàn ông biến thái và, trong khi đưa khăn cho hắn, cô bị một bầy sói cưỡng hiếp dã man và xuất tinh bên trong.","lastmod":"2026-06-21","duration":"2:00:42","url":"/play/19241666.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9maDI2MDQwMS50b3AvMjAyNjA0MjMvazc2UEhJVUUvMS5qcGc=.cache","vod_id":19230669,"title":"Chương cuối! Hắn ta cưỡng hiếp dã man Kanako Hamabe, người phụ nữ xinh đẹp đã có chồng của bạn mình, cho đến khi cô ta lên đỉnh và xuất tinh vì bị xâm phạm dữ dội!","lastmod":"2026-04-24","duration":"1:41:01","url":"/play/19230669.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MjkvNDY4MzdlOTBiNjgyOWVlZWRiZjA0ZjQ3N2RhMDE0YzguanBn.cache","vod_id":19242944,"title":"Một bà nội trợ xinh đẹp tuyệt trần, ngực nở nang đang ở nhà một mình, và một cái dương vật giả được gắn cố định xuống sàn, liên tục đâm vào âm đạo của cô ấy và cầu xin được xuất tinh.","lastmod":"2026-06-29","duration":"0:06:31","url":"/play/19242944.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMTEvMTIwOWZmYzQyODM5MjA3ODQxYjY2NjAzYjQxZjE1ZTIuanBn.cache","vod_id":19198915,"title":"Buổi chiều ngoại tình của người phụ nữ đã kết hôn: Yuko Ono quyến rũ trinh nữ trong bộ đồ lót ren 'Đừng cởi áo ngực ra!' DLDSS368","lastmod":"2025-10-10","duration":"02:03:16","url":"/play/19198915.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOWU5ZGMxMzk5N2I2NjM0MWQyZTMyOWI1ODVjNTAwNTcuanBn.cache","vod_id":19076555,"title":"Một người phụ nữ trung niên đeo kính thực hiện hành vi quan hệ tình dục bằng miệng mà không dùng bao cao su, sau đó quan hệ tình dục theo tư thế truyền thống; bà ta ở trên, rên rỉ một cách dâm dục, với vẻ mặt đầy khoái lạc.","lastmod":"2025-03-29","duration":"00:24:26","url":"/play/19076555.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYjM5MjRhZmYwYzc1NDkyYTkzMjBjZTBjZDU5MjdjMWUuanBn.cache","vod_id":19220968,"title":"MBMA-110 Người phụ nữ trung niên đã kết hôn bị trói chặt bằng dây thừng cho đến khi đạt cực khoái và không kiểm soát được bàng quang! 6 video được chọn lọc, 240 phút BDSM cực độ.","lastmod":"2026-03-08","duration":"4:00:40","url":"/play/19220968.html"}]},
videoTitle: 'HONB-467 Người phụ nữ đã kết hôn không thỏa mãn thời Showa! Âm đạo của người phụ nữ trưởng thành bị xâm phạm một cách bạo lực và dữ dội.',
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=/`;
}
};
}