180CM Nangungunang Diyosa sa Hotel Totoong Nakatagong Kamera Hinahawakan ang Sarili Pag-angat ng Binti Pagtulak Mabangis na Seks","lastmod":"2026-07-11","duration":"41:24","url":"/play/19162462.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWZjYjEwYjIxMzI5MTdiMTg4MTk2MjIwOWM0NDljYzguanBn.cache","vod_id":19024366,"title":"Nanatili sa hotel si MEYD846C mula umaga hanggang gabi... 3 napakatindi at madamdaming eksena sa pakikipagtalik kasama si Hatsune Minori.","lastmod":"2025-03-24","duration":"01:58:46","url":"/play/19024366.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDkwMGY0OGViNWEwZDM4YmZjNmYxZDQ4YjA5N2ViNWEuanBn.cache","vod_id":18965877,"title":"200GANA-2398 Napakalambot, unang larawan. 1574 Isang dilag na kasing-idolo na may retro vibe sa downtown Nippori na iniinterbyu sa isang hotel.","lastmod":"2025-12-14","duration":"01:09:07","url":"/play/18965877.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MDUvYjEyZWM1ZGZjZTlkNzMxYjE0MTZlMjk1ZTBlMTUyNDEuanBn.cache","vod_id":19050810,"title":"Nakipagtalik si Xiao Ke Nai sa isang lalaking malaki ang ari at nakipagtalik sa isang hotel.","lastmod":"2025-09-04","duration":"45:12","url":"/play/19050810.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MDIvZjkwMDI1NzJjYjRmODlhZTBiNzUzZDdkMzJlMDU3OWUuanBn.cache","vod_id":19027513,"title":"Naiwan ang huling tren at napunta sa isang kwarto sa hotel kasama ang isang lasing na kasamahan... Masyado kong kayang tiisin ang kanyang kawalang-ingat... Hindi kilalang aktor na si SABA-783-C.","lastmod":"2025-04-02","duration":"02:30:48","url":"/play/19027513.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzg1MDA4M2I3MTBhMjQwMzg4YmMxMjE0OTMxYTA4ZjMuanBn.cache","vod_id":18948736,"title":"Isang napakaseksing dalagang malaki ang puwet ang nakipag-date sa isang dalaga habang nasa isang business trip sa isang hotel. Palagi niyang ipinapakita ang mukha niya at napakagaling niya. Pinaglilingkuran niya ang binata, pinaliliguan ito, dinidilaan ang mga utong nito, binibigyan ng oral sex, malaking titi, sinusubo ang dibdib, at ginalugad ang iba't ibang posisyon para sa matinding pakikipagtalik.","lastmod":"2025-12-14","duration":"02:15:03","url":"/play/18948736.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzFjOWJiODc4MTdmMWMxNzEyOTBiNjEwYWI1YjlmNDkuanBn.cache","vod_id":18942805,"title":"MIST-054 - Ginugulo at inabuso siya ng 16 na babaeng estudyante sa kanyang hotel.","lastmod":"2025-12-14","duration":"02:42:23","url":"/play/18942805.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MDYvNTI4Mjk3YmJiMTZmNDJhZDEzZTM2ZjgyYzUyNmRiMGUuanBn.cache","vod_id":19167237,"title":"Isang sopistikadong babaeng taga-lungsod ang bumisita sa isang hotel nang hatinggabi matapos akong makipagtalik sa kanya nang dalawang beses. Madalas siyang mag-ehersisyo at nagpapanatili ng magandang pigura.","lastmod":"2026-07-11","duration":"01:08:53","url":"/play/19167237.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWM4MmUyYjVhMWU5YmE1NzdhZmMyYmNlMmU4ZGU1ZmMuanBn.cache","vod_id":18976649,"title":"Lalaking nakikipag-date sa babaeng kasamahan sa hotel na may malaking suso ⭐ Magaling ang kabataan, paulit-ulit niya itong kinantot ⭐ Pinagod niya ito hanggang sa mawalan ito ng malay, at perpektong nabunyag ang mukha nito.","lastmod":"2025-12-14","duration":"00:27:59","url":"/play/18976649.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MjAvYWI0ZjVlYmJkODM4OTE5MWZkMDAxZjZmYzNhOTVhNmQuanBn.cache","vod_id":19034424,"title":"Ipinatawag ang babae sa isang hotel para sa oral sex, at pagkatapos ay binigyan niya ito ng blowjob at huling blowjob.","lastmod":"2025-05-20","duration":"22:55","url":"/play/19034424.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMmUyZGVkNmJkODlhYzFlYjVlZDM4MzIxMTNlZjA1MzMuanBn.cache","vod_id":19140551,"title":"Maraming magagandang abay na babae na may malalaking puwitan ang walang awang kinuhanan ng litrato sa loob ng inidoro.","lastmod":"2026-01-27","duration":"09:18","url":"/play/19140551.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MTUvYzZkODk4OTc3MzQ1MGE3M2I1NmQ2YWMzZTQ1OTRmNjguanBn.cache","vod_id":19038364,"title":"Masaya ang pakikipag-date, pero gusto ko pa ring makaranas ng mas tunay na karanasan. Gusto kong makipag-date nang naka-uniporme at pagkatapos ay maranasan ang perverted internal ejaculation sex sa isang hotel. 4 na senaryo.","lastmod":"2025-06-15","duration":"02:29:35","url":"/play/19038364.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmEzOWY5MDBhOWZjMGMxNGQ1ZWI2MWU1MTdlMGNhZjQuanBn.cache","vod_id":18982248,"title":"OKP-108 Himesaki Hana - Sisirain ka ba ng kanyang umuugoy na suso? Mga banal na suso, amoy marshmallow. Binigyan siya ng Diyos ng isang kaakit-akit na pigura sa isang see-through na swimsuit at isang napakanipis na bikini.","lastmod":"2025-03-23","duration":"01:33:52","url":"/play/18982248.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMTQxZWYyYjBiNzZhNzgzOTU2Yzg4ZjlkYmZlZjJhZjkuanBn.cache","vod_id":19143944,"title":"Palihim na kinunan ng mga nakatagong kamera sa mga hotel ang mga magkasintahang estudyante na nagtatalik sa mga kwarto ng hotel, at nakikipagtalik nang walang proteksyon.","lastmod":"2026-02-17","duration":"17:02","url":"/play/19143944.html"}]},
videoTitle: 'Nakatagong Kamera ng Hotel na may 360° Diyos na Fan',
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=/`;
}
};
}