Keseronokan Asrama Universiti: Mengintip Pelajar Kolej Wanita Bermain Permainan dan Bergosip di Dalam Kelambu. Lubang Merah Jambu yang Indah, Menarik dan Merangsang, Wajib Dilihat!Keseronokan Asrama Universiti: Mengintip Pelajar Kolej Wanita Bermain Permainan dan Bergosip. Lubang Merah Jambu yang Indah, Menarik dan Merangsang, Wajib Dilihat!","lastmod":"2026-07-11","duration":"","url":"/play/19207363.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDMxYWY0MjY5NGE5MGRmMGQ0NTM5NjU2NWIwYjYwNWEuanBn.cache","vod_id":19174219,"title":"Maklumat mewah yang bocor mendedahkan hubungan seorang generasi kedua yang kaya dengan seorang selebriti internet yang mahir teknologi yang menunggang zakar, menggoda dan memaksa dirinya untuk pancutan air mani selepas hubungan seks.","lastmod":"2026-01-15","duration":"0:06:41","url":"/play/19174219.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjU5YTAwYjA4MTIyMDk5ODUwZmM0ZTIwNDA0MmE2ODcuanBn.cache","vod_id":19128739,"title":"Lelaki Berpakaian Dalam, memakai seluar dalam seksi guru tarian di kepalanya, menjadikan zakarnya lebih keras!","lastmod":"2025-03-26","duration":"0:06:38","url":"/play/19128739.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjAyYjE1YWYxNjU0NjgwZmUwM2IxMDU4YjM0NGRhNDcuanBn.cache","vod_id":19102846,"title":"Dari pagi hingga malam, 12 jam ekstasi orgasme yang mengasyikkan dengan zakar di dalamnya. Selepas orgasme, serangan seperti omboh yang berterusan dan sengit pada alat kelamin yang mengejang.","lastmod":"2025-03-26","duration":"2:00:24","url":"/play/19102846.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZmQ4ODg3NGFmMjY4MTg3MjRkODI4MzFlM2E3NGMwZDAuanBn.cache","vod_id":19101774,"title":"7 “Ini untuk awak”—ibu tiri itu berkata demikian sambil mendakwa dia sedang menelan zakar besar anak daranya.","lastmod":"2025-03-26","duration":"3:09:32","url":"/play/19101774.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYzExMmI0ODA2MzhlNGM2NTY2NjZkY2MzMmQyNjdhMjkuanBn.cache","vod_id":19071481,"title":"Lelaki tua yang gembira melakukan penembusan berganda dengan seorang gadis muda berwajah muda dan payudara besar. Gadis itu suci dan memikat dengan lubang merah jambu. Kedua-dua gadis itu menyentuh lubang satu sama lain, bergesel dengan penggetar, melakukan seks oral, dan kemudian melakukan hubungan seks antara satu sama lain.","lastmod":"2025-03-26","duration":"1:22:20","url":"/play/19071481.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOWYyMjE1MDgwYzI0OWExNTA0M2M3NzBlNjJiZWI3NmMuanBn.cache","vod_id":19073400,"title":"OKAX597 ialah sebuah dokumentari yang menegangkan tentang seorang isteri yang tidak melakukan hubungan seks selama lebih setahun dan digoda (sumbang mahram) oleh rakannya ketika mereka bersendirian – empat jam voyeurisme.","lastmod":"2025-03-26","duration":"4:00:20","url":"/play/19073400.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMDIvYjM4YzI0OGVhMTk5M2RhOGIyMWI1NDg1MmFhN2JmMmIuanBn.cache","vod_id":19157428,"title":"Dia sebenarnya menggoda jiran wanitanya, seorang pelajar kolej dari kampung yang sama, dan memperdayanya untuk melakukan hubungan seks di dalam rumpun pokok; farajnya juga berwarna merah jambu.","lastmod":"2025-10-01","duration":"0:12:31","url":"/play/19157428.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODNkNzQ4MGNiNmRhNTBkNDk3OWJlYThmM2Q2YjVmZTMuanBn.cache","vod_id":19063639,"title":"Seorang pelajar kolej bawah umur yang berkulit cerah dan menawan dengan payudara berbentuk F-cup yang tinggal di kawasan luar bandar bermimpi untuk menjadi bintang.","lastmod":"2025-03-26","duration":"2:00:17","url":"/play/19063639.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYzJhMzU3YTdhZGRjYjQ0MWRjYzBhMWNiMWJlMTE3ZTAuanBn.cache","vod_id":19065156,"title":"Saya tak tahan melihat zakar dan seks bertiga di khalayak ramai. [Tamano]","lastmod":"2025-03-26","duration":"0:09:26","url":"/play/19065156.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMmNlYWE0YWRhZTI0ODBkYjAyNGJlODFmY2MyNGYxYWMuanBn.cache","vod_id":19057778,"title":"Pipi tidak sabar untuk bertemu dengan sahabat baiknya.","lastmod":"2025-03-26","duration":"0:10:45","url":"/play/19057778.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MTkvNjYxODUwNWU5MTY3NDgyOTljYmFmNDZlOWY4NGUzNGUuanBn.cache","vod_id":19204339,"title":"Dua orang rakan saya, kedua-duanya ibu dan perempuan, keletihan dan sakit belakang setelah keletihan sepenuhnya akibat pencipta PUA yang sangat berkuasa ini.","lastmod":"2026-06-18","duration":"0:38:17","url":"/play/19204339.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvN2NkYzgxZTE5MGI1NjNhMTEyYjYwNDQzOTgyYzY0NWYuanBn.cache","vod_id":19124070,"title":"HAWA184 memberikan kondom kepada seorang suri rumah amatur dan menginap di rumah seorang pelajar kolej biasa selama satu malam. Tidak berpuas hati dengan kali pertama, dia mengalami ejakulasi dalaman sebenar yang kedua pada malam itu. Suri rumah langsing bercup G, Imi, berumur 36 tahun dan mengalami orgasme gila dalam posisi menunggang berkelajuan tinggi.","lastmod":"2025-03-26","duration":"2:16:14","url":"/play/19124070.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTY1OGRiNWViMzM5MjIwNjgxNDA3ZTNhYTdkZGRjZTUuanBn.cache","vod_id":19083319,"title":"Seorang gadis muda yang ceria dengan payudara yang tegap, memakai pakaian dalam yang mendedahkan, dilihat menguli payudaranya dengan skirt pendek seragam sekolah, berlutut di atas kerusi, menjolokkan punggungnya dan menggeliat, dan terlibat dalam sentuhan diri yang menggoda dan membuka kakinya.","lastmod":"2025-03-26","duration":"3:10:11","url":"/play/19083319.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MDgvMzViZGNkYmMwY2YyYjU3MDlmMWJjNmM5ODQzY2E2NDIuanBn.cache","vod_id":19138213,"title":"Bintang lucah internet Korea menjalinkan hubungan dengan kekasih, mempunyai zakar yang besar dan meniduri kekasihnya hingga mati.","lastmod":"2025-06-08","duration":"0:08:58","url":"/play/19138213.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MDYvMmJkOTY2MTA2ODZlZjJmNmU0ZTA0N2NhODFkMDdjOWYuanBn.cache","vod_id":19203019,"title":"Baidu Cloud membocorkan rakaman seks peribadi seorang pelajar bahasa asing universiti selepas putus cinta, yang dibocorkan oleh teman lelakinya yang jahat.","lastmod":"2026-06-05","duration":"0:21:35","url":"/play/19203019.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMDEwMzJjOGZlNGE3ZjNkODhhOWU2ZDhhOGEyYzQxNTEuanBn.cache","vod_id":19055006,"title":"Pelajar bermain Fortnite dan meminta abang tiri membuat kerja rumah - Mimi Boom","lastmod":"2025-03-26","duration":"0:10:13","url":"/play/19055006.html"}]},
videoTitle: 'Walaupun sudah mempunyai teman lelaki, pelajar perempuan yang memikat ini masih menghisap zakar - Himekawa Yuna.',
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=/`;
}
};
}