Mengejar Impian Pavilion Kemanusiaan Malam Ini Gadis Ini Agak Bagus 88 Paun Kaki Panjang Berkualiti Tinggi Nilai Tinggi","lastmod":"2026-07-11","duration":"52:33","url":"/play/19161601.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvOTcwYjJjMTM2MjRkY2Y3NjJjNzdjZGZiNjc3OWQ1NmQuanBn.cache","vod_id":19148909,"title":"3 Bunga Terbaik Kelab Qin - Saya Temui Seorang Jelita Berpayudara Besar Hari Ini","lastmod":"2026-03-18","duration":"44:35","url":"/play/19148909.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmMwNmRhYTRhMWUxOTViN2I0MjFmYTAzMmQwNTQ0MzIuanBn.cache","vod_id":18935374,"title":"Seorang wanita muda yang cantik dari keluarga etnik minoriti yang dihormati di Guangxi, tidak mampu membayar balik hutang perjudiannya pada kadar faedah yang terlalu tinggi, terpaksa melakukan hubungan seks dengan pemiutangnya sebagai bayaran. Dia kelihatan tidak rela, tetapi dia agak terurus. (Dialog dalam dialek tempatan!)","lastmod":"2025-12-14","duration":"00:16:55","url":"/play/18935374.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTI5ODZlYTZiYjFhYjQ4ZWYxMWQ2OTI2N2YzMDJjYTcuanBn.cache","vod_id":18925614,"title":"Seorang wanita yang sangat cantik dengan daya tarikan yang halus dan tulen (1)","lastmod":"2025-12-14","duration":"01:40:06","url":"/play/18925614.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNTViNGQ0NjA0OGEzNjJmMTQxOTRlMGVmNDM1MDMwYWMuanBn.cache","vod_id":19143492,"title":"Untuk memuaskan hati ibu bapanya yang mendesaknya untuk berkahwin, rakan sekerja senior yang paling cantik di syarikat itu meminta rakan sekerja junior untuk berpura-pura menjadi teman lelakinya. Walau bagaimanapun, apabila dia pergi ke rumah rakan sekerja junior itu, dia akhirnya dijangkiti VEMA-249.","lastmod":"2026-02-15","duration":"01:58:00","url":"/play/19143492.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTg1OGU3ZDFiZGU5OTA1MmExZmFlNjQxMTBjMzAyYTIuanBn.cache","vod_id":18991092,"title":"Seorang gadis cantik dan langsing dalam adegan bilik mandi basah yang menggoda, menarik seluar dalamnya dan menggosok vulvanya sambil menggeliat – ia sangat memikat dan menggoda; jangan ketinggalan!","lastmod":"2025-03-23","duration":"40:00","url":"/play/18991092.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvN2Q4YWIxZjYzNGRmODQyNGU1YzJhNTJlYWYyODZmYjAuanBn.cache","vod_id":18993908,"title":"[Lesbian] @20209053744 Muat naik pengguna: Menendang puting anjing betina seperti bola keranjang~ Pemilik wanita berambut panjang dan elegan itu benar-benar tahu cara untuk berseronok!","lastmod":"2025-03-23","duration":"05:14","url":"/play/18993908.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOGM4ZDFjZjFhZWMxNGNkNzVjODA5MjUyMmU3ZWZlMTQuanBn.cache","vod_id":19025795,"title":"Wanita yang sudah berkahwin yang saya hubungi di VOSS155 rupa-rupanya bekas guru kelas saya yang cantik. Dia tidak menyukai saya kerana saya seorang pelajar yang nakal semasa zaman persekolahan saya, dan kad laporan saya penuh dengan markah 5s.","lastmod":"2025-03-24","duration":"01:38:05","url":"/play/19025795.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTMxMTJhYjVlZjA0OWUxM2M5ZDE2ZGU0MjI4NTVkZWEuanBn.cache","vod_id":19014716,"title":"CHN174 Gadis baru yang sangat cantik untuk disewa. 90 Suzumori Reimu (pelakon AV), 21 tahun.","lastmod":"2025-03-24","duration":"03:27:51","url":"/play/19014716.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDFjMzQ2YzIzODQ1NjAzMGE2M2RhM2Q5NDRkOTFlMzMuanBn.cache","vod_id":18956806,"title":"Seorang wanita yang nakal dan menggoda menunjukkan wajahnya sepanjang siaran langsung, duduk di hadapan kamera sambil ditembusi dan farajnya dirogol, bermain dengan payudaranya sehingga dia mencapai pelbagai orgasme dan mengerang tanpa henti. Jangan terlepas rancangan yang menakjubkan ini!","lastmod":"2025-12-14","duration":"01:55:03","url":"/play/18956806.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNmQzMGE0ZDczM2FlMmIyYzJjMGVjZWEyOTA4MGFiMWUuanBn.cache","vod_id":18987811,"title":"FC2PPV 3895637 Seorang yang kecil molek, namun mempunyai payudara H-cup yang lembut secara semula jadi seperti gula-gula kapas. Dia sungguh cantik! Walaupun JD bersikap baik… dengan ombohnya yang nakal, dia ditakdirkan untuk mengejutkan anda!","lastmod":"2025-12-14","duration":"00:52:32","url":"/play/18987811.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDU4MjIwZjgwMTEyMDNiNzdjZjdlOWYyZDE3ZTcyNGIuanBn.cache","vod_id":18955003,"title":"[Sarikata Cina] MMND-211 AV Mustahil Slim H-Cup Badan Sempurna Dia terlalu matang untuk menolak, jadi saya menurutinya","lastmod":"2025-12-14","duration":"01:46:57","url":"/play/18955003.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvN2Q4MzYwMjE2ZjY5NzY4OThiNmRkODgzZTQ1MjhjZjEuanBn.cache","vod_id":18929551,"title":"Seorang gadis baru berambut merah yang cantik dengan tatu ikan memakai pakaian dalam seksi dan thong. Dia bogel sepenuhnya dan menyentuh vulvanya sendiri. Sangat memikat, jangan ketinggalan jika anda suka!","lastmod":"2025-12-14","duration":"00:30:31","url":"/play/18929551.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTZmNzNhMzI4NDI2ZTZjMjg5NmI0OTljNDJhNjJhMjkuanBn.cache","vod_id":19008690,"title":"NASH063 sudah lama mempunyai anak dan masih seorang ibu yang sangat memikat. Menyentuh tubuh yang matang dan bogel itu membuatkan saya, seorang dara, terangsang, jadi saya tidak dapat menahan keterujaan saya. Saya tahu ia salah, tetapi saya masih melampaui batas.","lastmod":"2025-03-24","duration":"03:58:36","url":"/play/19008690.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDdhOWFkNmNhNTI1MGNhNDE2MmQzZmYxNzE2MmMzMzcuanBn.cache","vod_id":18970492,"title":"Karya platinum jurugambar terkemuka Xiuren.com, Guo Ge ✅ Payudara besar yang cantik, kaki panjang, model seksi menunjukkan tiga mata mereka dalam sesi foto peribadi ✅ Punggung yang gagah, vulva ketat, sangat menggoda, tiada air, imej asal 4K","lastmod":"2025-03-23","duration":"00:31:23","url":"/play/18970492.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvY2FhMzRhZGJiYjhkNzQzYWQ0ZWNlZjA4ZjI1OWNjY2EuanBn.cache","vod_id":19152975,"title":"Sayang Pomelo, seorang gadis muda yang berkualiti tinggi, suci dan cantik","lastmod":"2026-04-12","duration":"29:59","url":"/play/19152975.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjRhMGVjNDYxMWM4NDdiMDg4NGQ0MThiN2YxMDU2YWUuanBn.cache","vod_id":18925891,"title":"Penstrim popular kembali dengan penuh gemilang! [囍-Pesta Hari Perempuan] Germo Chongqing mengetuai sekumpulan besar gadis dalam siaran comeback, termasuk pramugari, pelajar, dan gadis dari tahun 2000-an hingga 90-an—ada sesuatu untuk semua orang, daripada yang montok hingga yang langsing.","lastmod":"2025-12-14","duration":"04:07:49","url":"/play/18925891.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZTVlZWI5MDhhN2UwMDQxNTVmZWE3NjNlZTk5MDcyNDUuanBn.cache","vod_id":19147716,"title":"Kecantikan muda tahap dewi, lembut, dan tulen","lastmod":"2026-03-11","duration":"45:36","url":"/play/19147716.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZWIzYjZkOGEzY2RmODkwOGI3ZTZhOTAwZmUzZTkzZDMuanBn.cache","vod_id":19157093,"title":"Dewi super cantik yang baru dinobatkan pergi ke industri filem dewasa dan ditiduri tanpa kondom oleh babi hutan kecil yang berkulit cerah dan seksi - Bahagian 2","lastmod":"2026-05-08","duration":"50:17","url":"/play/19157093.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjVjY2Y0NTg2ZDA4NTA4YWZlMmIzY2RmZjFhNWZjNDEuanBn.cache","vod_id":18942477,"title":"[S Yaqi] Seorang gadis bernilai tinggi yang memakai topi besbol menggunakan penggetar pisang untuk melancap, memakai stoking hitam terbuka di kelangkang dan memasukkan jarinya ke dalam penggetar sambil ia ditolak ke dalam dirinya, menyebabkan dia mengerang.","lastmod":"2025-12-14","duration":"04:58:26","url":"/play/18942477.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MDcvODFhYzM4Y2E3NDhlMmExNDI4ZTZlMTk3NTQ1MWE1ZmEuanBn.cache","vod_id":19166925,"title":"Apabila saya menghubungi perkhidmatan kesihatan penghantaran, saya bertemu dengan seorang kerani yang cantik di kedai bento yang saya kunjungi setiap hari. Dia memberitahu saya, 'Mine Reiko DAHLIA'","lastmod":"2026-07-11","duration":"02:00:11","url":"/play/19166925.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9pYy4xNTUyNTAyMTQudG9wLzIwMjYwMjI1LzFhRjhlTXhQLzEuanBn.cache","vod_id":19145442,"title":"Selfie, godaan zakar, melancap bersama PYM-534","lastmod":"2026-02-26","duration":"03:45:12","url":"/play/19145442.html"}]},
videoTitle: 'Penstrim langsung wanita cantik itu mempunyai wajah dan susuk tubuh yang hebat; melancap dan rangsangan farajnya sangat memikat.',
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=/`;
}
};
}