Hayaan mong ganap kang kontrolin ni Lady Alice, tamasahin ang kasiyahan ng pagiging minamaliit…ilabas ang iyong panloob na masokista, hayaang talunin ng walang kapantay na kagandahang ito ang EBWH-215-C nang may mapagmahal na pagsaway.","lastmod":"2026-07-11","duration":"02:02:18","url":"/play/19165218.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWExMDU0YjU5OGEzYmNkOTNlYThlMzEzMzMyNWFhY2IuanBn.cache","vod_id":18944985,"title":"Isang magandang babaeng nakaputi, na may nakamamanghang hitsura at eleganteng kilos, si [Schrödinger's Cat], ay lumilitaw na nakasuot ng lingerie at gumagamit ng mga props para sa masturbesyon. Ipinapakita ang mga close-up na kuha ng kanyang climax na may nanginginig na ari. Nakakaakit, huwag palampasin!","lastmod":"2025-03-22","duration":"01:39:49","url":"/play/18944985.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDA0ZWQ5NmNmMGQ5ODM5OWE0MmI3NThmMjI1MzQwNjMuanBn.cache","vod_id":18951435,"title":"MDTM-481 Newcomer Uniform Walking and Dating Club Harusaki Mei Vol.001","lastmod":"2025-03-22","duration":"01:59:32","url":"/play/18951435.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTQ1ODE0ZDdjNTQxODA0ZjU4NTVlNThmY2NkZGFmYzguanBn.cache","vod_id":18989013,"title":"326EVA-094 Sinusundo ang mga babae at nagsasaya sa tabi ng isang sikat na swimming pool! Natuklasan ang isang mainit, busty, at seksing babae! Ang misteryosong bikini beautiful na ito ay isang napakaseksing ate na nagpapakita ng kanyang kasanayan sa masturbesyon at oral sex.","lastmod":"2025-12-14","duration":"01:08:44","url":"/play/18989013.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MjcvYTk3NTZmZGUzNDUxMWIwYWZmYmJiOTJmNTk3NjZlY2IuanBn.cache","vod_id":19040145,"title":"Ang napakacute at kaibig-ibig na batang babae na ito ay nagising bago pa man siya ganap na gising at nagsimulang sumubo ng kanyang ari.","lastmod":"2025-06-26","duration":"38:43","url":"/play/19040145.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzEwMzU0MjAwZDExMjI3MjVjZWZiOWU4NWRlZjIwYzEuanBn.cache","vod_id":18935731,"title":"Ang babaeng Tsino na ito ay napakatangkad at may kahanga-hangang pigura—payat ngunit kurba, may mahahabang binti at seksing lingerie. Napakaganda at makatas niya, kaya ko siyang kantutin hanggang sa gusto ko! Ang galing! 1080P HD.","lastmod":"2025-12-14","duration":"00:37:09","url":"/play/18935731.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNzk5MDQzMjhiMzlmMTFlMTkyMDE4MGYzZDQ5NjA2MzUuanBn.cache","vod_id":19138778,"title":"Limang minuto bago ang tunay na kasukdulan! 40 katao ang magkakasamang makakaranas ng limang minuto bago ang kasukdulan! Pinagbibidahan nina Hirai Kanna, Hamasaki Mao, Asuka Riina, at iba pa. UMSO-609","lastmod":"2026-01-17","duration":"04:02:46","url":"/play/19138778.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzk5ZmZjODZjYzE2YzY0OTdkOWMxNzM2MWJmZTg2YTIuanBn.cache","vod_id":18930964,"title":"Pinakabagong pagtitipon ng mga de-kalidad na babaeng technician na may malalaking suso sa istilo ng Dongguan [mga club trainer] nakakagulat na group sex, walang proteksyon na pakikipagtalik, gangbang sex kasama ang magagandang babaeng technician, totoong mga barilan, at marami pang iba!","lastmod":"2025-12-14","duration":"01:08:02","url":"/play/18930964.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMGIwODc3OGM5NmI1NGE4ODJlNTQ1Nzc3ZWE5Mzk0MTIuanBn.cache","vod_id":19136856,"title":"Isang malaking grupo ng mga kababaihan, ang kanilang mga bibig ay puno ng magagandang babae, na nagbibigay-daan sa iyong pumili mula sa kanilang kaakit-akit na mga pigura at malalaking dibdib.","lastmod":"2026-01-05","duration":"53:05","url":"/play/19136856.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZGI0ZGJkYWFkYWNhZTU0MDZiMmMxNDA2YTY3MmYwY2UuanBn.cache","vod_id":18940995,"title":"Nakaranas ako ng napakagandang masahe sa Sanhe. Isang dalagang naka-itim na medyas ang naglaro sa aking ari at napakasarap sa pakiramdam ng aking mga bola at ulo. Ang gaganda ng mga kamay ng babae!","lastmod":"2025-12-14","duration":"00:06:20","url":"/play/18940995.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOGEyM2NhNzIyNWZjNTkzZTAxN2JmYjg4MzZjOTRhYTIuanBn.cache","vod_id":18946080,"title":"Ang pagkakita sa babaeng ito ay nagpapaalala sa akin ng sekswal na kasiya-siyang buhay sa Dongguan, at ang masipag na obra na \"Qiaoqiao HD Uncut Version\" ay isang madamdaming obra maestra na nagtatampok ng isang magandang babae na may mahahabang binti at isang kaakit-akit na pigura.","lastmod":"2025-12-14","duration":"01:22:40","url":"/play/18946080.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTM3MjU4ZDQ0MzE5MGI5NWI0ZTc5ODI2YjcyMDRhMmIuanBn.cache","vod_id":18986630,"title":"Ang mga napakagandang babaeng Koreano ay nagbibigay sa iyo ng mahusay na pakikipagtalik.","lastmod":"2025-12-14","duration":"00:08:15","url":"/play/18986630.html"}]},
videoTitle: '☆Slim Beauty☆ May kaunting oras pa bago ang susunod naming date, kaya tinawagan ko siya at niyaya na makipagtalik☆',
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=/`;
}
};
}