Tolong pegang saya, bukan suami awak~Lesbian yang menyeksa isteri muda mereka yang aseksual melahirkan anak perempuan yang sihat~ Emi Nishino, Nami Kuroki U&K","lastmod":"2026-07-11","duration":"02:00:16","url":"/play/19165451.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMzdkNjMzNjgyMWE0OTY2M2M5MWE0ZTNhYjBhOTlmYTkuanBn.cache","vod_id":19152081,"title":"Musim Bunga Seksual! Hubungan Seksual Langit Biru Empat gadis atletik dari kelab sukan Luar XXX STSK-205","lastmod":"2026-04-07","duration":"03:50:43","url":"/play/19152081.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZWE0NGU5YzAyZWI0OWNjYTY0MDBlNzc4YzU2ZjFmNmMuanBn.cache","vod_id":18944161,"title":"HUNT-620 Percubaan percuma urutan minyak pati, direka untuk gadis amatur dan lesbian sebenar.","lastmod":"2025-12-14","duration":"03:57:04","url":"/play/18944161.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTAyZTFmNmUxOTRmOWU5ZjE1ZDg4ZjFlODI3ZDg5NmIuanBn.cache","vod_id":18926615,"title":"SOLE-005: Seorang abang yang kompleks dan seperti kanak-kanak cuba menjadi seorang wanita untuk menggembirakan adik perempuannya. 2. Cahaya Bulan Purnama ×","lastmod":"2025-12-14","duration":"01:54:15","url":"/play/18926615.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzBjYjRiNWE2NGNmYTAwYmU1Y2VmZjE4NjdkNjE5YWYuanBn.cache","vod_id":18960093,"title":"OKS-034 Izumi Natsumi, dewi baju renang sekolah yang basah, berkilauan, dan ketat. Daripada gadis cantik hinggalah wanita yang sudah berkahwin, nikmatilah menonton gadis-gadis comel dalam pakaian renang sekolah! AV ini bermula dengan merakam gadis-gadis menukar pakaian secara rahsia, diikuti dengan gambar jarak dekat payudara kecil, payudara besar, rambut kemaluan yang dicukur, rambut kemaluan yang berbulu, ketiak yang berbulu, dan sebagainya, serta permainan losyen dan sabun, ejakulasi muka baju renang sekolah, dan pancutan mani mentah, semuanya dilakukan semasa berpakaian lengkap.","lastmod":"2025-03-22","duration":"01:30:36","url":"/play/18960093.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODcxZmZhZTBhOTMyMDRiNjM1NTBlYTI3OTJjMGUyYjEuanBn.cache","vod_id":18995801,"title":"KMHR-086-CN Seorang gadis bar berdada besar yang gemar melayan orang lain; dia secara rahsia melakukan ini di bar tanpa pengetahuan pemiliknya - Sana Yotsuba","lastmod":"2025-03-23","duration":"02:18:43","url":"/play/18995801.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMDQvNzBiODc3ODdjODA5MmFhYmI0OWFhZjFhZTBlMmQyZmMuanBn.cache","vod_id":19055964,"title":"Pengurus itu langsung tidak tahu! Gadis dengan punggung berbentuk pic yang dicukur itu mengeluarkan bunyi nakal dan memanggil Sakuma Yuuri selepas terlewat. 081724_01","lastmod":"2025-10-03","duration":"01:00:36","url":"/play/19055964.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9pYy4xNTUyNTAyMTQudG9wLzIwMjYwMjE4LzVUd3FlNEw4LzEuanBn.cache","vod_id":19144389,"title":"Seorang gadis berbibir penuh dan berpendapatan lumayan dibawa pulang sebaik sahaja diberi ciuman Perancis yang penuh ghairah! NPJS-243","lastmod":"2026-02-19","duration":"01:29:54","url":"/play/19144389.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTdkYzBmMjFhMDM0M2YwZGVkNjkyYWU4ZGI0MGJhMzQuanBn.cache","vod_id":19016703,"title":"URF033 [Industri Seks Bawah Tanah] Jelajah seluruh negara ke industri seks bawah tanah di wilayah Kanto ~ Wanita pejabat berpayu dara besar dan langsing melakukan seks oral secara senyap!! Memohon maaf kepada gadis yang menyesakkan nafas → Gambar sampingan semasa hubungan seks di atas katil!! Haha.","lastmod":"2025-03-24","duration":"01:12:48","url":"/play/19016703.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzI2ZTY3NDQwNjAwZTQ0ZTFjMDY4MDEyNWIzYzc3MTYuanBn.cache","vod_id":18972180,"title":"Pembelian dan perkongsian terkini: Sekuel kepada kisah legenda seorang lelaki merogol jiran mudanya di komuniti Tianya ❤️ Dia akhirnya melakukan hubungan seks dengan jirannya sekali lagi, selepas kanak-kanak itu tertidur, di lorong, dan memancutkan air mani di dalam dirinya.","lastmod":"2025-03-23","duration":"00:15:49","url":"/play/18972180.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzNhNDUxNzgyMzU3ZDdkYTlkMjI1YmE1NDhhMzU2YmEuanBn.cache","vod_id":18984473,"title":"[Tidak Ditapis] SNIS-091 Gadis Mandi Gelembung Premium Utsunomiya Shion","lastmod":"2025-03-23","duration":"02:25:40","url":"/play/18984473.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDcyNmQ2NjE1ODIwNjg1YmJlZGNjMmNmYzE1MTU4ZTMuanBn.cache","vod_id":19016150,"title":"MIUM444, seorang masokis kerja. Kes 17: Pereka web Encik Fujii, 24 tahun. Tekanan wanita pejabat baharu ini, yang bergelut di tempat kerja yang berhierarki, menjelma di sekitar duburnya. Satu kunjungan yang tidak dijangka semasa waktu makan tengah hari, tanpa temu janji, membawa kepada hubungan seks paksa dengan seorang gadis yang tunduk sehingga alat kelaminnya basah kuyup.","lastmod":"2025-03-24","duration":"01:36:11","url":"/play/19016150.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTdmZDhhMjM3NzE4NzQ5NzkwZGYxNzYzNzM2MWNiNGUuanBn.cache","vod_id":18979239,"title":"BLK-308 Seorang gadis yang lebih rela mati daripada hamil VS Sekumpulan lelaki yang lebih tua terdesak untuk membuatnya hamil Kira☆Kira Dangerous Day Cream Pie Old Men's Thanksgiving 2016 5 NAOMI","lastmod":"2025-12-14","duration":"01:56:31","url":"/play/18979239.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmU4MjEzMGYzMzA1ZGJmY2M3N2FiZGZlZmY2NGNmNmIuanBn.cache","vod_id":18925791,"title":"NPS-364_B Pengambilan Lesbian Amatur Pengarah Haruna: 20 Gadis yang Tidak Bersalah dan Diingini! Gesekan Saling Bahagian Peribadi","lastmod":"2025-12-14","duration":"01:59:31","url":"/play/18925791.html"}]},
videoTitle: 'Sungguh menyenangkan mempunyai gadis yang penurut; kamu boleh melakukan apa sahaja yang kamu mahu dengannya.',
language: 'ms',
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('Pautan disalin!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Pautan disalin!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Pautan 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=/`;
}
};
}