Aku pergi ke hotel dengan seorang pelayan yang dipuji karena kecantikan dan sosoknya yang seksi. Aku mencoba memikat pelayan yang sudah menikah itu dengan tip... selama 4 jam. (Kucing Tongkat Lumpur - Emaniel)","lastmod":"2026-07-11","duration":"","url":"/play/19267950.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDhkMTUwMGU0ODJlYTk3NzZiZWU2Yjc5MGQwZDcxNGIuanBn.cache","vod_id":19071631,"title":"APKH-190 Pemasok kecantikan berpayudara besar, adegan seks erotis di hotel (POV). Aku ingin menjilat air manimu dan meminumnya... Gadis bisnis bantal adalah jalang murahan dengan payudara H-cup, Reona Tomiyasu, 26 tahun.","lastmod":"2025-03-29","duration":"2:20:43","url":"/play/19071631.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMDZjYmQxZjlmMzI0NTFlYjE0YmMyMmEzMDM0ODc3MjYuanBn.cache","vod_id":19105107,"title":"DOCP-039 Seorang wanita menikah yang berbudi luhur dan cantik, diperintahkan oleh bosnya yang keji untuk melakukan tindakan seksual, mengalami beberapa orgasme di depan suaminya.","lastmod":"2025-03-29","duration":"3:36:01","url":"/play/19105107.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODVmYmE0NTFlOTU4MWE5NDgwOWU3NjM0OTgwODc0MGIuanBn.cache","vod_id":19128826,"title":"PES-083 Gadis cantik kelas A super dan pornografi kejam × permainan yang hampir ilegal! Seks primitif dengan pria kecil yang nakal dan vagina muda! Set 2 CD - CD1","lastmod":"2025-03-29","duration":"2:00:43","url":"/play/19128826.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzc2MGQwYzAwY2QyZWE4Y2FlNTk3MDRjNGQ4MWM4NmEuanBn.cache","vod_id":19174155,"title":"BTH025 Takikawa Kanon, seorang wanita jalang dengan kaki kepiting, meremas kepala penis Anda dengan pinggulnya yang menggeliat dan kakinya yang saling bertautan, menekan dirinya ke tubuh Anda dalam hubungan seks yang intim.","lastmod":"2025-03-30","duration":"0:42:31","url":"/play/19174155.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZWIwNjZjNDIyNzlkMzI0OTdhM2QwNjFmYjYzMGYyNzEuanBn.cache","vod_id":19129489,"title":"PPPE-074 Cukup panggil saja, dan seorang wanita muda bertubuh seksi akan datang untuk memuaskan hasrat seksual Anda. Toilet manusia dan hubungan heteroseksual kotor yang berlumuran cairan tubuh.","lastmod":"2025-03-29","duration":"2:26:46","url":"/play/19129489.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMGY0YjAzOWQwZDU4ZDVjNDUwOWUxNjczZWYzOWYzYzQuanBn.cache","vod_id":19104833,"title":"[Ulasan HD] ma435MFCS-040 [Seks primitif di hari yang sama dengan seorang gadis berpayudara besar yang payudaranya sangat besar sehingga bahkan penis yang ereksi penuh pun dapat terkubur di dalamnya]","lastmod":"2025-03-29","duration":"1:17:01","url":"/play/19104833.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjYzYjJkNzVlNGIyMWZiMDVlMTk4MWI4ZWYwZGUxYTEuanBn.cache","vod_id":19158950,"title":"Aku menitipkan putriku kepada seseorang. Seorang pria paruh baya yang ingin difilmkan saat berhubungan seks direkrut oleh ayahku melalui sebuah situs web. Surga.","lastmod":"2025-03-30","duration":"2:03:37","url":"/play/19158950.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMzAyNzNhMmZjMmYyOWE1MWYxYmUwMWVjZDUxMWFiNGIuanBn.cache","vod_id":19095428,"title":"Saya berhubungan seksual dengan istri seorang gangster di kamar seberang jalan.","lastmod":"2025-03-29","duration":"2:00:46","url":"/play/19095428.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMzFlNWY1NzEwZmIyZjY2MjlkYzk2YzcyNTg2NDUxZTMuanBn.cache","vod_id":19081859,"title":"Seorang aktris sinetron baru memberiku seks oral singkat, lalu aku ejakulasi di dalam dirinya.","lastmod":"2025-03-29","duration":"0:57:57","url":"/play/19081859.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDcxNjNkYjAwOWQwYTIzMmUxOWFmMTcyNDc4MmZjNzQuanBn.cache","vod_id":19252075,"title":"DNIA-006 - Bocoran: Pembunuh Wanita, Perbudakan Cabul, Neraka Semut Singa, Babak VI: Tubuh Wanita Meleleh dan Jeritan Gila, Agen Cantik yang Sudah Menikah, Makoto - CD4","lastmod":"2026-04-02","duration":"0:44:25","url":"/play/19252075.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjE4ZDc4ZTA3OGViM2QyOGE5NmNhNGYxNjkwM2ViY2EuanBn.cache","vod_id":19075532,"title":"Berpantang selama sebulan diikuti dengan pelepasan besar!","lastmod":"2025-03-29","duration":"0:13:16","url":"/play/19075532.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNmQzZWUyMDk2OGQ1MWU4NDQ3YjFlMTAwMjZiZjIyNzUuanBn.cache","vod_id":19183630,"title":"SIRO3776 [Syuting Pertama] Aplikasi AV Online → Pengalaman Syuting AV 1015 [Syuting Penetrasi Pertama!] Seorang gadis polos yang trauma karena berhubungan seks dengan pria memutuskan untuk melakukan syuting pertama kalinya! Dia memiliki kulit yang cerah dan transparan serta tubuh yang sangat sensitif dan halus! Dia sangat sensitif, dan dia akan lemas saat Anda menyentuh payudara, bokong, dan alat kelaminnya yang berbulu yang tidak sesuai dengan penampilannya! Namun, masalah tetap muncul selama penetrasi... Apa yang akan terjadi dalam syuting pertama ini?","lastmod":"2025-03-30","duration":"0:59:58","url":"/play/19183630.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDFiYjJiMWYxYTc0MjgwNDc3OGNkZWJmODY1NWM4OWUuanBn.cache","vod_id":19132091,"title":"2. Aku menuangkan air dan losion ke tubuh seorang gadis dengan payudara kecil, lalu berhubungan seks dengannya sementara rambut dan kulitnya basah kuyup.","lastmod":"2025-03-29","duration":"2:00:02","url":"/play/19132091.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMWMxNWI5YzU3NDQ2NjRlODU3MTJlNTI2MjY3NzI0MGQuanBn.cache","vod_id":19260718,"title":"Seorang guru yang gemar berganti pasangan dengan paha seksi dan montok serta fetish kaki menggoda dan memprovokasi penisnya yang sangat masokis, kemudian berejakulasi pada sebuah mesin bor, dan kemudian meniduri Ai Sayama WANZ.","lastmod":"2026-05-26","duration":"1:58:59","url":"/play/19260718.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYmE2ODMxNmU5N2I1NjgzMTU2NGE0ZmQ3ZjVhMDhjOTMuanBn.cache","vod_id":19082406,"title":"Dilatih oleh seorang pria maskulin selama dua hari berturut-turut","lastmod":"2025-03-29","duration":"2:19:14","url":"/play/19082406.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MTUvY2Q3Y2NlNDcxNWVlMTE4YWY4NTc1YTExNWQ0YjFmMWEuanBn.cache","vod_id":19268523,"title":"Bitch Lady Hunts Men - Wanita jorok yang ingin ditembus dan melakukan seks oral #Harumi Fujita 藤田晴美 オルスタックソフト","lastmod":"2026-07-14","duration":"","url":"/play/19268523.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMDJhN2JjODYzODk3MjI0ZDkxMDU2M2I2ODg0ZWI0ZDQuanBn.cache","vod_id":19082973,"title":"Ia meninggalkan seorang ayah yang mesum dan seorang istri yang lemah pendirian.","lastmod":"2025-03-29","duration":"2:25:31","url":"/play/19082973.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZjA2MWNjNDgyM2NkZTkxZjI0YmVhMjM0YzZlNmQ2N2UuanBn.cache","vod_id":19238187,"title":"Dua pasangan terlibat dalam sesi BDSM 4P yang merangsang, satu dengan payudara besar dan yang lainnya dengan kaki yang indah.","lastmod":"2026-01-05","duration":"","url":"/play/19238187.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZjE2OWQxYjdjYWJiNzQzNTE0ZWYwM2YzNzUyMmQ1OTcuanBn.cache","vod_id":19041902,"title":"Aku langsung berhubungan seks dengan seorang ibu rumah tangga berkulit putih dan berbokong besar! Keesokan harinya, seorang wanita yang sudah menikah dan terobsesi dengan penis besar datang tanpa izin, jadi aku berulang kali berejakulasi di dalam dirinya sampai dia puas. (15 Yuri Oshikawa)","lastmod":"2025-03-28","duration":"2:44:53","url":"/play/19041902.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjBiMTFjNGQ2YTBhZTk4ZTY1ZmRjMWVlZDE1NDBiYzcuanBn.cache","vod_id":19180038,"title":"HUNTA714 Dewi kelas kesayanganku ternyata adalah monster penciuman!! ● Bertemu kembali dengan dewi kelas kesayanganku dari masa sekolah!! Juga, pesta perayaan ganda! Ketinggalan kereta terakhir... (inses).","lastmod":"2025-03-30","duration":"4:00:49","url":"/play/19180038.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNTNmNTA1ZjhiNGJlMzk0MjZlYzQ5MjgyYTI0Y2JjZTIuanBn.cache","vod_id":19256907,"title":"Anjing betina kecil berwajah imut dan berpayudara besar itu terus memanggil \"Ayah\" dengan sangat manis. Dia adalah anjing yang sangat patuh dan berperilaku baik.","lastmod":"2026-05-03","duration":"0:02:39","url":"/play/19256907.html"}]},
videoTitle: 'NKKD-205 Seorang wanita yang sudah menikah mengantar keluarganya ke toilet taman!!! 6 Toilet NTR',
language: 'id',
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('Tautan berhasil disalin!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Tautan berhasil disalin!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Tautan berhasil 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=/`;
}
};
}