Mabangis na inatake ng perwisyong kapatid sa ina ang masikip na Asyanong bulkan ng isang babaeng Koreano【ElleLee】","lastmod":"2026-07-11","duration":"06:16","url":"/play/19166573.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWUxMTAxNzMxNDdiZjEzMTcyZWY4YzkzOGY2YTNlMjYuanBn.cache","vod_id":19015408,"title":"Nagpakilalang fujoshi! Natural na tinapay, isang 20-taong-gulang na babaeng estudyante sa kolehiyo na may malalaking suso na nagpapakita ng kanyang mukha, sobrang payat at hindi mapigilan ang masturbasyon.","lastmod":"2025-03-24","duration":"01:16:06","url":"/play/19015408.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTdkMzE3NzdhNTJkMmQ2OGE5Y2U5NzhkMThhOGQwMjUuanBn.cache","vod_id":18970556,"title":"BBAN-358 Aliping Lesbian ng Pangulo ng Konseho ng mga Mag-aaral ~Ang Masokistikong Pagsasanay ng Isang Masamang Nakangiting Kagandahan ~ Asai Koharu, Kudo Lala","lastmod":"2025-12-14","duration":"03:02:10","url":"/play/18970556.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvOTQ0ZWNhYTRjMTQ2Mjg1YjM1ODVhMTYzYTNlZTc4YzAuanBn.cache","vod_id":19138809,"title":"AI - Yang Mi - Guro na babaeng may mahabang paa na nagtuturo sa mga estudyante sa kanilang tahanan","lastmod":"2026-01-17","duration":"22:25","url":"/play/19138809.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTAxOTc5NjYyMDBlNTlkMzAxNjg4NDYzYjFlY2U2ZDcuanBn.cache","vod_id":18925458,"title":"Isang binata at guwapong lalaki ang nasa labas para magmeryenda nang malasing siya, dinala sa isang hotel, at pinilit na makipagtalik sa kanila ng dalawang magagandang babae na nakasuot ng seksing lingerie.","lastmod":"2025-12-14","duration":"01:15:50","url":"/play/18925458.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MjIvZDkxNzI2ZGNmM2JhODFkMGRkNjJlZDQ1NWY4ZTI0M2QuanBn.cache","vod_id":19034727,"title":"Itinatampok ng mga internasyonal na estudyante ang mga cosplay na sikat sa kani-kanilang mga bansa… Tampok sa kasuotan ng mga bunny girl ang kanilang maputi at kaakit-akit na pigura.","lastmod":"2025-05-22","duration":"02:36:11","url":"/play/19034727.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvN2IzMzI4OTg0NjA4NTliNWExYmNhYzkwY2UyNzBmZWEuanBn.cache","vod_id":19012785,"title":"MDTM618 Ang matinding sekswal na buhay ng mga babaeng estudyante sa kolehiyo ngayon.","lastmod":"2025-03-24","duration":"04:19:26","url":"/play/19012785.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWFlZTQ0MzZmZjhhZTc0ZTQyOGNlMTVhNDFlMDAyYTguanBn.cache","vod_id":18941538,"title":"LZDM-022 Isang kwentong lesbian ng isang babaeng estudyante sa kolehiyo na may malaking suso na nasa kagipitan - Yuzuki Rika Goto","lastmod":"2025-03-22","duration":"02:14:35","url":"/play/18941538.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNGVmZWRjNTZlZGNiMTBjNDA0OGNlNDM2OTRkYzM0ZTEuanBn.cache","vod_id":18944459,"title":"Isang lalaking may mahabang titi ang nakipagtalik sa isang magandang babaeng kolehiyo na ipinanganak noong 1999 mula sa isang kalapit na paaralan ng sining na palihim na nagtatrabaho bilang isang puta. Sa sobrang karahasan nito, hindi na ito natiis ng babae at sinabing, \"Hindi ko na kaya, masyadong malalim, masakit!\"","lastmod":"2025-12-14","duration":"01:09:00","url":"/play/18944459.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDE4YmJhMzQ2ZDEwNjc2NWE4YjZmZjgyOTI3YWU1ZTEuanBn.cache","vod_id":19140847,"title":"Tutorial sa pakikipagtalik sa labas sa isang abalang kampus ng unibersidad","lastmod":"2026-01-29","duration":"15:29","url":"/play/19140847.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNmY4NTlkZGEyNWU5ZDE0MzZkNzQyNzJjMDQyZDY1NGQuanBn.cache","vod_id":19010570,"title":"DVDMS524 Mga ordinaryong lalaki at babae ay sumasakay at kumakalabit sa kanilang balakang hanggang sa mabulya sa ilalim ng AV monitoring!! Isang mabait na babaeng guro na may malaking puwitan ang humamon sa kanyang sarili sa pamamagitan ng pagpapapila ng 10 ari sa tabi niya, at pagkatapos ay patuloy na nagsasalsal sa posisyong cowgirl! Ang mga ari na tuwid na tuwid ay sunod-sunod na nagbubuga sa posisyong cowgirl, ang kanyang ari ay puno ng semilya, at hindi niya mapigilan ang pag-orgasm!! Sa wakas...","lastmod":"2025-03-24","duration":"04:00:14","url":"/play/19010570.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzM2MjFjNjEyMjliYmIzOGM3YjAxNzdlNzliYjgwYmEuanBn.cache","vod_id":18992408,"title":"(Lee Ji-eun) Itim na medyas, kambal na nakapusod, kasuotan ng mga batang babae, fetish sa paa","lastmod":"2025-03-23","duration":"06:18","url":"/play/18992408.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MDkvYjlmOTNkMTExY2U0ZGQ0OTQ0ZjNlYjRkODA0MWFmMWYuanBn.cache","vod_id":19046137,"title":"SAN342 Hindi napigilan ng madrasta matapos matikman ang batang ari ng kaniyang anak sa ampon.","lastmod":"2025-08-08","duration":"02:08:34","url":"/play/19046137.html"}]},
videoTitle: 'Libreng puting medyas na lalaking estudyante sa kolehiyo ay nagsasalsal sa dorm na may malaking titi.',
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=/`;
}
};
}