Gustong-gusto ni VIXEN na asarin ang kanyang asawa at mapaglarong kasintahan sa harap ng iba【Vixen】","lastmod":"2026-07-11","duration":"11:30","url":"/play/19162509.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNGFlZTRlNTVjODVkNDkyNTEzOWQ4ZjY3Y2NjYjhmOGQuanBn.cache","vod_id":18973430,"title":"SSNI-654 Dahil biyenan ko siya, hindi ako makatanggi, kaya gabi-gabi akong kinakantyawan niya sa tabi ng asawa ko... Shiori Kotomi","lastmod":"2025-12-14","duration":"01:59:56","url":"/play/18973430.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzdmYzVmNTAwYjliNGIyZmJkNzI2ODg0ZGQ3MDY0ZDYuanBn.cache","vod_id":18996759,"title":"MIDE-657 Ang Aking Personal na Tagapayo na Walang Bra, Sakura Miura","lastmod":"2025-03-23","duration":"02:34:51","url":"/play/18996759.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDFjOTg5NDk3M2ViODFhZmM5NDg5NGUxMGQ0ZDBiMmUuanBn.cache","vod_id":19149881,"title":"Nawala ang aking pagkabirhen simula sa \"aking tangkang pag-atake\"! Isang 30-taong-gulang na birhen laban sa isang pilyong babaeng estudyante sa kolehiyo: isang baliktad na romansa ng panggagahasa pagkatapos ng pagtatapos ng birhen! (Hitsura HUNTC-390)","lastmod":"2026-03-24","duration":"02:39:59","url":"/play/19149881.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvM2RmZDRmZWI2MzkzNzQxYTc3MjY5NjliNDlmNWE5YTQuanBn.cache","vod_id":19139745,"title":"Pagpatay sa lalamunan ng 18-taong-gulang na si Camslut - deep throat hanggang sa masubsob niya ang lalamunan ko [AnaLingus]","lastmod":"2026-01-22","duration":"06:40","url":"/play/19139745.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzEzNTdhNDk4MzAyN2Y5NjFmZDc2OTI5NmVmZGNjMzAuanBn.cache","vod_id":18984731,"title":"[4K] T-38006 Nag-asawang muli ang mga magulang ko, at ang dating kasintahan ko mula sa swimming club, na may kayumangging linya, ay naging kapatid ko sa ina. Shiraishi Momo","lastmod":"2025-12-14","duration":"02:45:48","url":"/play/18984731.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMGNlNmVmMDQzNDI5NmZmMmRhOWIyMjEzODAwZjhmZGMuanBn.cache","vod_id":18971156,"title":"Orihinal na Unang Paglabas: Ang Aking Kapatid sa Hayskul (15) Ang Kaklase ng Aking Kapatid na Nakasuot ng Lolita Fashion ay Pinaglaruan Ko","lastmod":"2025-03-23","duration":"00:13:57","url":"/play/18971156.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjAxN2M1NjI3ZjA3MTBmMjA4NzdiMmI0MDBjODQ1YTEuanBn.cache","vod_id":18965428,"title":"\"Pag-hack sa surveillance ✅ Tunay na tagas\" Ilang magagandang babae sa isang urban village ang umupa ng isang bungalow at ginawa itong bahay-aliwan para magbigay ng serbisyo sa fast food. Mayroon silang mga kliyente na iba't ibang edad, at ang kanilang negosyo ay umuunlad dahil sa kanilang kagwapuhan. (4)","lastmod":"2025-03-22","duration":"00:05:41","url":"/play/18965428.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzcxZmY4NGQ0YzUzY2M4MDc5NDMxMTMxMWMyOWM3MjQuanBn.cache","vod_id":18991385,"title":"MIDE-697 Ang kaibigan ng nobya ay nagpalipas ng gabi kasama ang lalaking ikakasal. Sa kasal, nakita ko muli ang kaibigan ng aking asawa pagkatapos ng mahabang panahon, at siya pala ang aking unang pag-ibig, ang babaeng lagi kong hinahangaan. — Hatsukawa Minami","lastmod":"2025-12-14","duration":"01:58:40","url":"/play/18991385.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZGM1M2I3Zjg0OGI4NDE0OGM0NmVjZTJiMTYxNDIyYmIuanBn.cache","vod_id":18979607,"title":"ROYD-124 Hindi sinasadyang hinikayat ako ng aking stepsister gamit ang kanyang malaking puwit! - Marui Moeka","lastmod":"2025-12-14","duration":"02:14:37","url":"/play/18979607.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODc0ZWQ0YjM4YzAxNjhhMDU4NDA2NTVkY2Q1ZmFlOWIuanBn.cache","vod_id":18984586,"title":"VENU-947 Ang nanay ko ay mas maganda kaysa sa kasintahan ko! Palihim akong inakit ng aking selosong ina para makipagtalik sa loob niya. - Kaoru Iiyama","lastmod":"2025-03-23","duration":"01:38:41","url":"/play/18984586.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMThhYzk2NjRhNDBiNzMyNGIzYjRlYzhiODQzYmE1M2UuanBn.cache","vod_id":19160584,"title":"Habang nasa isang business trip, nauwi ako sa isang kwarto kasama ang aking babaeng boss, na palaging minamaliit ako… Nalasing siya at naging puta, at nag-costume na parang cowgirl… Si Akari Tsumugi, isang S-class amateur.","lastmod":"2026-05-29","duration":"02:04:26","url":"/play/19160584.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MjAvN2UyOGJhMDQ4ZWY1NjUwNzcyYThmZmI5MTljYzQ1MWYuanBn.cache","vod_id":19053368,"title":"MUCD323 Ginamit ko ang aking ari para turuan nang lubusan ang napakawalang-hiyang babaeng ito na minamaliit at hindi nirerespeto ang mga matatanda. (MUCD323)","lastmod":"2025-09-19","duration":"04:01:04","url":"/play/19053368.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTFlMTgzODk0NGM4ZTkwOWQ4OTFhMDJlYTcxZjliZGMuanBn.cache","vod_id":18979823,"title":"[Mga Subtitle na Tsino] MIAA-890 Ang mga kapatid na babae ng aking kasintahan ay nag-aaway sa isang reverse threesome para pag-agawan ang aking ari, na nagresulta sa paulit-ulit na pagkapuno sa akin ng semilya sa kanilang harem. Himari Kinoshita at Hinata Mori","lastmod":"2025-12-14","duration":"02:16:55","url":"/play/18979823.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODBmOTM1ZDlkYzNhM2VhNzdhNzdmNDI1YzVlYmI5NmUuanBn.cache","vod_id":18970208,"title":"Gusto nang kantutin ng putang ito~ Ah~ Kuya, ang kati ng puke ko, bilisan mo at kantutin ang maliit kong butas! Mas mahirap pa~ Daddy, kantutin mo ako nang mas malalim, ang kati ng puke ko, kuya, bilisan mo at mamatay ka sa kantutin.","lastmod":"2025-12-14","duration":"02:12:33","url":"/play/18970208.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWRiZTRhZjNiMTUzZjQ4M2RiZjZlZDkxMzRmYmMzMzEuanBn.cache","vod_id":19026973,"title":"Pinasok ng tiyuhin ko ang katawan ko gamit ang kanyang ari.","lastmod":"2025-03-29","duration":"17:49","url":"/play/19026973.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMDY4MmVkMGRmYzA5M2M1YjE0MDU3NGNiOWE5Y2ZjNGIuanBn.cache","vod_id":19162014,"title":"\"Kakaiba ba ang kasarian ko?\" Ang kumpletong kuwento sa likod ng mga eksena ni Mami (pansamantalang pangalan), ang babaeng nag-alok ng kasal, ang 31-taong-gulang na si K.M.P.","lastmod":"2026-07-11","duration":"02:11:46","url":"/play/19162014.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTdkOGFjYzBiMDBmZjQ0ZjcwZGM3YmVhYjM5ZWM3YmEuanBn.cache","vod_id":18987250,"title":"[Mga Subtitle na Tsino] DASS-229 Hinaplos ng ipinadalang masahista ang aking mga sensitibong bahagi, at hindi ko napigilan ang sarap, kaya kinantot ko siya. Yuma Sano","lastmod":"2025-12-14","duration":"02:31:24","url":"/play/18987250.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MDgvOWQwMDRmZTdmNDQyNDNiYjVmMWFmZTEzOGFiMDhmMDUuanBn.cache","vod_id":19045931,"title":"SKMJ6063 minuto ang nakalipas, isang babaeng nasa hayskul! ~2025~ Pagkatapos ng graduation, nakausap ko ang isang tunay na babae! Ang una kong karanasan sa pakikipagtalik sa pagitan ng singit! Clitoris","lastmod":"2025-08-07","duration":"03:05:16","url":"/play/19045931.html"}]},
videoTitle: 'Sinubukan akong akitin ng mga kaibigan ko noong Araw ng mga Puso!',
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=/`;
}
};
}