Budak perempuan sekolah menengah melancap di bilik mandi, seluar dalam di atas kepala, terbalik, kencing di seluruh muka","lastmod":"2026-07-11","duration":"08:11","url":"/play/19164989.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYzg0ODI0NTQ3ZDRkMDQ1Mzc1Y2QxZmJiMDkxYTczNTUuanBn.cache","vod_id":19139281,"title":"Alat masturbasi sedia untuk digunakan untuk pemula - Kitaoka Karin - SQTE-628","lastmod":"2026-01-19","duration":"01:43:16","url":"/play/19139281.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZWEyYzgxMDM5MTZjYmY2ZjU5YmFlOWFiOWI4MThjOTUuanBn.cache","vod_id":19026026,"title":"Seorang penstrim langsung yang tulen dan cantik mengenakan bayaran untuk mempamerkan penampilannya yang tinggi, susuk tubuh yang hebat, dan melancap yang bersemangat, yang sangat menggoda.","lastmod":"2025-03-24","duration":"57:03","url":"/play/19026026.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOGZkNTJjZTU3ODM2MDdhNjE5NTkyNTA3NGViMTVmOTcuanBn.cache","vod_id":18968188,"title":"393OTIM-162 Melakukan hubungan seks dengan Karen, seorang wanita cantik berambut hitam pendek.","lastmod":"2025-03-23","duration":"00:59:16","url":"/play/18968188.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZDRiOGFkN2U4MzRmZWFkNWY2MDAzYTRiMjhkNDQ0ZGIuanBn.cache","vod_id":19140681,"title":"Menyapu tepi, gadis kolej sambilan yang pendiam","lastmod":"2026-01-28","duration":"08:03","url":"/play/19140681.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMjUvZTQxMmRhMjczMjJlYTQ4NTcwOWYyZmJkYTNkMWQxODUuanBn.cache","vod_id":19059578,"title":"Ambil seorang wanita cantik dan masuk ke dalam kereta untuk melakukan hubungan seks","lastmod":"2025-10-24","duration":"52:38","url":"/play/19059578.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjQyYzBhMzFiZTJkYWExZjE1NGE1ODUxOThlZGM0ODkuanBn.cache","vod_id":19015762,"title":"LUXU1073 TV Mewah 1071 \"Biar saya sentuh...\" Pengajar golf yang cantik itu teruja dengan zakar yang lebih besar daripada yang dibayangkannya. Apabila dia menonjolkan punggungnya yang seksi dan menggebu, dan dirangsang oleh zakar yang besar itu, dia akan mengalami pelbagai orgasme!","lastmod":"2025-03-24","duration":"01:18:07","url":"/play/19015762.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDIxOTAzNGFmMzU1Y2JkMDY2MjAyMDBmM2E4NGI4N2QuanBn.cache","vod_id":19140638,"title":"Seorang gadis berambut merah dan montok berpakaian seragam menggunakan bahasa yang tidak senonoh dan terlibat dalam interaksi menggoda, bermain dengan payudara, kelentitnya dan melancap dengan prop.","lastmod":"2026-01-28","duration":"30:11","url":"/play/19140638.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTJjNmEzMjAzOTZkZDg2Zjc0NDNhYzBjZGQ3MjM2ZjYuanBn.cache","vod_id":19004720,"title":"[Skandal Dalam Talian] Satu video yang bocor di platform tertentu menunjukkan seorang selebriti internet yang manis dan seksi, Du Chenying, menjalinkan hubungan sulit dengan suami sahabat baiknya.","lastmod":"2025-03-23","duration":"16:59","url":"/play/19004720.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZDQ1NWFlNGIzYTIxZDZmMDk4NTExYTUyMjEwZjc3NDcuanBn.cache","vod_id":19139356,"title":"Koleksi keindahan dalam kostum Hanfu kuno","lastmod":"2026-01-20","duration":"20:18","url":"/play/19139356.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjlmOTM3ZDU4ZjBkY2YwZGY3OGNhMzc2Y2QwYzQyNTMuanBn.cache","vod_id":18929524,"title":"Seorang gadis berambut perang yang cantik, [Dewi Farah], sedang melancap di atas sofa bujang, menjilat alat penggetar, memasukkan jarinya, mengerang dan tercungap-cungap. Sangat menggoda, jangan ketinggalan!","lastmod":"2025-12-14","duration":"00:54:22","url":"/play/18929524.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzAyZmMwOTk0ODM1ZTk5ZGQyY2E3NTdlNGM5Mzk3NTkuanBn.cache","vod_id":18982062,"title":"IMO-023 Semasa melancap di bilik mandi, kakak saya yang bogel tiba-tiba menyerbu masuk! ? Ejakulasi sumbang mahram adik-beradik yang dilarang (3)","lastmod":"2025-12-14","duration":"01:47:10","url":"/play/18982062.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MjMvODljMzc1YWJkMzA5YTE4NWMzZDU0MGEwZWVmOWY1ZjYuanBn.cache","vod_id":19165218,"title":"Biarkan Lady Alice mengawal anda sepenuhnya, nikmati keseronokan dihina…lepaskan masokis dalaman anda, biarkan kecantikan yang tiada tandingan ini mengalahkan EBWH-215-C dengan teguran penuh kasih sayang.","lastmod":"2026-07-11","duration":"02:02:18","url":"/play/19165218.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWExMDU0YjU5OGEzYmNkOTNlYThlMzEzMzMyNWFhY2IuanBn.cache","vod_id":18944985,"title":"Seorang wanita cantik berpakaian putih, dengan penampilan yang memukau dan sikap yang elegan, [Kucing Schrödinger], muncul dalam pakaian dalam dan menggunakan alat peraga untuk melancap. Gambar jarak dekat klimaksnya dengan zakar yang bergetar ditunjukkan. Sangat memikat, jangan ketinggalan!","lastmod":"2025-03-22","duration":"01:39:49","url":"/play/18944985.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjA5OWNmNGU2MjBkMzZlMTUzOGNhNmFiYjFkMTFiMmEuanBn.cache","vod_id":18962043,"title":"Seorang perempuan jalang berekor kuda, melancap dengan penggetar dan jarinya dimasukkan ke dalam farajnya tidak mencukupi, jadi dia memasukkan zakar ke dalam mulutnya, dan mubaligh itu melakukan rutin jackhammer.","lastmod":"2025-03-22","duration":"00:47:04","url":"/play/18962043.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2NkZDUyYjFmN2YyNjNjOThmYmRiMDBlNjYxODExZjMuanBn.cache","vod_id":18991287,"title":"Kawan baik seorang gadis cantik dan manis diikat dan melancap dalam keadaan bogel di atas kerusi, menggunakan alat memasukkan zakar dan melancap untuk membuatnya mengerang. Ia sangat menggoda, jangan ketinggalan jika anda suka!","lastmod":"2025-12-14","duration":"01:05:33","url":"/play/18991287.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNGQyMzYyZjA1YTE2OGZmYzFkZDNiZmI2MGM0YmQ1OTAuanBn.cache","vod_id":19151663,"title":"Murid perempuan berekor kembar yang comel mengenakan bayaran untuk alat permainan seks dan melancap untuk keseronokan maksimum","lastmod":"2026-04-04","duration":"01:46:00","url":"/play/19151663.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMDUvY2I2N2VjMTVjYjkzMmQwNWYwMmRjZWJhMzAwM2Q3NGEuanBn.cache","vod_id":19056221,"title":"Saya menghasilkan banyak cecair faraj daripada melancap...","lastmod":"2025-10-04","duration":"20:49","url":"/play/19056221.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvOTY1NjUxN2JjM2MzYzY5N2EzM2VmNjBmYTViNWVhZDguanBn.cache","vod_id":19139733,"title":"Gadis montok dan gempal dengan punggung besar, menggunakan bahasa yang tidak senonoh dan prop interaktif untuk melancap.","lastmod":"2026-01-22","duration":"21:36","url":"/play/19139733.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTQ1ODE0ZDdjNTQxODA0ZjU4NTVlNThmY2NkZGFmYzguanBn.cache","vod_id":18989013,"title":"326EVA-094 Menjemput gadis-gadis dan berseronok di tepi kolam renang yang terkenal! Menemui seorang wanita yang panas, montok dan seksi! Si cantik berbikini misteri ini ialah seorang kakak perempuan yang sangat seksi yang menunjukkan kemahiran melancap dan seks oralnya.","lastmod":"2025-12-14","duration":"01:08:44","url":"/play/18989013.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MjcvYTk3NTZmZGUzNDUxMWIwYWZmYmJiOTJmNTk3NjZlY2IuanBn.cache","vod_id":19040145,"title":"Gadis kecil yang sangat comel dan comel ini telah dikejutkan sebelum dia benar-benar terjaga dan mula menghisap zakar.","lastmod":"2025-06-26","duration":"38:43","url":"/play/19040145.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjdiY2ZmZjUzYjFjNGE3NDE5ODdiNTlkM2I1NjNhNWQuanBn.cache","vod_id":18994316,"title":"Pacopacomama-082719_159 Video Melancap Wanita Matang ~ Michiko Doi ~ 1","lastmod":"2025-12-14","duration":"12:30","url":"/play/18994316.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzk5ZmZjODZjYzE2YzY0OTdkOWMxNzM2MWJmZTg2YTIuanBn.cache","vod_id":18930964,"title":"Perhimpunan juruteknik wanita montok berkualiti tinggi gaya Dongguan terkini [jurulatih kelab] seks berkumpulan yang mengejutkan, seks tanpa perlindungan, seks beramai-ramai dengan juruteknik wanita cantik, pertempuran senjata sebenar, dan banyak lagi!","lastmod":"2025-12-14","duration":"01:08:02","url":"/play/18930964.html"}]},
videoTitle: 'Seorang gadis cantik berseluar terbuka melancap dengan alat penggetar',
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=/`;
}
};
}