Fujimori Riho dilatih menjadi budak seks oleh seniornya! Dia diperkosa secara brutal dan diejakulasi di dalam selama sesi prostitusi tanpa seks.","lastmod":"2026-07-11","duration":"","url":"/play/19681788.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTBiNWJiYjUyNDk3MDYzZjkzMDJkNTljNzI0NTNkNDcuanBn.cache","vod_id":19172124,"title":"Tubuh-tubuh penuh gairah kaum homoseksual","lastmod":"2025-03-29","duration":"0:09:28","url":"/play/19172124.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MTEvYzE3ODU2NWFhYzk2Njg5ZDc1MzlmNWFjZjQwYzI5MWMuanBn.cache","vod_id":19631692,"title":"EP2 Serangan Malam Eksklusif Himesaki Hana! Serangan Mendadak Seorang Reporter Memicu Pertemuan Seksual yang Penuh Gairah","lastmod":"2025-08-10","duration":"0:49:59","url":"/play/19631692.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODAzYjlkYmNiNDJmMDFmZmYxZjFkN2VhZjRlMDYzMjAuanBn.cache","vod_id":19183754,"title":"[Penyuntingan Bahasa Mandarin Tradisional Jepang] Our Sex 2 [Inomaru]","lastmod":"2025-03-29","duration":"0:20:15","url":"/play/19183754.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDYxOTVjOWNjMGNmYWQ1MTI0NTA5MjJhYzlhZDM1OWMuanBn.cache","vod_id":19444166,"title":"Gaya yang benar-benar orisinal @Uesaka Meimei adalah gadis yang serius, fokus, dan imut yang suka memasak, tetapi dia mengeluarkan cairan lebih dari 30 kali, disertai dengan suara muncrat.","lastmod":"2025-03-30","duration":"2:20:15","url":"/play/19444166.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTkwZGI5Zjc2MGI4MzZkNjIwN2M0MTVkMDk5NThhMzcuanBn.cache","vod_id":19168378,"title":"Hina (26) S-Cute: Seorang gadis yang suka berciuman dan banyak seks yang penuh gairah.","lastmod":"2025-03-29","duration":"0:47:09","url":"/play/19168378.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjg2OWI3ODk3NjU1MzZlYmU5YjM2NjRmNDRjYTk2ZDUuanBn.cache","vod_id":19238874,"title":"Ayahnya tidak menyadari tiga kali terjadinya ejakulasi internal saat berhubungan seks.","lastmod":"2025-03-30","duration":"1:44:43","url":"/play/19238874.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNWFkNTc2MWM0ZGFmZGIxNTMxMzVjMjM4NzE5YmQxMmEuanBn.cache","vod_id":19324917,"title":"Berhubungan seks dengan bibi di pedesaan - 480 menit seks erotis mewah","lastmod":"2025-03-30","duration":"7:57:39","url":"/play/19324917.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjJiYzY4ODI2NTkzMDgwMWY4ODdmY2QzNTM0Mjg3NjguanBn.cache","vod_id":19348860,"title":"1 lawan 1 [Tanpa Kemampuan Akting] 4 Aksi Telanjang dan Instingtif. 12 Seks dari Hati ke Hati!! Maria Aine yang Belum Pernah Terjadi Sebelumnya","lastmod":"2025-03-30","duration":"3:35:58","url":"/play/19348860.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZWMyMTM3NjljYzM4Nzk5ZWZmYzViYjg0ZDFlOTFlMzkuanBn.cache","vod_id":19662647,"title":"XVSR-848 Payudara indah Mayu Minami diperkosa secara brutal hingga ia orgasme, penetrasi ganda dan sperma putih menyembur ke mana-mana.","lastmod":"2026-03-07","duration":"","url":"/play/19662647.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZTMxNzk3NjEzMWI1OTRjOTllYzc3ZGUyZjE4NjUxYjMuanBn.cache","vod_id":19651785,"title":"[Aktivitas Erotis Rahasia di Pemandian Air Panas] Diam-diam Mengikuti Kamp Pelatihan Seks Khusus Pasangan! Dua Hari Satu Malam Seks Gila di Pemandian Terbuka Hamabe Yayoi - 10 Ronde Berturut-turut FNS-098","lastmod":"2025-12-24","duration":"","url":"/play/19651785.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvOTkyNDAzN2MxMjEzYmNkNDdiOTJjNDA0MjczZmUyZjQuanBn.cache","vod_id":19646901,"title":"Seorang dewi yang memukau dan pacarnya yang berjenggot terlibat dalam hubungan seks yang penuh gairah dan tanpa peng","lastmod":"2025-12-13","duration":"","url":"/play/19646901.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNmY3ZTk3NDg5NWIxZTNjNGNkODE0NGMxNjNhYzQyMmYuanBn.cache","vod_id":19226059,"title":"29gxaz00052 - Teknik luar biasa yang menghasilkan ejakulasi kental dan semburan cairan pada pria Erika Kitagawa","lastmod":"2025-03-30","duration":"2:02:38","url":"/play/19226059.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2Y4MjA2ZTU5NTcwMDZmMGFmMWY1ZTgwYWY1YTc1YmQuanBn.cache","vod_id":19190314,"title":"Jangan bersuara! Jangan bergerak! Sama sekali! Permainan pasangan boneka seks peran! Jika aktor AV papan atas dengan penuh semangat meniduri pacarnya di depan pacarnya dan dia tidak bergerak, dia akan menerima 1 juta yen!!","lastmod":"2025-03-29","duration":"2:06:23","url":"/play/19190314.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTAzNjJhMWQ0ZmMyNDRhNzhjOGI4NjYyM2Y5OGU2YjQuanBn.cache","vod_id":19177620,"title":"Kegembiraan yang mendebarkan, rasa malu karena terekspos, seks penetrasi, Minami Airi","lastmod":"2025-03-29","duration":"0:10:23","url":"/play/19177620.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMDcvNDE3NDYzMzY5MmZhM2ZkZmY1NGU0MWFjODIyM2E3MGYuanBn.cache","vod_id":19640567,"title":"Kakak iparku yang nakal, yang setiap malam bisa mencapai orgasme bersama suaminya, membawaku dalam perjalanan gila selama dua hari satu malam yang menguras habis sperma! Seorang perawan jatuh ke jurang seks... Kazama Yumi JUR003","lastmod":"2025-10-06","duration":"1:58:52","url":"/play/19640567.html"}]},
videoTitle: 'Hoshino Aika menampilkan banyak adegan ejakulasi, dengan puncak adegan seks yang intens.',
language: 'id',
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('Tautan berhasil disalin!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Tautan berhasil disalin!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Tautan berhasil disalin!');
}
}
},
// 切换布局
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=/`;
}
};
}