Hanya model baju renang kompetitif saya. Pertemuan seksual peribadi dengan JULIA yang montok dan cantik, yang tidak pandai berkata tidak. JULIA PREMIUM","lastmod":"2026-07-11","duration":"02:23:39","url":"/play/19166296.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjNiNTkxYTg3OGYzODgyY2UzY2MxNWJlNDUzYmMxYmUuanBn.cache","vod_id":18932007,"title":"PPT-088_D Kawai Asuna, Harta Karun Premium Honor Terbaik 8 Jam","lastmod":"2025-03-22","duration":"02:14:18","url":"/play/18932007.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMjMvYTc2NjQwZDM3NWU0OTk2MjhmMGQzMzQwZmYwYjI0ZDMuanBn.cache","vod_id":19059015,"title":"Untuk melancap terbaik anda, Shirakami Sakika dengan comelnya memerhatikan anda merangsang zakar anda dan menerima ejakulasi dengan wajah tersenyum... Bantuan melancap tersenyum ejakulasi muka besar-besaran Shirakami Sakika SONE418","lastmod":"2025-10-22","duration":"01:55:35","url":"/play/19059015.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTMyNDY4YzBhOWY2ZDc4NWEzMmNhZTBiMWI5OTI2YzYuanBn.cache","vod_id":19005218,"title":"JUQ-255-C Model Bogel NTR: Video Mengejutkan Hubungan Malu Bos dan Isteri","lastmod":"2025-03-23","duration":"02:03:45","url":"/play/19005218.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMTAvYmI5NjA5ZTUyYzY5NjdmN2IyZWJjOGNiNzFlZGVmMzkuanBn.cache","vod_id":19056901,"title":"Bercinta dengan seorang jelita kecil molek!! Pilihan gadis-gadis pendek dan cantik, berdurasi 4 jam. Dibintangi: Aikoto, Hanon Rei, Haru Ito, dll. KTRA679","lastmod":"2025-10-09","duration":"04:01:26","url":"/play/19056901.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWI5ZTU4NDE2Yzk3ZTk0ZjAzYjI2MTk2Y2YxYzk4ZTYuanBn.cache","vod_id":18972209,"title":"BF-115 Dua Orang Adalah Tutor di Rumah Sahabat-sahabat yang Dikasihi","lastmod":"2025-03-23","duration":"00:57:31","url":"/play/18972209.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MjgvY2RiZDM2ZmI5YWI2Yzc5NGMzMzM5OGNmOWYxNWRkOGIuanBn.cache","vod_id":19054836,"title":"Isteri dengan payudara besar diikat dan didera secara seksual (Pelakon tidak dikenali DOA090)","lastmod":"2025-09-27","duration":"02:21:06","url":"/play/19054836.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNmQzZjYwYWIzZjk3YmU0Y2EzMjRiNTAzMDgyZWM3OWEuanBn.cache","vod_id":18976254,"title":"[Sarikata Cina] MIAA-844 Menjilat Kelentit Menjadi Lebih Baik dan Lebih Baik! Latihan Menjilat Kelentit Dewasa dengan Pelakon AV Popular Amakawa Sora dalam Ruang Dua Orang","lastmod":"2025-03-23","duration":"02:01:17","url":"/play/18976254.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNzliZjkwODViZDQ4ZDAwMGIyNDliYTQ3ODA2ZDRhNDUuanBn.cache","vod_id":19152231,"title":"Video peribadi alat mainan seks super-M generasi ketiga yang menjadi terkenal kerana kecantikannya telah dikeluarkan. Termasuk rakaman 6SEX selama 4 jam. YAKO-086","lastmod":"2026-04-08","duration":"04:00:28","url":"/play/19152231.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzMwMmYzZTFlYjQ1ZmViMzAwZTljNDA1ZjcwMzI0OTEuanBn.cache","vod_id":18973756,"title":"[Sarikata Bahasa Cina] DASS-142 Saya pernah mandi bersama mak cik saya semasa saya kecil, dan sekarang saya perlu mandi bersamanya lagi… Masa mandi yang gembira tetapi janggal semasa memandikan anak saudara saya. Mizutani Kokoro","lastmod":"2025-03-23","duration":"01:55:46","url":"/play/18973756.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTRlOGJkYjQxNDkxODU2ZWYwM2RlZDU2ZmQ4MDU1YTMuanBn.cache","vod_id":18982551,"title":"[Sarikata Cina] VEMA-205 Bos Wanita dan Bawahan Melakukan Seks di Pejabat Ketika Bersendirian - Sumire Uchida","lastmod":"2025-03-23","duration":"01:47:42","url":"/play/18982551.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvN2FmYzI0ZjZjNmZmOWI5YTE5MWE5Y2JkM2JiYzg1YTQuanBn.cache","vod_id":19156599,"title":"Dua paparazzi yang mesum secara rahsia merakam satu sama lain semasa mereka sedang mencari sugar daddy pada masa yang sama. #39 40 Mirage","lastmod":"2026-05-05","duration":"03:02:45","url":"/play/19156599.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvN2I2NTJjOGI4NjdmMmJjZTM1MGQwZjlmMjJlZmNlYjcuanBn.cache","vod_id":18978645,"title":"NXG-450 Hubungan Sumbang Mahram Antara Abang dan Kakak: Hubungan kotor antara seorang abang dan kakaknya yang tidak disangka-sangka bernafsu untuk memuaskan keinginan seksualnya.","lastmod":"2025-12-14","duration":"02:00:43","url":"/play/18978645.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvODM4NTYwOWFjMGM3MmIwMmQwZTAzOGExZjg5NmY3OWIuanBn.cache","vod_id":19139121,"title":"Isteri amatur mengambil dan memancutkan air mani selama 5 jam, selebriti DX100, pelakon tidak dikenali WA-564","lastmod":"2026-01-19","duration":"05:00:18","url":"/play/19139121.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWNkZjdhMjQ3MzFjODE4MGQ3MzdkNDgxYzk1ODNlMmYuanBn.cache","vod_id":18990382,"title":"LULU-004 \"Kalaulah hanya 3 sentimeter di hujungnya...\" Zakar pemuda yang tidak dijangka besar itu tidak tahan dimasukki oleh isteri jirannya (sumbang mahram).","lastmod":"2025-12-14","duration":"02:40:09","url":"/play/18990382.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMjQvNjlhYjc5ZDliMmJkM2RkNGUzYmQ5MGY0N2QwNjFiOTYuanBn.cache","vod_id":19064065,"title":"Seorang budak lelaki dara telah dimakan oleh ibu saudaranya yang tidak sihat. Ibu saudaranya yang biasanya lucah mempunyai wajah yang sangat lucah yang membangkitkan nafsu, menawarkan semua spermanya dalam perbuatan mengerikan yang benar-benar luar biasa. Yuna Ogura START_141","lastmod":"2025-12-13","duration":"02:23:15","url":"/play/19064065.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMjIvYzBhYjQ3OGFmNDI3MTI0YWQ1MzYzYjVhN2ZhNzA1MDkuanBn.cache","vod_id":19063924,"title":"\"Dalam perjalanan pulang...\" Dalam perjalanan isteri saya pulang, saya melakukan hubungan seks haram dengan rakan isteri saya, yang payudara dan punggungnya terlalu lucah... Jumpa esok NGOD_226","lastmod":"2025-12-13","duration":"02:02:07","url":"/play/19063924.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjZhMzMzZjQxMzFmNzRmYTNjOWViNjI2MWMyMTI0YTguanBn.cache","vod_id":18964014,"title":"[4K] MADM-164 Jiran NTR: Tergoda dengan Zakar Besar Jiran... Isteri montok Takada Mengami terharu dengan zakar jiran yang sangat tebal ketika suaminya berada di luar untuk urusan perniagaan.","lastmod":"2025-03-22","duration":"01:59:15","url":"/play/18964014.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MTQvZDE5YTgyYjY1NjYzOWZiOGU3YzA0MWZjMzQ2ZTU3NWEuanBn.cache","vod_id":19033481,"title":"ALDN-200 Bapa yang suka menjilat dan isteri yang kecewa","lastmod":"2025-05-14","duration":"02:12:06","url":"/play/19033481.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTcxMTUwZmU2NGE5NjQ2NDQ0ODZjMGM4OTA1NDViYTQuanBn.cache","vod_id":19025544,"title":"STARS166 Nanami Tina bersendirian dengan bos wanita impiannya di syarikat itu pada malam hujan... Tidak dapat pulang ke rumah, mereka bercinta sehingga pagi.","lastmod":"2025-03-24","duration":"02:00:15","url":"/play/19025544.html"}]},
videoTitle: 'Untuk mengesahkan cintanya, dia meninggalkan isteri dan juniornya yang luar biasa bersendirian selama tiga jam… Yoshizawa Yuki JUQ-367',
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=/`;
}
};
}