The M College Student Naoko (22) First Star Likes Older Men","lastmod":"2026-07-11","duration":"01:01:54","url":"/play/19161704.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly8xNTI2MDMwOXAudG9wLzIwMjYwMzEyL3M0ekk0ZXlpLzEuanBn.cache","vod_id":19148060,"title":"Female streamer cosplays Ayaka Kamisato and offers in-home services.","lastmod":"2026-03-13","duration":"20:11","url":"/play/19148060.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjY2OTQ4NzFjZTJhMTdlZjg1NjkyNmNkNGI1NmEwYzMuanBn.cache","vod_id":18989684,"title":"336KNB-092 Nationwide Collection of Erotic Photos of Married Women: Nationwide recruitment of married women, filmed from a first-person perspective, available online: 37-year-old Mary, married for 7 years, a beautiful wife with a radiant smile, releases her voluptuous desires in an AV! Her breasts are almost bursting, her nipples hardening at the slightest touch! Her hairy genitals are wet and juicy, and she begins to frantically suck on the penis in front of her. The next penetration might make her lose her mind instantly!!","lastmod":"2025-12-14","duration":"01:08:43","url":"/play/18989684.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmQ5OGYzZjgzYjE0YWU2YTk1OWEwYjM1MjA3ZmMzNmYuanBn.cache","vod_id":19025241,"title":"SPRD1194 This world consists only of men and women ~ The overly lewd wife, Hiraoka Riu Eiko.","lastmod":"2025-03-24","duration":"02:00:54","url":"/play/19025241.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMWY0NGY1NTMyODg1YjEyNWY3YzY4M2M0ZDAxYTlmZjkuanBn.cache","vod_id":19143668,"title":"Vacationing with my girlfriend. A day filled with desire. Today's date is sex, Kinoshita Yomari SQTE-631","lastmod":"2026-02-16","duration":"01:48:22","url":"/play/19143668.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNGI5Yzk3MWQxMzk0Zjk0NjEzYWFiNjY5MzMwOTg4YTAuanBn.cache","vod_id":18982234,"title":"THTP-051 Perverted Post: Young Girl Has Sex with Middle-Aged Man Over 30 Years Ago","lastmod":"2025-03-23","duration":"03:07:17","url":"/play/18982234.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTFhMGRlZjZhNzJmY2VhYjFhZjg2YjBlM2Y2ZTEwMTYuanBn.cache","vod_id":18996123,"title":"A South Korean female anchor with large breasts spreads her legs and seduces others on the bed.","lastmod":"2025-12-14","duration":"17:15","url":"/play/18996123.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjE5YjIzYzE4NDBjOWE4NDM4NjdiZjExOTFkNjVkODEuanBn.cache","vod_id":18957501,"title":"\"Top-Tier Private Shooting Leaks\" Resource Exchange Forum Internal Collection and Organization of Various Face-Showing Contrast Bitchy Dog Training Sex Selfies~ Short, Concise and Classic (6)","lastmod":"2025-12-14","duration":"00:01:39","url":"/play/18957501.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTZkODVlZTNlOTBlN2QwOTU5Y2YwZTIzZGM0NzYyYjcuanBn.cache","vod_id":18947638,"title":"EYAN-014 E-BODY Exclusive Wife Final Chapter: Official Version - Cumshot Ban Lifted - Complete and Uncut File. While her husband was away, she had 11 consecutive cumshots with 10 men at home; the raw, powerful penises felt amazing. (Answer)","lastmod":"2025-03-22","duration":"02:09:10","url":"/play/18947638.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWRiMmUzMzk0MzVkZGRiMjg5YTdmZTUyYjJmMjFjOWUuanBn.cache","vod_id":18954441,"title":"Highly Recommended ☛Extreme Contrast: Showing your face is the key! A high-value, S-level 25-year-old white-collar worker from a foreign company falls for a foreign man, taking selfies of their sex scenes in one take. The moment he enters, he screams non-stop, woman on top, intense thrusting, and internal ejaculation.","lastmod":"2025-12-14","duration":"00:11:24","url":"/play/18954441.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MDcvMGY2NjY4ODk0ZWQzZDY2NDFjNDA5MTMyMjFmZWMzMTAuanBn.cache","vod_id":19051291,"title":"AI-generated face swapped Song Zuer news anchor while she was doing something else.","lastmod":"2025-09-06","duration":"06:05","url":"/play/19051291.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZGU3ZGZiNzhkMDFiZjVkMDUwZWU0NDllYzZkOGU1NjMuanBn.cache","vod_id":18986254,"title":"SIRO-4005 [First Shooting] [Full-figured F-cup] [Completely different from her boyfriend...] This seemingly innocent and happy girl is actually a super sexy girl. As long as a man inserts his penis into her body, she will reach orgasm again and again.","lastmod":"2025-12-14","duration":"01:06:54","url":"/play/18986254.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTczNzRlMTk1N2RhZDkwODZjOGVjMTE2MjZlY2U1MDcuanBn.cache","vod_id":18972068,"title":"Tattooed stunner, completely naked, revealing her vulva and breasts, performing delicate oral sex and a woman-on-top, ecstatic thrusting position.","lastmod":"2025-12-14","duration":"00:38:24","url":"/play/18972068.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmM2YWJkNzAyNTA3ODhkNzRhNjNhZjk4YTEzYmZiOGIuanBn.cache","vod_id":18952538,"title":"[Chinese Subtitles] MUM-307 A slender body with a prominent buttocks. A soap opera that can satisfy buttock fetishists. Ichinose Ruri Nara's shaved genitals.","lastmod":"2025-03-22","duration":"02:29:52","url":"/play/18952538.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWZhNmRiYzYyNGU4YTM1YmY3ZmVmZTQyNjE4OGEwMGIuanBn.cache","vod_id":18954783,"title":"Douyin streamer [A Tyrant Beast] and multiple streamers livestream from dual perspectives, including private photos. Streamers these days really know how to have fun. The big brother's perspective is truly top-notch (30)","lastmod":"2025-03-22","duration":"00:05:27","url":"/play/18954783.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTE0NmVmMmZjN2Y1OWI4MTRlOGI2MzBjZTM5MWNkOTMuanBn.cache","vod_id":19018614,"title":"Jelly Media - Livestreaming Hosts and Assistants (Dual Flights) - Jasmine, Bai Ying","lastmod":"2025-03-24","duration":"26:46","url":"/play/19018614.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZjExYzNjYjc2MDQ1OTA0YzAwOGVmZjEwYmU2NjY4NjAuanBn.cache","vod_id":19152096,"title":"I invited the gentle housewife next door, only to find that she was even more sexually active than me, draining all my excess sperm. (Mano Inori NGOD-309)","lastmod":"2026-04-07","duration":"02:17:22","url":"/play/19152096.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvM2Q2YzJkODcxMjgxMjgyZThjNmM5YTljNGZiYTdkNzMuanBn.cache","vod_id":19164038,"title":"The busty beauty innkeeper is a super sadist. She tied up a man and thoroughly harassed him. Maki Kyoko, Chinamin, Yoshine Yuria BAZOOKA","lastmod":"2026-07-11","duration":"02:17:22","url":"/play/19164038.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMmRkYjMwMTcwODRhZTI1YjU4N2FmMzgxYmRkN2RiNGYuanBn.cache","vod_id":18952489,"title":"JUY-061 Mature Beauty Konishi Saki Treats Middle-Aged Man to a Bubble Bath with Deep Kisses","lastmod":"2025-03-22","duration":"01:59:53","url":"/play/18952489.html"}]},
videoTitle: 'Online streamer Li Ge Tan Hua, a top-tier beauty with captivating charm, satisfies men's desire for conquest.',
language: 'en',
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('Link copied!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Link copied!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Link copied!');
}
}
},
// 切换布局
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=/`;
}
};
}