MUDR-365 Seorang pelajar perempuan yang cuba berlagak dewasa menyelinap keluar dari lawatan sekolahnya dan pergi untuk temu janji ciuman Perancis dengan seorang lelaki yang sebaya dengan bapanya. Kemudian mereka pergi ke sebuah hotel.","lastmod":"2026-07-11","duration":"03:01:24","url":"/play/19152972.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYWFhMTFiZTMzZTc5OTNiMmUwMjgwMjA4ZDZkNDkyY2YuanBn.cache","vod_id":19041944,"title":"Amat disyorkan! Seorang dewi yang suci dan cantik dengan payudara yang menakjubkan [Moonlight Diao Chan] – susuk tubuhnya sungguh menakjubkan!! _0.","lastmod":"2025-03-19","duration":"00:00:38","url":"/play/19041944.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MzAvNDY5MTY1N2QzZjk3YTRiYjFiZGY0NTMwZTZjMjYyNzMuanBn.cache","vod_id":19114533,"title":"[Gadis Harimau Putih Seksi Xiaoxi] Kecantikan awet muda yang indah, vulva yang lembut dan segar, basah dan menggeletar kerana orgasme.","lastmod":"2025-07-30","duration":"10:45","url":"/play/19114533.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTVjYmVlN2I3OGJlYTNiYjdhYTBiODA0NDFlMTQyNmUuanBn.cache","vod_id":19033494,"title":"ADN-542-C: Sebuah kisah tentang seorang gadis yang akhirnya menemui kebahagiaan tetapi dikuasai oleh air mani yang tercemar. Gadis Hanyut EPISOD03","lastmod":"2025-03-19","duration":"01:58:44","url":"/play/19033494.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZjUwNDA5NWRmMjBjZGQ5YmJmNTIzNmFkNTE3MzQ1ZWIuanBn.cache","vod_id":19135065,"title":"Gadis penari yang sangat suci dan polos bercinta dengan penuh semangat","lastmod":"2026-02-17","duration":"43:52","url":"/play/19135065.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMTkvNjg2M2U4YzlkMjI5MWRlYzFjMjQyNmYzYjVhM2M3NTEuanBn.cache","vod_id":19129325,"title":"787HNAMH-002 Seorang pelajar perempuan berpakaian seragam mendermakan pai krim sebenar; seorang lelaki tua mengeluarkan air mani pekat dua kali. (Kana)","lastmod":"2026-02-13","duration":"59:07","url":"/play/19129325.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMThmODU0MGE0YWQwOTg4NjZmOWU1M2Q0NGNmNjkzZTQuanBn.cache","vod_id":19054264,"title":"Seorang remaja perempuan yang meminjam wang telah dirogol dengan kejam oleh pemiutangnya tanpa kondom!","lastmod":"2025-03-19","duration":"20:57","url":"/play/19054264.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjVkYTU4YWY2MjNiZTJlYTk4MWJlMjIyMTZmZWM5Y2QuanBn.cache","vod_id":18971414,"title":"MIDV-580 ASMR yang bermandikan otak, bercakap manis, lima deria kecantikan jahat melelehkan sokongan melancap","lastmod":"2025-03-19","duration":"02:00:04","url":"/play/18971414.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MDkvNzk3MjFmMmI4MDliM2ExNDg0Yzg2YTc2MWRlNjFhNzkuanBn.cache","vod_id":19115751,"title":"Pai Buah Menerangkan Perkembangan Sumbang Mahkota Seorang Gadis Cantik","lastmod":"2025-08-09","duration":"14:17","url":"/play/19115751.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNTkwOTM3YmQxZjhhY2I5MWY3NDY0YzhlMGY3N2U4ODcuanBn.cache","vod_id":19147457,"title":"Memakai cermin mata, dia kelihatan sangat polos; dia mempunyai faraj yang tidak berbulu dan lembut; hubungan seks dengan teman lelakinya tidak mencukupi, dia sangat lucah.","lastmod":"2026-05-11","duration":"00:00:24","url":"/play/19147457.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOGEzYzc5M2VlMDhiM2RhNjZjYTQ3Mzg3MGM0ZmNjNDAuanBn.cache","vod_id":19071616,"title":"Seorang gadis muda yang suci dan polos.","lastmod":"2025-03-19","duration":"01:27:21","url":"/play/19071616.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOGRjYWZjODAzMDM0MGZkZjA1YTBiNTgwMjE3NTlhZjEuanBn.cache","vod_id":18933283,"title":"Seorang wanita muda berambut pendek, tulen, manis, dan menarik tahap 10 berani mendedahkan payudara besarnya di taman yang kosong.","lastmod":"2025-03-19","duration":"07:10","url":"/play/18933283.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9ndXp3aWF5ei5jb20vMjAyNjAyMjIvdEx3VTZCdkMvMS5qcGc/dD0xNzcxODI1MzA2.cache","vod_id":19139760,"title":"Perbezaan antara gadis yang berhubung dengan lelaki dan gadis yang memakai pendakap gigi amat ketara.","lastmod":"2026-02-23","duration":"30:56","url":"/play/19139760.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MDkvMDg3Y2VlYTIxZGFiMmZhNDM2MWY2MWIyMWNmNDQ0ZGMuanBn.cache","vod_id":19120045,"title":"Gadis cantik ini polos dan menggoda; dia kelihatan berkelakuan baik tetapi sebenarnya seorang perempuan jalang.","lastmod":"2025-09-09","duration":"07:40","url":"/play/19120045.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjEzNzlmZWNhYmY3Nzc4YjczMDBlZjgxZmYyNzJmNDQuanBn.cache","vod_id":18982689,"title":"STARS-643-C Seorang gadis cantik yang bersemangat tinggi ketika pulang dari festival telah menjadi mangsa cabul jarak dekat di dalam bas malam, mengubahnya menjadi seorang wanita yang mudah mesra dan akan meregangkan kakinya pada bila-bila masa.","lastmod":"2025-03-19","duration":"01:59:44","url":"/play/18982689.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjRlY2IyOTM3OTA2MWM0NjM4MGMzYjdjNTA5NmUxYjkuanBn.cache","vod_id":18955371,"title":"Fu Jing dari Rocket Girls - Adegan Bersemangat Tanpa Penapisan","lastmod":"2025-03-19","duration":"14:34","url":"/play/18955371.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MTcvZmE1ZGRhNjQ3YWZlM2JkMjU2ZDkyYmQwMGQ4ODBkOTIuanBn.cache","vod_id":19116867,"title":"#1 Kecantikan Terunggul Hong Kong, Faraj Tanpa Perlindungan, Kering dan Lembut Ala Pulau","lastmod":"2025-08-17","duration":"07:58","url":"/play/19116867.html"}]},
videoTitle: 'Seorang pakar feng shui penipu menipu gadis-gadis muda yang tidak bersalah untuk melakukan hubungan seks dan mengubah nasib mereka - Jiu Jiu',
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=/`;
}
};
}