Sa imbitasyon ng isang kaibigang may ina, gumamit ako ng pairing app, at magkasama naming pinaamo ang aking \"muling sinta\". Saeki Kohana Sayuri Kohana Madonna","lastmod":"2026-07-11","duration":"02:56:37","url":"/play/19161552.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjRlYjFhZjM3NGVkNzBhOThiNWMzMzY4ZDg5ZjgxZTMuanBn.cache","vod_id":18969099,"title":"Ang Numero Unong Kapatid na Babae sa Shanghai - Xu Wanwan -: Ngayon lang may isang kapatid na nagsabing napakalaki ng puke ko na kasya ang dalawang daliri sa loob. Hindi ako naniniwala. Gumagamit lang ako ng malaswang salita para pukawin ang lahat. Talagang eksaherado ang pag-squirt ko!","lastmod":"2025-03-23","duration":"00:37:31","url":"/play/18969099.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2VlMTc2ZjBhNTBlZDBkZGI5MzUyYTlmMmIwMGViYzEuanBn.cache","vod_id":18946871,"title":"BF-599 Ang aking malalaki at nakababatang kapatid na babae ay isang hubad na babae, at inaakit niya ako nang walang anumang depensa, kaya gagawin ko ito.","lastmod":"2025-03-22","duration":"02:18:25","url":"/play/18946871.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MTAvMTM4Y2MwZjQ4OTgxNTFhNTBlMjU3MGVhNzBlZmUzZjEuanBn.cache","vod_id":19028560,"title":"[Level 3] Isang Lolong Pervert ang Nagnakaw ng Pag-ibig sa Kanyang Seksing Apo","lastmod":"2025-04-10","duration":"30:39","url":"/play/19028560.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTg0MWJkOGI4YzQ3Y2M4NWYyMDQ3NTUxN2Q1OGMwNTEuanBn.cache","vod_id":18984585,"title":"SW-168 Isang ina at ang kanyang asawa ang pumunta sa Tokyo dahil nag-aalala sila para sa kanilang anak na lalaki na nakatira nang mag-isa. Sa unang pagkakataon sa loob ng mahigit sampung taon, natutulog sila sa iisang kama. Hindi na ari ng isang bata ang aking ari.","lastmod":"2025-03-23","duration":"02:00:35","url":"/play/18984585.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzQ0MTBhZWI1MDQzMjJiOGJiNTA3NTQ3MjQ4OWQ4ODcuanBn.cache","vod_id":18990634,"title":"NEM-024 Bawal na Sekswal na Pag-uugali kasama ang Asawa at Ina Bahagi 10: Ang Biyenang Babae Ko ay Mas Mabuti Kaysa sa Aking Asawa... Kase Madoka (Incest)","lastmod":"2025-03-23","duration":"02:00:35","url":"/play/18990634.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvODI1ZTllYWI0YjVmZDk4NmQ3MDdmYWI1MTgyZmY4MTIuanBn.cache","vod_id":19160919,"title":"Ang tipo ko ay ang aking ampon na anak na babae na may matagal na sunog ng araw. Yura Tsumugi. I.B.WORKS","lastmod":"2026-05-31","duration":"02:11:09","url":"/play/19160919.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvNjJmMDdmOTQwZmVjYmYzZmQ4MjY0MTNlMTE4Yjg4NTQuanBn.cache","vod_id":19158991,"title":"Panoorin ang mga amateur na kumukuha ng mga babae at nagsasalsal ng 20. Ang kailangan mo lang gawin ay manood! Maaari mo bang tingnan ang aking titi? Kaguya Hime Pt - Delusion Tribe","lastmod":"2026-05-19","duration":"02:00:11","url":"/play/19158991.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTQ1MDQyZGMyMTMzYjlmYTQ1MzIyYjUwYzg1NWVmNzAuanBn.cache","vod_id":19015042,"title":"GEKI038 \"Kapatid ko lang ang naging relasyon ko...\" Isang dating martial artist na nanalo ng premyo sa Kanto Championships ang tapat na umamin tungkol sa kanyang unang karanasan sa insesto na hindi niya masabi kahit kanino!! Isang sensitibong ari, na hindi pa nakakilala ng ibang lalaki maliban sa kanyang kapatid, ang unang nakaranas ng maraming orgasm nang ipasok ang isang malaking ari at brutal siyang manipulahin ng patuloy na parang piston na bulalas! ... Sakuma Mimi.","lastmod":"2025-03-24","duration":"01:10:03","url":"/play/19015042.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjg0ZjMzOTU5ZGZlNjZmMDNjNjMzNDRiMzMwYjI2NWMuanBn.cache","vod_id":19011534,"title":"GDHH178 \"Gago!\" Tinatamaan ang dibdib mo! \"Wow! Ang laki ng kapatid ko...' Nakakamangha! Tumigas ang malaki kong titi noong nagbababad akong mag-isa sa bathtub kasama ang aking mala-akit na kapatid na babae! Ang kapatid ko ay...\"","lastmod":"2025-03-24","duration":"03:52:55","url":"/play/19011534.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MDgvNjkwOTIwYzBjZDUwNGQwN2RiY2MxM2Y5MmI3NTcwNTEuanBn.cache","vod_id":19036948,"title":"JUQ826 Habang wala ang aking asawa para sa isang biyahe sa negosyo, inakit ako ng aking hipag na si Azu. Nagkaroon kami ng masinsinang pagtatalik hanggang sa naubos ko ang lahat ng semilya na naipon ko sa loob ng 30 araw.","lastmod":"2025-06-08","duration":"02:15:13","url":"/play/19036948.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTliM2RiMDVhN2U4M2Q1NWJhM2Q0NDA3NzFlMzY5ZGYuanBn.cache","vod_id":18989233,"title":"300MAAN-404 Nagagalak dahil sa umaapaw na semilya mula sa ari! Isang kuha sa posisyong cowboy! Kuha mula sa likuran! Isang litratong kuha sa posisyong misyonero! Binubunot ang isang maganda, ahit, at may-asawang babae at ibinulalas sa loob niya nang tatlong magkakasunod na beses!","lastmod":"2025-03-23","duration":"01:02:29","url":"/play/18989233.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYWVhNTNmZjExYmEyY2E3NWQ4YzRlZjJiNzU5OGI5OWEuanBn.cache","vod_id":18998442,"title":"MIAA-196: Ang hindi kapani-paniwalang \"kasiyahan pagkatapos manganak\" na ginagawang puta ang sinumang babae! Si Kimishima Mio, isang asawang kinuha ang kanyang birhen ng kanyang biyenan pagkatapos manganak, ay nakakaranas ng walang katapusang siklo ng orgasm.","lastmod":"2025-03-23","duration":"01:59:29","url":"/play/18998442.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmYxODdlMjQ1YjQxNjllYjg3M2VmNWY1NjYwOGVhNTEuanBn.cache","vod_id":19000794,"title":"RIX-072 Ang Pinakamahusay na Wellness Massage Parlor para sa Magagandang Babaeng May-asawa","lastmod":"2025-03-23","duration":"03:15:42","url":"/play/19000794.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDRjYjFkYjY3NDUxZGM5ZDkyM2IzZjRkNDA4NmYxYTcuanBn.cache","vod_id":18993817,"title":"SSNI-545 Ang aking ama at amain, ginahasa ako ng parehong ama, nakatakda akong gahasain ng aking pamilya habang buhay... Yumeno Aika 1","lastmod":"2025-03-23","duration":"01:58:34","url":"/play/18993817.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMmMxMDNlNzcwZGEzNTI5NDAyYTY0NjgzZjc3MWJlZDMuanBn.cache","vod_id":18980952,"title":"MIZD-363 Ang Unang Posisyon para sa Pagbubulabog! Posisyon ng Misyonero para sa Panloob na Pagbubulabog, na Nagbibigay-daan sa Iyong Babae na Makamit ang Orgasm nang Sabay-sabay.","lastmod":"2025-12-14","duration":"03:55:55","url":"/play/18980952.html"}]},
videoTitle: '[Mga Subtitle na Tsino] Pelikulang Koreano Kategorya III: Ang Babae Ko Ang Hipag Ko',
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=/`;
}
};
}