Si Shida Mizuki, malibog at walang habas, de-kalidad na laruang pang-sex, kinantot hanggang sa hindi mapigilang pagpipigil ng sarili, kinunan sa mukha gamit ang orgasm","lastmod":"2026-07-11","duration":"","url":"/play/19245584.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZDg3OGNhY2I1NWJiN2JiMjMwMTk1M2ZjNzg5Y2U0N2YuanBn.cache","vod_id":19220530,"title":"Ang Kwento ng Isang Mataas na Modelo ng Escort: Pakikipagtalik sa Hotel, Basang-basang Pekpek na Nagmamakaawa para sa Eksplosibong Pakikipagtalik, Panloob na Pagbubulalas, Pagtatae sa Mukha, at Dobleng Pagpasok","lastmod":"2026-03-06","duration":"0:34:31","url":"/play/19220530.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzYyN2MxNGVhM2EzYjBjYjg2OWU4ZGFhYTEwODYxOWUuanBn.cache","vod_id":19146315,"title":"SDAB083 Malawakang bulalas sa mukha na hindi ipinagbabawal 51 shot Namumula ang buong mukha ni Nonohara Natsuna. Sa tahimik na gate ng paaralan noong katapusan ng linggo, nabahiran siya ng puti at malapot na semilya hanggang sa oras na para umuwi.","lastmod":"2025-03-29","duration":"","url":"/play/19146315.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MDgvYzJjMjk0MTg5OGZiYjVkMGVkOGJjZDNiZTMwMmEwNWQuanBn.cache","vod_id":19193361,"title":"Nabihag ng isang negosyanteng nakasuot ng Rolex ang isang napakagandang flight attendant! Lumabas na ang video ng kanyang facial, oral, at internal ejaculation na sumasapit ang kasukdulan.","lastmod":"2025-09-07","duration":"16:47","url":"/play/19193361.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYzIwNzM0YjJlMTYxYmFkNGRhOTM3YTYxYzY0ODMyZDMuanBn.cache","vod_id":19224503,"title":"JUR-625 Ang Bitag ng Matatamis na Salita ng Isang Perpektong Babaeng May-asawa: Ang Semilya ng Isang Ulit na Estudyante ay Pinatuyo ng Isang Babaeng May-gulang","lastmod":"2026-03-30","duration":"2:26:33","url":"/play/19224503.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDM5MzBmMTYwMjRjOWMwZDA0YmJiNjA3N2E0OTgxMWQuanBn.cache","vod_id":19097893,"title":"JUFD-923 Ang Nakakabaliw na Teknik sa Pagkuha ng Tamod ng Cuckold ay Nagpapahirap Muli sa mga Impotent na Lalaki - Honda Misaki","lastmod":"2025-03-29","duration":"02:30:32","url":"/play/19097893.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOGU1MmVmYmY3YzM4YzNkZTEzMzA4ZDI1MzE0NTFlZDYuanBn.cache","vod_id":19162265,"title":"Eksklusibong tagas: Pumasok sa industriya ng pelikulang pang-adulto ang isang high-value at busty na estudyante sa kolehiyo! Nakasisilaw ang kanyang seksing dibdib! Ginamit ang mga props para laruin ang kanyang vulva~ Maraming posisyon ng walang proteksyon, matinding pakikipagtalik na may internal ejaculation.","lastmod":"2025-03-29","duration":"05:17","url":"/play/19162265.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMjI4ZTAxODM5OGVjNDQ2MDhmZGVmZmRiNTQ0MzdjMmQuanBn.cache","vod_id":19217104,"title":"Ang de-kalidad na itim na perlas ng Exotic4K, si Ebony Shay, ay brutal na kinantot ng malaking ari ng isang puting lalaki, kumikibot ang kanyang puke at siya ay umaabot sa klimaks at dumudulas.","lastmod":"2026-02-11","duration":"0:10:44","url":"/play/19217104.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDhkZGQ5MDY5MWIzYmYwNjc4MWQxOGM2MjM2YmJkMTMuanBn.cache","vod_id":19229814,"title":"[Eksklusibo] Isang napakagandang babae ang palihim na kinunan ng video pagkatapos ng isang pakikipagtalik online! Tatlong araw ng matinding pagtatalik, kabilang ang mga eksena ng kanyang pag-squirt at pag-cum sa loob.","lastmod":"2026-04-18","duration":"2:31:22","url":"/play/19229814.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNzc5ZjY0YWIwZjI5MzlhYjAwNjdkMDE5NzQzMTAzMzIuanBn.cache","vod_id":19211877,"title":"Gumaganap si Yang Mi bilang isang babaeng nasasakupan na, para makakuha ng dagdag-sahod, inalok niya ang sarili sa tatlong lalaking ehekutibo sa kumpanya, na siyang magpapalitan sa paglilingkod sa kanya!","lastmod":"2025-12-28","duration":"0:20:08","url":"/play/19211877.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNGI2NjU0M2NmNmIxZTNmMzBhODY1ZDRlM2M1OGI4MDcuanBn.cache","vod_id":19139003,"title":"MIDV-279 Ha!? Kahit sinundo niya ito sa bar, hinayaan niya itong asarin siya, huminto bago pa ito magbulalas, at kahit sa sandali ng bulalas, naiwang mag-isa ito para sa isang ligaw na Indian orgasm sa bar, ibinulalas ang kanyang semilya. Hindi siya kailanman binigyan ng refractory period; ang kanyang semilya ay paulit-ulit na pinipiga palabas sa ligaw at sinaunang pakikipagtalik. Nozomi Ishihara","lastmod":"2025-03-29","duration":"03:12:31","url":"/play/19139003.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMDEvMzI4ODhmNTE0NWQwMjM1NjkxZmQ5ZWZhYWM5MGRkMmYuanBn.cache","vod_id":19197206,"title":"Kaakit-akit ang basang katawan ni Kinoshita Aoi na walang saplot sa mukha! Mainit at walang proteksyon ang kanyang pakikipagtagpo sa isang uhaw na matandang lalaki, na nagtapos sa isang kasukdulan kung saan malayang umaagos ang kanyang katas at bumubulwak ang kanyang semilya sa loob niya! 【RKI696】","lastmod":"2025-09-30","duration":"02:15:09","url":"/play/19197206.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYjhhYmNiNjMxZTZmMDhhMTMyMDI5MzVlODc3YzQ2MjUuanBn.cache","vod_id":19229953,"title":"Kumalat online ang mga pribadong larawan ng busty internet celebrity na si Yi Yi Zi! Brutal na kinakasakal ang kanyang puke at tumutulo ang kanyang ari.","lastmod":"2026-04-19","duration":"0:23:26","url":"/play/19229953.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMmUyNGExNjJiM2I2NTc4NDY2ZTE2MzcxNzRjNzIyYmEuanBn.cache","vod_id":19148450,"title":"IDG5485 Isang uhaw na biyenang babae ang ibinebenta ang kanyang sarili sa isang hookup platform, nagmamakaawa para sa seks.","lastmod":"2025-03-29","duration":"33:20","url":"/play/19148450.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MDYvNjAyOTdhZTMyZmI1MzkwMmM1NDAxMzY5NjIwMGRiMGIuanBn.cache","vod_id":19175580,"title":"200GANA-2947 Real Pickup Record: Pagkuha ng Isang Debotong Babaeng May-gulang sa Bayan ng Kinshi! Mala-Anghel na Mukha, Mala-Demonyong Paglilingkod: Napaka-Proaktibong Unang Pagkuha ng Litrato na May Kaibigan ng Isang Babaeng May-asawa","lastmod":"2025-05-06","duration":"01:07:08","url":"/play/19175580.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMzEyNThmMzM1MDhiZGQ2ZTg1MmNiNDY0MTFiNmZiMjMuanBn.cache","vod_id":19144210,"title":"Isang babaeng malibog, na nalulungkot sa gabi, ang nakipagtalik sa kanyang kapitbahay sa bubong. Agad silang nagtalik at naghubad ng kanilang pantalon...","lastmod":"2025-03-29","duration":"","url":"/play/19144210.html"}]},
videoTitle: 'Uhaw na uhaw ang puke ni Honda Hitomi! Aktibo siyang nagmamakaawa para sa oral sex at gustong lunukin ang semilya nito.',
language: 'fil',
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('Nakopya na ang link!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Nakopya na ang link!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Nakopya na ang link!');
}
}
},
// 切换布局
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=/`;
}
};
}