Filem lucah yang sangat berbahaya! Seorang wanita yang jatuh cinta dibintangi oleh Kohaku Matsumine, Airi Sato dan Homura Mizuki. MERCURY","lastmod":"2026-07-11","duration":"05:00:11","url":"/play/19162874.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvYzY0MzRkN2U3MGY4MmNmNzVjMjBiNmMzNjBkN2UwNGIuanBn.cache","vod_id":19164228,"title":"PastaPaprikaTeyvatFuta短亇动护","lastmod":"2026-07-11","duration":"06:17","url":"/play/19164228.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTU5MmE5NjYwNzQ0OGE1YjM0ODk1ZjIzMTkwMzhkZGEuanBn.cache","vod_id":19023135,"title":"Pengembaraan Xiao Peng Musim 2 Episod 5 HD Uncut S02E05 Parti ladyboy yang seksi dan memikat, ratu ladyboy yang memukau itu sebenarnya telah dipujuk oleh seorang lelaki Cina!","lastmod":"2025-03-24","duration":"16:20","url":"/play/19023135.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWM1OGEzYWJjMmI2ODliNmUwOThkMmI5YTI3YTJiNTIuanBn.cache","vod_id":18997781,"title":"Kisah benar tentang malam yang berbahaya—kisah seorang guru wanita dan seorang pengetua","lastmod":"2025-12-14","duration":"55:33","url":"/play/18997781.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MTgvOTk4Y2Y2MjgzMmYwOWY2Mjc4NDkxNzdlYzM4MDQ1MjEuanBn.cache","vod_id":19038776,"title":"MTALL077 \"Sehari sebelum festival sekolah...\" Dua pelajar perempuan yang jahat menggeledah sekolah pada waktu malam untuk mencari lelaki masokis yang sepatutnya berada di sana pada malam sebelum festival sekolah.","lastmod":"2025-06-18","duration":"02:07:26","url":"/play/19038776.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNmE2ODk1NDBmYmU5YTJkYzU5MzcwODE1ZWRmNGMwNTIuanBn.cache","vod_id":19140691,"title":"Seorang wanita yang sudah berkahwin, namun obses untuk mendedahkan keinginannya… Memikirkan seseorang melihat alat kelaminnya menyebabkan rahimnya sakit… Miho Yukishiro, Miho Yukishiro APNS-392","lastmod":"2026-01-29","duration":"01:57:16","url":"/play/19140691.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMjAvMDhkNzljYzQ1YmI0ZDhmOWUxODQzNGVmZGM3NzNkMDcuanBn.cache","vod_id":19063610,"title":"Linlin yang berusia 20 tahun, seorang pelajar cemerlang dan pelajar kolej yang sangat introvert, agak pemalu dan pendiam semasa pengalaman pertamanya melakukan hubungan seks dengan orang yang tidak dikenali.","lastmod":"2025-12-14","duration":"43:44","url":"/play/19063610.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjc4NmMxMzRlMzZhYWU2ODI1YzcxOTRiYzNmNzNjOTEuanBn.cache","vod_id":18942612,"title":"BBAN-138 Latihan Ciuman Lesbian Ibu Tiri dan Anak Perempuan ~ Teknik Lidah Menantu Perempuan yang Cantik, Merasai Tubuh Berdaging Ibu Mertua","lastmod":"2025-03-22","duration":"01:58:44","url":"/play/18942612.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzZlODA5OWYxMzc5MDNkYWFkYjQ3ZDI5ZDNkMTBkZTkuanBn.cache","vod_id":18984529,"title":"[Tanpa Penapisan] ROE-222 Tubuh ibu yang basah dan lutsinar. Hanya kami berdua di bawah bumbung yang sama... malam hujan lebat. Ibu dan anak lelaki, basah kuyup, Reiko Seo yang melakukan sumbang mahram","lastmod":"2025-03-23","duration":"01:59:47","url":"/play/18984529.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvOTgyOWNjZWVkMDllZTQzZTZlMDRlNWQyOGIzODgyZGMuanBn.cache","vod_id":19140898,"title":"[4K] Sebelum menemui tempat baru... tinggal bersama yang penuh nafsu dengan anak saudara perempuan saya yang datang dari luar bandar ke ibu kota. Qing yang polos dan naif kini berada dalam peringkat perkembangannya. EKDV-795","lastmod":"2026-02-01","duration":"02:04:47","url":"/play/19140898.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzlmMDNmZmQyZmRkMTEyYmMwM2FlYmU5Zjk2Y2ZjZGQuanBn.cache","vod_id":18955100,"title":"[Sarikata Bahasa Cina] SDNM-365 Isteri yang serius ini bekerja di kerajaan daerah selama 7 tahun, dan sebenarnya merupakan wanita yang paling banyak didera dalam sejarah label ini - Mochizuki Hitomi, 33 tahun - Bab Akhir - Ini bukan penggetar","lastmod":"2025-12-14","duration":"02:16:58","url":"/play/18955100.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTMxZDNiNzI4Mzc2MmJmNmE2MTA0ZjM0ZTdiZWQxMDYuanBn.cache","vod_id":18964492,"title":"SABA-809 mengandungi kamera tersembunyi sepenuhnya yang merakam imej seorang wanita lucah sedang melancap tanpa sedar sedang diperhatikan. Dia mengerang sambil melancap dan menyentuh farajnya.","lastmod":"2025-03-22","duration":"03:54:49","url":"/play/18964492.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MTIvNDhjOWE1YWEyMDJkZTdlOTUyZmRlMDM4OTgwZWM4OGEuanBn.cache","vod_id":19042567,"title":"BDST055 Wanita yang sudah berkahwin, kolam air panas, dan hubungan sulit luar nikah. Bahagian 3","lastmod":"2025-07-11","duration":"04:02:24","url":"/play/19042567.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MTUvYjNhMjFhODFjNjE3MDc0NTc3MzAwNWNmNDU1Njc2MTIuanBn.cache","vod_id":19033574,"title":"ALDN275 Seorang wanita yang terkejut","lastmod":"2025-05-15","duration":"01:42:56","url":"/play/19033574.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzkyMjc5MTczNzFiNDBjZjRjNDMwOTMyMzg4NDE4MmMuanBn.cache","vod_id":18955861,"title":"MDTM-074 Saya malu dan segan untuk meminta ibu membelikan saya coli... Hujan lebat secara tiba-tiba mendedahkan payudara saya yang kecil dan sedang membesar, membasahi badan saya yang tidak memakai coli.","lastmod":"2025-12-14","duration":"02:24:17","url":"/play/18955861.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzUxNDFiODcwZTE0ZjRkZjFmNDQ3ZGFhMjI1MmZhZWQuanBn.cache","vod_id":19010946,"title":"MVSD408 Cadangan untuk minum air mani. Dipaksa minum air mani kotor lelaki hodoh hari demi hari… Latihan menelan hipnosis. Maria Nagai…","lastmod":"2025-03-24","duration":"02:21:39","url":"/play/19010946.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMjYvNzIwMmVlNTA4MmJiOTdhMmM2YTQwOGU4MzI4NmI5YWYuanBn.cache","vod_id":19059685,"title":"Gadis-gadis yang berkhemah sendirian sedang mencari lelaki yang mempunyai zakar di tapak perkhemahan! Mereka akan berpura-pura memerlukan bantuan, kemudian berpaling dan menggoda lelaki-lelaki itu. (Pelakon tidak dikenali HUNTC_280)","lastmod":"2025-10-25","duration":"03:52:56","url":"/play/19059685.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzczNzg2ZjcwZDE1ZDk5ZDkzNzI0ODgyNmEyZmFhYmIuanBn.cache","vod_id":19008539,"title":"MVSD408 Cadangan menelan air mani membayangkan dipaksa minum air mani kotor seorang lelaki hodoh... Latihan menelan air mani secara hipnosis untuk Maria Nagai.","lastmod":"2025-03-24","duration":"02:21:27","url":"/play/19008539.html"}]},
videoTitle: 'Dalam kisah Shiezou, RCTD157, tujuh lelaki dan wanita bertukar badan.',
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=/`;
}
};
}