Gadis harimau putih berkualiti tinggi amat menyukai posisi cowgirl dengan kedua-dua lubang terbuka dan dipenuhi dengan air mani.","lastmod":"2026-07-11","duration":"10:55","url":"/play/19166195.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDU3M2ExZGE3OGU2MDIxYTJmZDU2NWRkZjYwYTFmMGQuanBn.cache","vod_id":19156080,"title":"Seorang pengurus kedai yang mesum mengganggu secara seksual dan berulang kali menyerang seorang wanita biasa yang berdada besar yang tidak menyedari dunia sosial bekerja sambilan di sebuah syarikat pengangkutan. (Natural High)","lastmod":"2026-05-02","duration":"04:03:21","url":"/play/19156080.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzA1NjE4YzhlOGZhYTM2ZWRiODg5M2QzZmMzM2Q1MDAuanBn.cache","vod_id":18995931,"title":"Seks tandas, kelab malam, gadis cantik dalam stoking hitam","lastmod":"2025-03-23","duration":"05:05","url":"/play/18995931.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWYwYzBlNmJkYWVmNjY4MWJlZjVjZGU5ZmFhZjQ5YTYuanBn.cache","vod_id":18965853,"title":"Amaran bertenaga tinggi di hadapan! Wang Enqi, seorang T-shirt terkenal dengan 120,000 pengikut di Beijing, yang mempunyai payudara besar, punggung besar, dan tatu yang dominan, mendedahkan wajahnya dalam gambar peribadi ~ Dia benar-benar telah melihat beberapa perkara yang menarik, seperti makan zakar dan melakukan hubungan seks (6).","lastmod":"2025-03-22","duration":"00:02:11","url":"/play/18965853.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MjAvNDI2YTNlZWJjYjM2YzMxNzZiNDYyZDZjNjJjYmQ5ODguanBn.cache","vod_id":19034193,"title":"DASS224 Gadis desa dengan payudara besar, kekasih zaman kanak-kanak, dipermainkan oleh seorang lelaki yang mabuk cinta sehingga lelaki itu menjadi lawannya.","lastmod":"2025-05-20","duration":"01:58:41","url":"/play/19034193.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjZjNzQ0MmEyNjBjYTFjY2ExMGY2NGZiZWQwZjUzMWYuanBn.cache","vod_id":19020914,"title":"Model popular di sesi penggambaran itu ialah seorang gadis cantik dengan badan sensitif dan payudara berbentuk A-cup.","lastmod":"2025-03-24","duration":"02:01:40","url":"/play/19020914.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTAyYTI4NTJlMTEyYWUxYThjYjQxZmRlYWQ0OWQzZGEuanBn.cache","vod_id":18969802,"title":"gadis montel dan tembam dengan payudara besar, stoking hitam, dan kaki putih yang panjang; melancap perspektif orang pertama dengan prop.","lastmod":"2025-12-14","duration":"00:47:20","url":"/play/18969802.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODJhZmQ1ZjNlMThiZjBjNmYyZDlhZjk4ODJjYjgwYjguanBn.cache","vod_id":18934488,"title":"DASD-610 Pelajar perempuan berpakaian seragam sekolah dihipnosis dan dicuci otak, dia menjadi pelacur walaupun dengan segala akibatnya - Edisi Sekolah","lastmod":"2025-03-22","duration":"02:12:51","url":"/play/18934488.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTdkMzE3NzdhNTJkMmQ2OGE5Y2U5NzhkMThhOGQwMjUuanBn.cache","vod_id":18970556,"title":"BBAN-358 Hamba Lesbian Presiden Majlis Pelajar ~Latihan Masokistik Seorang Jelita yang Tersenyum Jahat~ Asai Koharu, Kudo Lala","lastmod":"2025-12-14","duration":"03:02:10","url":"/play/18970556.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvN2JhOTJkNzhmZWZhYWM2OWFjMGMxNjM4MDY1ZTk3OTEuanBn.cache","vod_id":19012395,"title":"Gadis kucing yang comel dan pemiliknya melakukan hubungan seks yang pelik","lastmod":"2025-03-24","duration":"32:47","url":"/play/19012395.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTY3Yjc1YzI0NDYzNzNiZmU5MDE0Y2M3MjA2ZjIwOWUuanBn.cache","vod_id":19016384,"title":"Teman wanita saya seorang wanita tua yang montok dan dia tidak memakai coli, ia tidak tertanggung…! (Shishido Riho)","lastmod":"2025-03-24","duration":"02:24:57","url":"/play/19016384.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MTAvNmVmMjAyMDAwMzVjZTZmNGJkYzc1ZGJlZmIxY2IzYmIuanBn.cache","vod_id":19028636,"title":"Anak tiri yang direndam dalam afrodisiak ialah seorang gadis sekolah menengah yang montok. Tujuh hari berturut-turut cecair badan yang melimpah dan ejakulasi. Xiaohua Nuan WAAA-231-C.","lastmod":"2025-04-10","duration":"02:03:43","url":"/play/19028636.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWFlZTQ0MzZmZjhhZTc0ZTQyOGNlMTVhNDFlMDAyYTguanBn.cache","vod_id":18941538,"title":"LZDM-022 Kisah lesbian tentang seorang pelajar kolej wanita berdada besar dalam kesusahan - Yuzuki Rika Goto","lastmod":"2025-03-22","duration":"02:14:35","url":"/play/18941538.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZDZhZmYwNjM3ZTRjNDRhZTZmZmUyMDdjMWZhM2M3YmMuanBn.cache","vod_id":19154956,"title":"Selebriti internet Korea \"Chicken Coach\", rakan zaman kanak-kanaknya datang menginap di rumah saya. Di sebalik penampilannya yang comel, terdapat sedikit syaitan.","lastmod":"2026-04-24","duration":"13:32","url":"/play/19154956.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzhjNzRhMWNhYzM5YmJlZDViMTBjMTBlN2Q2YzJhYTkuanBn.cache","vod_id":18941937,"title":"Bahagian kedua menampilkan seorang wanita muda yang menawan, berambut pendek, dan berdada besar yang menyentuh dirinya dalam pakaian dalam sambil membuang air kecil dan mandi di bilik mandi. Ia sangat memikat dan menggoda; jangan ketinggalan jika anda suka!","lastmod":"2025-12-14","duration":"00:18:09","url":"/play/18941937.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MTAvMjZhNjRjOTNlYjRkOTUzYjUzN2Y0NzkzM2Y5NzhkNmYuanBn.cache","vod_id":19046343,"title":"Koleksi UMSO591 yang menampilkan 18 Pelakon Wanita Berdada Besar (I-cup dan ke atas)","lastmod":"2025-08-09","duration":"04:02:07","url":"/play/19046343.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MTEvZDU2ODM2N2I2ZDUwNDA5OGEzMjAxMzc0YTk5ODA5ZTEuanBn.cache","vod_id":19028776,"title":"Kakak perempuan teman wanita saya mempunyai payudara J-cup. Semasa teman wanita saya berada di kampung halamannya, saya melakukan hubungan seks dengannya sepanjang malam. (Mizuhara Misono HODV-21694-C)","lastmod":"2025-04-11","duration":"01:59:48","url":"/play/19028776.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTViODg4NjU2OTY4OTQxMGQ0MTQxN2U5OWE3ZDk5Y2QuanBn.cache","vod_id":18963558,"title":"\"Koleksi Lengkap Bocor Peringkat Atas\" - Menunjukkan wajah anda adalah kuncinya! Sasaran tandas daging manusia: 100 orang membunuh Twitter bernilai tinggi berkualiti tinggi payudara besar kontras jalang [Juice Summer] menembak pelbagai seks peribadi Ziwei (23)","lastmod":"2025-12-14","duration":"00:02:15","url":"/play/18963558.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTY4MmUxNmQ1NTI1MjRjY2Q2Yjk1YTgwNzMwNWFlMWUuanBn.cache","vod_id":18995060,"title":"[Definisi Tinggi] 521MGFX-071 Seorang Isteri Montok Berhutang Banyak","lastmod":"2025-12-14","duration":"51:56","url":"/play/18995060.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvYTYzOTc5ZjE4ZTgwMWI3OTY3ZTk2NmYwMTQ3Y2ExYTEuanBn.cache","vod_id":19158533,"title":"Suri rumah awek NTR ditiduri di sebuah pesta meraikan kenaikan pangkat bos suaminya. Suri rumah awek mabuk dan liar di sebuah perjumpaan keluarga. Wakamiya Wakano, Wakamiya Hono, Karuma.","lastmod":"2026-05-17","duration":"02:02:17","url":"/play/19158533.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzE1NDZkNGIwODdjY2E4M2JmNmRjNjYyYzM5NGIwMWMuanBn.cache","vod_id":18963904,"title":"[Tanpa Penapisan] FSDSS-524 Anak suami baru ibu bapa saya pernah menjadi pembuli... jadi saya dengan kesal bermain dengan payudaranya yang berbentuk cawan G di rumah.","lastmod":"2025-12-14","duration":"02:03:35","url":"/play/18963904.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNGM0ZjkwN2M4ZmYwNWIxNTg2MDExYzgyNGVlNGZkYWYuanBn.cache","vod_id":18977204,"title":"393OTIM-279 Pelajar sekolah remaja berpakaian seragam melakukan hubungan seks dengan pai krim lucah - Airi","lastmod":"2025-12-14","duration":"01:18:02","url":"/play/18977204.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYjUzYTBhODBmMmE3ZTIxOTc2MzY0MTgxMzAzMzdmZWUuanBn.cache","vod_id":19139174,"title":"Gadis boling rancangan aneka ragam amatur, menyasarkan punggung! Boling yang mencabar dengan punggung yang lebih berisi! Begitu menyeronokkan sehingga losyen menitis dan dubur berkedut! Tali pinggang keledar ditanggalkan. Pelakon tidak dikenali SVVRT-069","lastmod":"2026-01-19","duration":"03:23:03","url":"/play/19139174.html"}]},
videoTitle: '[4K]BBTU-037 Kelab Buli Gadis Berpayudara Besar Mizuhara Misono',
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=/`;
}
};
}