Bayi Gila Kita (Pertemuan Seksual Spesial Waktu Terbatas) Ruang Rahasia di Mana Cairan Cinta, Suhu Tubuh, dan Air Liur Saling Menginginkan Lupakan Pertama Kali dan DASS-487-C Pertama","lastmod":"2026-07-11","duration":"02:12:06","url":"/play/19166856.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MjkvODlkNzgyYmJkOGQ3NjViZmY2NGIzMTUyYmMxOTE4N2QuanBn.cache","vod_id":19166274,"title":"Apakah Anda benar-benar berusia 40 tahun? Memiliki penampilan yang bagus dan payudara yang terlalu besar! Kecanduan aktor seperti キャシー・ヘブン, キアラ・ロード, メリーナ・メイ dan aktor lainnya ルビー","lastmod":"2026-07-11","duration":"03:59:13","url":"/play/19166274.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzcwZTQzYjA2NzBjOWU3NmQ4ODhjNjRkZjdhZjg1MTAuanBn.cache","vod_id":18943126,"title":"MZQ-009 - Gadis amatir, pertahanan lemah, 8 jam","lastmod":"2025-12-14","duration":"02:43:18","url":"/play/18943126.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MjYvYTU0YjE5MWEwNTUxNzA0M2Q5MTMyNTdmNmRhNDE3ZWUuanBn.cache","vod_id":19054282,"title":"Adik perempuan yang nakal merayuku, menjilatku, dan membuatku mencapai orgasme! #ShunkaSuzumura HGMJ017","lastmod":"2025-09-25","duration":"01:39:03","url":"/play/19054282.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTZhMjI0NzNjYmI5NzhjYThhODNmYzViZTFmNGI5MDguanBn.cache","vod_id":18939367,"title":"[Subtitle Bahasa Mandarin] PPPD-814 \"Apakah kamu ingin ejakulasi di dalamku?\" Kami bertanya pada seorang gadis berpendidikan liberal dengan payudara besar yang tersembunyi.","lastmod":"2025-12-14","duration":"02:27:19","url":"/play/18939367.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMzYwOWEyZWMxMjZhMzljMGU0ZGFhNjRhN2JiMmJkNWIuanBn.cache","vod_id":19136718,"title":"Pendatang Baru: Seorang penjual bunga yang ceria, sehat, dan langsing, tubuhnya secerah matahari, gemetar dan menggigil saat ia melepas pakaiannya, dalam AV (Aktris Tidak Dikenal) MIFD-647","lastmod":"2026-01-04","duration":"02:53:23","url":"/play/19136718.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMmFlM2M1MDkwNGIzN2ZjZTU0N2UyNTgzNmM4MjE4MTguanBn.cache","vod_id":19136938,"title":"Adegan seks jarak dekat yang dewasa, intens, dan lengket, 4 jam 7 menit, aktor tidak dikenal, PRMJ-328","lastmod":"2026-01-06","duration":"04:05:33","url":"/play/19136938.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MTQvOWFkNTA5NTBmM2Y5YzZiM2MzMDllYzUyZTEyZTE4OTMuanBn.cache","vod_id":19028904,"title":"Sebuah ritual keagamaan yang membuat seorang perawan kecanduan seks dalam waktu satu bulan. Dokumen Miharu Hanesaki tentang kehilangan keperawanannya dan hidup bersama. Miharu Hanesaki SSIS-451-C.","lastmod":"2025-04-13","duration":"02:41:57","url":"/play/19028904.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2ZiNjIwYjI4ODQ0ZWViNzE1NzlmMWIzMDg5YTkzM2EuanBn.cache","vod_id":18950932,"title":"300MAAN-492 Bos wanita yang tegas x Diare! Dia biasanya gadis yang dominan... tapi sekarang dia mendambakan penis pria! Di dalam taksi, dia tidak bisa menahan diri, masturbasi dengan kaki terbuka lebar! Tiba-tiba terjebak dalam hubungan seks bertiga, dia tidak ragu untuk memberikan seks oral! Secara bersamaan menerima seks oral dan vaginal, dia mengalami beberapa orgasme! Akhirnya, dia diejakulasi di wajahnya dua kali, membuatnya benar-benar basah kuyup karena kepuasan. [Apakah kamu ingin mengalami diare dengan rekan kerja wanita itu? 03 ~ Orgasme FP yang indah sambil berteriak menginginkan penis pria!!]","lastmod":"2025-12-14","duration":"01:17:45","url":"/play/18950932.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MjEvNzE0YjkyZjY3NWEzZjYyY2ZlY2UwZGRkZmY4Mzc5NzIuanBn.cache","vod_id":19053610,"title":"Gadis seksi berlumuran minyak melakukan seks oral dan seks setelah pulang kerja - MonaCharm","lastmod":"2025-09-20","duration":"13:37","url":"/play/19053610.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MDcvMDIwZTVlOGY4NGViMTI3ZTA5Zjc5ZmI3ODJjOTVmYzUuanBn.cache","vod_id":19051367,"title":"Pacarku Suka Menjilat Penis Tapi Apakah Teresa Milik Teresa? – Aktris: Hina Torigaku, Yuri Adachi, Kurumi Amai, dll. AKDL314","lastmod":"2025-09-06","duration":"01:56:36","url":"/play/19051367.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9hLjE1NTEyMTAudG9wLzIwMjUxMTI3L053eXRaWExVLzEuanBn.cache","vod_id":19066655,"title":"~Anak laki-laki penyendiri itu!! Monster seks paling ganas~ Nafsu tak terbendung!! Sperma melimpah!! Pendukung dan kenalannya... Aktor tak dikenal MFO_080","lastmod":"2025-12-14","duration":"02:08:48","url":"/play/19066655.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMTYvMjZkNjBmZjY2YTZlMzU3MzgwNGRmZmNmNmJlNDA2MjYuanBn.cache","vod_id":19062799,"title":"Perselingkuhan di luar nikah yang dilakukan wanita berusia 50-an sering digambarkan sebagai sesuatu yang rahasia dan kompleks secara emosional, sehingga perselingkuhan dan hubungan seksual di luar nikah sangat mungkin terjadi. (Aktor tidak dikenal EMTH_155)","lastmod":"2025-12-14","duration":"02:32:33","url":"/play/19062799.html"}]},
videoTitle: 'Kami menjual video seorang gadis tenis yang tidak tahu malu. Aktris tidak dikenal COM_412',
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=/`;
}
};
}