\"Veuillez retirer le prépuce du pénis vierge et le laver, d'accord !?\" Une femme amatrice et un garçon vierge se baignent intimement ensemble ! Lavez le pénis de votre mère avec des bulles ! La virginité retirée. Femme au visage rouge.","lastmod":"2026-07-11","duration":"03:57:54","url":"/play/19162723.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTAyYTI4NTJlMTEyYWUxYThjYjQxZmRlYWQ0OWQzZGEuanBn.cache","vod_id":18969802,"title":"Jeune fille ronde et pulpeuse avec d'énormes seins, des bas noirs et de longues jambes blanches ; masturbation en vue subjective avec accessoires.","lastmod":"2025-12-14","duration":"00:47:20","url":"/play/18969802.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmRhN2FiN2QzMTdmYzVhYzk0OGUwYjE2MmYxMjJkZGYuanBn.cache","vod_id":19022669,"title":"EBOD705, une streameuse dont la poitrine généreuse a fait sensation, fait ses débuts dans l'industrie du X ! Sa poitrine naturellement magnifique et incroyablement élastique fait le buzz sur internet ! Une poitrine de déesse, bonnet G ! Xiao You (24 ans).","lastmod":"2025-03-24","duration":"02:26:59","url":"/play/19022669.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjk3N2I3NTVkZDVhYmRkZmRmZDRlZjRkY2UwNDg1M2QuanBn.cache","vod_id":19001003,"title":"[Lesbiennes] Deux femmes ordinaires jouent à un jeu de léchage et de pénétration mutuels à la maison !","lastmod":"2025-03-23","duration":"32:45","url":"/play/19001003.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDE2Y2VmY2MwYjUwNDRhNWNhZmI0Y2Y3MDJkYzI5NDcuanBn.cache","vod_id":19007078,"title":"HND-708 Professeur de musique de 26 ans. Une jeune femme de 20 ans, originaire de la ville F, dans la préfecture de Fukuoka, qui avait caché son mariage et était venue à Tokyo, a fait ses débuts comme enseignante après avoir été recrutée. Kawanishi Noa (pseudonyme)","lastmod":"2025-03-24","duration":"01:57:35","url":"/play/19007078.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWMxOWI0Y2JiNzdjMTNhNTY2NGE4Y2Y2ZjA2ZWZjMTYuanBn.cache","vod_id":19012612,"title":"SIRO4107 [Premier tournage] [Orgasme secret de la petite amie...] [Taches sur les draps] Les oreilles de la jeune femme de 19 ans sont rouges, c'est vraiment agréable. Une fille au sourire mignon parle... Candidate amateur, premier tournage AV 131 (inceste).","lastmod":"2025-03-24","duration":"01:02:00","url":"/play/19012612.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTY3Yjc1YzI0NDYzNzNiZmU5MDE0Y2M3MjA2ZjIwOWUuanBn.cache","vod_id":19016384,"title":"Ma copine est une femme mûre à forte poitrine et elle ne porte pas de soutien-gorge, c'est insupportable… ! (Shishido Riho)","lastmod":"2025-03-24","duration":"02:24:57","url":"/play/19016384.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MTAvNmVmMjAyMDAwMzVjZTZmNGJkYzc1ZGJlZmIxY2IzYmIuanBn.cache","vod_id":19028636,"title":"La belle-fille, une lycéenne aux formes généreuses, est imprégnée d'aphrodisiaques. Sept jours consécutifs d'orgasmes et d'éjaculations abondantes. Xiaohua Nuan WAAA-231-C.","lastmod":"2025-04-10","duration":"02:03:43","url":"/play/19028636.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWFlZTQ0MzZmZjhhZTc0ZTQyOGNlMTVhNDFlMDAyYTguanBn.cache","vod_id":18941538,"title":"LZDM-022 Une histoire lesbienne mettant en scène une étudiante plantureuse en détresse - Yuzuki Rika Goto","lastmod":"2025-03-22","duration":"02:14:35","url":"/play/18941538.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvOTI3MGVhYjhhZmM4OTgwNjg1ODA1OTI5YzkxOWQwYmUuanBn.cache","vod_id":19146603,"title":"Séance photo avec des mannequins de haut niveau, disponibles à des prix élevés.","lastmod":"2026-03-05","duration":"41:05","url":"/play/19146603.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzhjNzRhMWNhYzM5YmJlZDViMTBjMTBlN2Q2YzJhYTkuanBn.cache","vod_id":18941937,"title":"La deuxième partie met en scène une jeune femme voluptueuse, aux cheveux courts et à la poitrine généreuse, se caressant en lingerie tout en urinant et en prenant une douche. C'est incroyablement envoûtant et séduisant ; à ne pas manquer !","lastmod":"2025-12-14","duration":"00:18:09","url":"/play/18941937.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MTAvMjZhNjRjOTNlYjRkOTUzYjUzN2Y0NzkzM2Y5NzhkNmYuanBn.cache","vod_id":19046343,"title":"Collection vedette de 18 actrices à forte poitrine (bonnet I et plus) par UMSO591","lastmod":"2025-08-09","duration":"04:02:07","url":"/play/19046343.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MDEvMWVjNGNkMWExMGE3YzQ3MzUyOTcxZDE4YjVkYjlmMmUuanBn.cache","vod_id":19035923,"title":"10musume 101623_01 Fille Naturelle 101623_01 Lolita Exotique Amateur Fille Regardant vers le haut avec de grands yeux, Sexe des seins, Service de sexe oral","lastmod":"2025-06-01","duration":"20:34","url":"/play/19035923.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNzQ4ZDA5ZGVjYWU1MDU5NDdiYmViNGI2Mzk2ODQ5MzUuanBn.cache","vod_id":19157352,"title":"Grande, mesurant plus de 170 cm, avec un teint clair rappelant celui d'une tour céleste, elle a fait ses débuts dans le X en tant que Ryou, une amatrice de classe S.","lastmod":"2026-05-10","duration":"02:25:56","url":"/play/19157352.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTViODg4NjU2OTY4OTQxMGQ0MTQxN2U5OWE3ZDk5Y2QuanBn.cache","vod_id":18963558,"title":"Collection complète de fuites de haut niveau - Montrer son visage est essentiel ! Cible de toilettes à chair humaine : 100 personnes tuées. Twitter de grande valeur, qualité supérieure, gros seins, contraste, salope [Juice Summer], tournage privé, sexe varié, Ziwei (23)","lastmod":"2025-12-14","duration":"00:02:15","url":"/play/18963558.html"}]},
videoTitle: 'MIFD-094 À mi-chemin entre idoles et amateurs ! Débuts dans le X de la plantureuse idole photo : Fukasawa Kiri.',
language: 'fr',
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('Lien copié !');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Lien copié !');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Lien copié !');
}
}
},
// 切换布局
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=/`;
}
};
}