Panti pijat kaki larut malam, wanita muda yang menggoda ditusuk dan diperkosa secara brutal!","lastmod":"2026-07-11","duration":"","url":"/play/19245459.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDVjMjRmNDc2OThiZTQ1ODI4ZjI3Zjc5ODAyM2M2M2EuanBn.cache","vod_id":19227325,"title":"Seorang aktris Taiwan baru yang memukau melakukan debutnya, stoking hitamnya yang menggoda dan kakinya yang menawan, bersama dengan payudaranya yang besar dan bokongnya yang indah, siap untuk Anda nikmati.","lastmod":"2026-04-08","duration":"1:06:54","url":"/play/19227325.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvMDQ2YWEwMjRhMDI3NDE0ZWY4ZDI4ZTMzYjViN2I4NGQuanBn.cache","vod_id":19209043,"title":"AI - Qin Lan bertelanjang dada - seorang ibu rumah tangga nakal dengan vagina basah, rekaman keintiman fisik dan orgasme intens mereka, direkam secara diam-diam.","lastmod":"2025-12-13","duration":"0:21:52","url":"/play/19209043.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDdhY2VmOTUxMzg1NjBmZWM2ZTEwYzZhOWVhZmUzOGEuanBn.cache","vod_id":19039752,"title":"Seorang wanita dewasa dengan bokong penuh dan bulat, mengenakan stoking hitam, sedang bermasturbasi dengan pinggul terangkat tinggi untuk gerakan dorongan cepat, yang menyebabkan dia mengerang dan terengah-engah tanpa henti, yang sangat menggoda.","lastmod":"2025-03-28","duration":"01:05:24","url":"/play/19039752.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MjIvNTE2YWQzNWNmYmFiMDhmMjIyYzFjOWY3ODE5YTE1ZGMuanBn.cache","vod_id":19177550,"title":"Sesi bimbingan belajar sepulang sekolah dengan seorang siswi berseragam! Ejakulasi paksa saat bermain di kelas, mencapai klimaks dalam posisi menunggangi dengan rok pendek dan tanpa bra.","lastmod":"2025-05-22","duration":"24:40","url":"/play/19177550.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvYWM4YzAwYmVhY2IwYjhjMTlmNzQ0Y2QwYzc5ZTQ1M2IuanBn.cache","vod_id":19208803,"title":"Seorang wanita muda tetangga bertelanjang dada saat membuang sampah di pagi buta! Payudaranya yang bergoyang langsung membangkitkan ereksi pagi hari. (Nagisa Shinohara, 1pondo_061523_001) Sebuah catatan nyata tentang nafsu pagi yang tak terkendali dari seorang wanita yang sudah menikah.","lastmod":"2025-12-13","duration":"0:59:10","url":"/play/19208803.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDJhMWU3NjI5NWQxZDFlY2FiNDkzZDAyYjIzODM1NTMuanBn.cache","vod_id":19051476,"title":"Seorang gadis dengan lidah yang sangat lentur menggunakan mainan seks untuk masturbasi. Stoking hitam seksi disobek di bagian selangkangan, dan mainan tersebut digunakan untuk gerakan menusuk. Sangat menggoda; jangan sampai ketinggalan jika Anda menyukainya.","lastmod":"2025-03-28","duration":"","url":"/play/19051476.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODhkNDNiNTM1YzkyMDQ3ZTg3MDA0OWFiYTdiODY4MDguanBn.cache","vod_id":19110388,"title":"Seorang wanita jalang kelas atas dengan paksa mendorong seorang pria kecil penjual barbekyu dan ayahnya yang juga penjual barbekyu, dua pria dan satu wanita bergantian menidurinya, dia merasa seperti di surga, seks oral dan menelan sperma, montok dan berisi, mengenakan seragam, stoking hitam, kaki yang indah dan bokong yang kencang - video ejakulasi tanpa perlindungan","lastmod":"2025-03-29","duration":"","url":"/play/19110388.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzgxZmQ2YmZkMTZhNGQ1ZjhjM2QzMzMxMWQ1OTgyNzkuanBn.cache","vod_id":19076254,"title":"Seorang wanita muda yang sudah menikah dan terhormat memperlihatkan wajahnya saat menghibur seorang pria mesum di rumah. Ia terlihat sepanjang video, memamerkan bokongnya yang besar dan seksi serta payudaranya yang montok, yang ia remas sendiri. Ia juga terlihat melakukan masturbasi dari jarak dekat, bermain dengan klitorisnya, dan menjadi sangat basah.","lastmod":"2025-03-29","duration":"00:27:15","url":"/play/19076254.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2JlNmYxZDM3Mjk2ZDcwY2MzNTBmNzcxYTZlOWFjYjYuanBn.cache","vod_id":19144841,"title":"SSNI-631 Saat badai topan, karena tidak bisa bepergian dengan mobil dan menginap di hotel yang sama, saya tidak bisa menahan diri dan memaksakan diri pada wanita menikah berpayudara besar dan berkaos kaki hitam, Kepala Departemen Okuda Saki.","lastmod":"2025-03-29","duration":"02:26:10","url":"/play/19144841.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNDJmZjk4MTMxY2M4YjdkZWM0MzI4OTE3NmQ1ZmFkMjEuanBn.cache","vod_id":19104790,"title":"Apple, seorang penggila stoking dengan kaki sepanjang 180 cm, seorang wanita jalang dengan sepatu hak tinggi dan stoking hitam mengkilap, gaya doggy yang gila, bercinta dan memukul pantatnya dengan intens, ejakulasi ke dalam vaginanya yang basah dan panas - video ejakulasi tanpa kondom","lastmod":"2025-03-29","duration":"","url":"/play/19104790.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDJiNjIwODVjMTc1ZWNjMzU4ZmJiOTk3OTdhYTE0ZTIuanBn.cache","vod_id":19222898,"title":"DVMM-332 Kaki pramugari berkaos kaki hitam yang menakjubkan! Putingnya terus-menerus dimainkan di depan cermin ajaib, dia diperkosa secara brutal dalam posisi menunggang laba-laba, vaginanya menyemburkan cairan dan dipenuhi sperma, dia benar-benar kehilangan kendali.","lastmod":"2026-03-19","duration":"3:51:26","url":"/play/19222898.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MDcvNDUxN2VjYWIwOGJkNTVjZGRjOWMwYmJlOTdmY2IyZjAuanBn.cache","vod_id":19188466,"title":"[Tanpa Sensor] Pesta Pilihan Model Top Seta Mai: Godaan Vakum, ID 080622-001","lastmod":"2025-08-06","duration":"01:01:08","url":"/play/19188466.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvYjllZGU4MjJmYjIyNjM4NzE4N2Y5MGE3ZjA4YTk3MDkuanBn.cache","vod_id":19241442,"title":"Stoking hitam, kaki yang indah, lubang madu sang dewi dijilat dalam-dalam, payudara yang indah bergoyang liar, orgasme berkali-kali.","lastmod":"2026-06-20","duration":"0:39:37","url":"/play/19241442.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOGIxOGFkYTFmNGUxOGI2Yzg0NDNkYzZkMDY1OTEwZDguanBn.cache","vod_id":19128789,"title":"[Selfie Pasangan] Akademi Musik. Mahasiswi nakal. Kenakalan pacar. Perbuatan bejat. Jatuh dari kehormatan. Ledakan putih. Stoking hitam peach. Bokong indah. Sumbat anal. Stoking dan kaki.","lastmod":"2025-03-29","duration":"14:19","url":"/play/19128789.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzVkNzRjZjIzZGZlMzBjNzYzOTZhNDE5OWQ5ZGJmOWUuanBn.cache","vod_id":19053150,"title":"[Paviliun Cina] Gadis muda, seksi, dan nakal dengan penuh gairah memamerkan alat kelaminnya dalam berbagai posisi, sangat cabul.","lastmod":"2025-03-28","duration":"","url":"/play/19053150.html"}]},
videoTitle: 'HISEX-MMD [Kereta Api Honkai] Penari menggoda Katsura Naifen, cheongsam vakum, penetrasi intens, stoking hitamnya basah kuyup oleh cairan vagina.',
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=/`;
}
};
}