OVANTR: Pertemuan Pertama yang Pelik Antara Kakak dan Adik Lelaki dengan Kompleks Kakak","lastmod":"2026-07-11","duration":"16:27","url":"/play/19162159.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmNlNDBhNmZhNDlhNzczOWIxOGE2ZjM5ZWQ2MjE0OTkuanBn.cache","vod_id":18948926,"title":"MVSD-377 Perhambaan kini mungkin! Menelan kini mungkin! Servis tekak dalam-dalam. Minum air mani dengan patuh. Pembantu rumah nakal, Mirei Morishita.","lastmod":"2025-03-22","duration":"02:31:14","url":"/play/18948926.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNmNhNWJiMWU2YjJmZjk5YzU0MTJkODQyMzYxNzU4MzguanBn.cache","vod_id":19008814,"title":"PGD763 Kakak perempuan Sakurai Ayu yang berambut pendek dan lucah.","lastmod":"2025-03-24","duration":"01:58:25","url":"/play/19008814.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMzMxZDA4MjljNDViYmE0MDRiMzNmODJhODk1ZGZlYjMuanBn.cache","vod_id":19156352,"title":"Xiao Chen memilih perkhidmatan temu janji dalam talian yang mahal untuk gadis Gen Z yang cantik.","lastmod":"2026-05-03","duration":"49:33","url":"/play/19156352.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDA4ZTAwZWM1OTJiZDUxNWNlY2JkOTJmYjYzODVhN2EuanBn.cache","vod_id":19018978,"title":"Seorang wanita muda yang memakai stoking hitam dan pakaian dalam telah melakukan hubungan seks dengan teman lelakinya, dan seks oral serta menelan air maninya sungguh mengujakan.","lastmod":"2025-03-24","duration":"12:30","url":"/play/19018978.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNWIyMTYxYWE5ZDNlNjFmYzMzNDIwYTNkNTBlMGI3ZWQuanBn.cache","vod_id":18973983,"title":"[Tanpa Penapisan] SNIS-397 Saya akan dirogol. ~Kisah seorang kakak perempuan yang jatuh cinta dengan adik lelakinya~ Angel Moe","lastmod":"2025-03-23","duration":"02:31:03","url":"/play/18973983.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWVmMzYxNGQ3ODAyNTAzM2I0ZGIxMTdkYjFhZmE5NTAuanBn.cache","vod_id":18989511,"title":"300NTK-175 Seorang gadis G-cup separa Latin yang cantik muncul dalam pose cowgirl yang melantun!! Seluar dalam berdada telanjangnya ditekan kuat ke dalam punggungnya yang terlatih menari!! Payudaranya yang berisi dan cantik bergoyang di bawah rangsangan penggetar!! Dengan badan seksinya bergerak ke atas dan ke bawah, dia memancarkan sejumlah besar air mani dalam pose cowgirl samba, dengan daya yang cukup untuk melintasi khatulistiwa! Video seks di sebalik tabir yang sangat memuaskan!! (002)","lastmod":"2025-03-23","duration":"01:02:01","url":"/play/18989511.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDQ1MTRkZTI2NDk4ZjU1N2YyYzg0YWI2MTFmYjhiMDcuanBn.cache","vod_id":18944855,"title":"MIAE-208 Reunion Sekolah Perempuan, NTR Lesbian, Di Hadapan Teman Wanita Kegemaran Saya Sekarang dan Bekas Teman Wanita Saya Yang Terburuk","lastmod":"2025-12-14","duration":"03:10:34","url":"/play/18944855.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvNGZkODQ2NWNmMGFmN2Y0Njk2YjBmNWE2ZTk4NTUyNmEuanBn.cache","vod_id":19160721,"title":"Tahniah, awak mengandung di tekak! Dengan tercungap-cungap, air mani pekat memenuhi tekaknya. Dibintangi oleh: Sumire Shiratori, Yuni Shiokawa, Yuria Shichimiya dan pelakon wanita lain. Diterbitkan oleh Emuko Lab.","lastmod":"2026-05-30","duration":"04:00:50","url":"/play/19160721.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTEzODY3N2U5NjRlOGMyYjVhMmI3ZDVlN2Q1YzcyY2YuanBn.cache","vod_id":18992086,"title":"BLK-410 Semasa kakak sulungnya tiada, dia datang dan menghabiskan tiga hari melakukan hubungan seks dengan teman lelakinya yang kacak. (Editor Z, Mizuki Nagisa 1)","lastmod":"2025-03-23","duration":"02:40:20","url":"/play/18992086.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjlhNGVkZjMwOWQzZjk3YTQxNmZmYjYxYWE2MTgwNDIuanBn.cache","vod_id":18974520,"title":"[Sarikata Cina] HODV-21759 Kakak perempuan teman wanita saya mempunyai nafsu seks yang tinggi, dan dia menekan punggungnya yang besar ke atas saya! Saya sedang menidurinya seperti orang gila!","lastmod":"2025-12-14","duration":"02:01:13","url":"/play/18974520.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvMmNjNTFjNjQ0YmU3ZTY0MjEzZGZiMTZhODhiNWY1MjguanBn.cache","vod_id":19066295,"title":"Seorang gadis sekolah menengah yang ditipu oleh batang besar. Teman wanita berdada besar kegemaran saya digoda oleh seorang pelajar kolej sambilan dengan batang besar. (Amai Kurumi 348FNTR_005)","lastmod":"2025-12-14","duration":"02:20:10","url":"/play/19066295.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWEwZWM1MWIwMDUyYTc0YTliOTM1YjE4NjNiMzJhYTAuanBn.cache","vod_id":18952271,"title":"STARS-054 Hubungan Sumbang Rahsia Hinata Koizumi dengan Kakaknya yang Berpayudara Besar dan Cabul yang Memusing dan Menyentuh Zakar Saya","lastmod":"2025-03-22","duration":"01:40:12","url":"/play/18952271.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MDYvMDNiYzgzMGVlY2NlYmJhZDQ5MWQ1ZTRlNTQwYWYzODAuanBn.cache","vod_id":19166950,"title":"Cikgu, boleh saya dapatkan sedikit air mani? Rio-chan, seorang cosplayer dari Kansai dengan payudara G-cup, peha penuh dan punggung besar, mendapat cumshot! こすパコハメ撮りおじさん","lastmod":"2026-07-11","duration":"01:06:44","url":"/play/19166950.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjllYzY2ZWEyNDA4Y2RhNjhhZjFlZTNhNjllM2E2MDUuanBn.cache","vod_id":19019354,"title":"Kakak saya seorang gadis yang memikat dan mengidamkan seks.","lastmod":"2025-03-24","duration":"02:07:48","url":"/play/19019354.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjhkMTNiY2UzMTQ0OWE4MmEyNjQzNWRjZjUzNGIyOGUuanBn.cache","vod_id":18966847,"title":"733CLT-008 Penumbuk Besbol: Kakak perempuan jalang, abang dara, ejakulasi sumbang mahram","lastmod":"2025-03-22","duration":"01:01:06","url":"/play/18966847.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MTUvMmFjYjc2MGE4ZGIzM2YzODFlZjkzM2Y2ZmRjZmNhNDQuanBn.cache","vod_id":19046996,"title":"SQTE603 Saya suka gadis-gadis seksi dan baik hati","lastmod":"2025-08-14","duration":"02:20:06","url":"/play/19046996.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNTRkOWJkYzRmZmJjZTcwNWQ0YWMxNzdkNDMwNThlMmEuanBn.cache","vod_id":19136582,"title":"Seorang idola bawah tanah yang kelihatan tidak bersalah tetapi sebenarnya sesat menggoda seorang lelaki yang lebih tua; seorang sesat rahsia yang bermain peranan terlibat dalam penembusan, pengekstrakan air mani, dan permainan peranan seks. Saito Honoka MUKC-098","lastmod":"2026-01-03","duration":"02:02:10","url":"/play/19136582.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvZmQ3NzRiMjljMGZjNWEzNWRhNjE5ZGEzOTJkYjQyYzQuanBn.cache","vod_id":19159314,"title":"Mencari air mani semasa cuti musim panas?! Rima Arai, daya tarikan kanibal jenis-J, F-cup yang tiada tandingan di bawah seragamnya. Arai Rima K.M.P","lastmod":"2026-05-21","duration":"02:01:13","url":"/play/19159314.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2IzNWEyYzE1YmU1Y2U3OTZjMGYzNDQ0YzhiZDVkYjYuanBn.cache","vod_id":19009610,"title":"Tawaran masa terhad: 2980 → 1980. 5 karya berjumlah 160 minit! [Ciri utama didedahkan] Kali pertama saya memberikan pancutan mani kepada wanita muda berkulit cerah dan langsing. -cd3","lastmod":"2025-03-24","duration":"03:50","url":"/play/19009610.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzAxOGFiMzFiYWM4YWE4MDU3ZTg0NTQ0MzJjMWRiYzkuanBn.cache","vod_id":18994941,"title":"Kakak perempuan itu sedang bekerja, dan adik lelakinya secara rahsia memasukinya dari belakang. (Daripada \"Siri Fantasi Keluarga\" - S6: Gred-E!)","lastmod":"2025-12-14","duration":"26:15","url":"/play/18994941.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvN2RlYzE1NTRhZjdlYjEzMmIzYjg1OGVkNTAxMGIwNWEuanBn.cache","vod_id":18950665,"title":"[Sarikata Bahasa Cina] HAR-072 \"Semuanya salah awak, saya khianati awak...\" Seorang isteri yang pendendam menunjukkan kepada suaminya bagaimana dia mencapai orgasme yang menggila dengan lelaki lain di hadapannya.","lastmod":"2025-12-14","duration":"02:00:47","url":"/play/18950665.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvMmFiZTk3YTM0YTljMDQzY2ZiNmUzMTgyMjQyNzdiM2UuanBn.cache","vod_id":19065970,"title":"Seks oral vakum yang menghisap dan memerah keluar setiap titisan air mani pekat yang terkumpul di dalam bola. RARA RARA IPZZ_377","lastmod":"2025-12-14","duration":"02:03:20","url":"/play/19065970.html"}]},
videoTitle: 'Awak suka perempuan yang makan air mani tak? Mereka selalu biarkan saya pancut ke dalam mulut mereka.',
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=/`;
}
};
}