Bas blancs, jambes magnifiques, visage ovale et pur, déesse du style universitaire, contraste extrême, masturbation avec des sextoys stimulant son petit trou rose, orgasme et humidité constante, ses gémissements coquins donnent instantanément envie de la violer.","lastmod":"2026-07-11","duration":"31:16","url":"/play/19153295.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODk5Y2ZkZWYxZTMxYWMwYjhiZjJhYzYxZTlhYWI2M2YuanBn.cache","vod_id":18934755,"title":"MIAA-104 J'ai été agressé sexuellement par les deux sœurs aînées de ma petite amie ; elles ont eu des rapports sexuels avec moi en secret, à bout portant. AIKA Rino Kirishima","lastmod":"2025-03-19","duration":"01:56:45","url":"/play/18934755.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNTIyZTJjMzdhY2NlN2M4M2M4NDdlNzhkMDY5NThmOTguanBn.cache","vod_id":19020876,"title":"SONE-244 Quand j'ai regardé en cachette le smartphone de ma femme... j'ai vu ma femme nue avec un inconnu...","lastmod":"2025-03-19","duration":"02:15:09","url":"/play/19020876.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MjEvM2FlMDQzNzM1ZWQyOTRhYTMxNDRmYjc1YWVlOGMwMzguanBn.cache","vod_id":19121280,"title":"Pousse plus fort, je suis sur le point de jouir, éjacule sur ma poitrine !","lastmod":"2025-09-21","duration":"14:32","url":"/play/19121280.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjQ2YTM5MDA3NzMwYTEzOTIwOGFhNmMzYzBmYWY1MmQuanBn.cache","vod_id":18980774,"title":"DRPT-057 « Si tu ne peux pas lécher mes parties génitales, alors laisse-moi lécher ton cul ! » Le jeune frère, incapable de se concentrer sur ses examens car il était obsédé par les corps des femmes, s'est agenouillé et a imploré grâce !","lastmod":"2025-03-19","duration":"02:17:10","url":"/play/18980774.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMmEzMzk5MDE1NTQ5ZDFmZWYwNGE5NzE4NGU2ZDI4OGUuanBn.cache","vod_id":19040835,"title":"Ma première masturbation !","lastmod":"2025-03-19","duration":"09:34","url":"/play/19040835.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZGY2MDA4Njg0NDQ0NzIzNDc2MWM1ZDM1ODhhNDllODIuanBn.cache","vod_id":19084989,"title":"FC2-4070093 [Aucun commentaire marquant avant le 12#28] Taiyaki-chan. La première fois que j'ai rencontré un homme plus âgé, il a inséré un sextoy dans mon vagin - CD4","lastmod":"2025-03-19","duration":"32:33","url":"/play/19084989.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzI1ZjUxMjUyZGMzYjFjNGVhYTY4YTJkM2UzMDE2ZWQuanBn.cache","vod_id":18925319,"title":"Une belle présentatrice de journal télévisé sud-coréenne a écarté les jambes sur une chaise et s'est masturbée en utilisant du lubrifiant, en touchant ses sous-vêtements.","lastmod":"2025-03-19","duration":"23:52","url":"/play/18925319.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTViMjk2ODAyNjhiOGFkMzdkMDZmZDJhNGNmZDMyYWQuanBn.cache","vod_id":18958340,"title":"Tianmei Media - Ma sœur est streameuse porno - Xu Yeye","lastmod":"2025-03-19","duration":"28:22","url":"/play/18958340.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYTY1MTc0YjI5Y2MxNGRiMTViNjI0ZTI5NDY5MWM5YWUuanBn.cache","vod_id":19047594,"title":"Expérience hôtelière réelle des fans avec deux streamers en direct","lastmod":"2025-03-19","duration":"18:43","url":"/play/19047594.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYmM0YjEwMTU0MWQ3NDEwZjZkNzhkNDdlNjAzNjE5M2IuanBn.cache","vod_id":18940468,"title":"FSDSS-030 Ma belle aînée, Ayaka Tomoda, a flirté avec moi, un puceau qui venait de se faire larguer, et je n'ai pas pu résister. Elle m'a donc forcé à avoir un rapport sans préservatif et a éjaculé en moi. Ayaka Tomoda","lastmod":"2025-03-19","duration":"02:00:03","url":"/play/18940468.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MzEvZTNkNjJlMTVhNzBhZjk1OWI1NWJhYzg5ZmUzZTRkNmMuanBn.cache","vod_id":19106845,"title":"JUBE-028 Mes seins ont commencé à pousser pendant que je cherchais un sugar daddy ; ils étaient plus gros que ce à quoi je m'attendais.","lastmod":"2025-05-31","duration":"02:17:35","url":"/play/19106845.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjhkMjk1ZDIwNmM4NGRmNDZhNTEwOWJjMzY0OGVhZjAuanBn.cache","vod_id":19001702,"title":"Xiao Taozi, une streameuse populaire qui a subi un lavage de cerveau.","lastmod":"2025-03-19","duration":"12:02","url":"/play/19001702.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZjgxNzAzZmM1OGEyYzA4OTE3OGE4YjU3ZjU4NzVjMjIuanBn.cache","vod_id":19026386,"title":"EMTH-146 Un homme d'une cinquantaine d'années perd la tête. Je veux me faire baiser jusqu'à l'orgasme ! Éjaculations intenses avec 8 femmes d'une cinquantaine d'années.","lastmod":"2025-03-19","duration":"05:15:17","url":"/play/19026386.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDdlMTA1Y2Y2NzViMTRkYmJkOWE0OTY5NWZjMjJlMmYuanBn.cache","vod_id":18992038,"title":"[Scène à quatre célèbre avec trois hommes et une femme] [3] Une Thaïlandaise aux longues jambes est impitoyablement dévorée par un homme imposant qui la baise sous tous les angles, ses deux énormes pénis lui ouvrant les deux orifices simultanément. Elle n'en peut plus et en reçoit un autre !","lastmod":"2025-03-19","duration":"28:45","url":"/play/18992038.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNGJlZjU5YmE2Y2U4ODFkNmRhMzM4MmQ3ZGM5MWE2YjQuanBn.cache","vod_id":19136455,"title":"VENX-215-C La sœur de ma femme est apparue soudainement et nous avons couché ensemble pendant deux jours et une nuit.","lastmod":"2026-02-13","duration":"01:37:02","url":"/play/19136455.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMGU1NmQzZDczNzZiZGFmMjU5NDliM2EzNWZkMjZlZDQuanBn.cache","vod_id":19131051,"title":"DNJR-148 Femme de bureau sexy en bas noirs... Ce n'est pas mon travail...","lastmod":"2026-02-13","duration":"01:53:02","url":"/play/19131051.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9ndXp3aWF5ei5jb20vMjAyNjAyMTkvdHpwR004aTIvMS5qcGc/dD0xNzcxNTU2MDkx.cache","vod_id":19139391,"title":"L'assistante administrative de l'entreprise, d'ordinaire si distante, est devenue incroyablement obéissante en me voyant. L'homme lui a demandé : « Il est grand ? Vous l'aimez ? » Elle a répondu : « Oui, je l'aime bien. Bon, arrêtez de prendre des photos ! » Quelle fille adorable et charmante !","lastmod":"2026-02-20","duration":"00:00:36","url":"/play/19139391.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMWJhYTA2NmNkMjBhMDhlOWJmYWRkZmNmZWI4MmUzZTguanBn.cache","vod_id":18996605,"title":"HUNTC-038 « Qu'est-ce qui est le plus agréable, le vagin de ma vraie sœur ou celui de ma fausse sœur ? » Ma sœur biologique et ma demi-sœur se disputent à mon sujet.","lastmod":"2025-03-19","duration":"01:40:14","url":"/play/18996605.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTFkZmFmNjJjZWIzNDYyMGU1ZjM3NWZhMjY3MzUwMjYuanBn.cache","vod_id":19016418,"title":"Jingdong Pictures - Mon meilleur ami est gay. Mon meilleur ami a le cœur brisé et cherche du réconfort, mais il prend par erreur un chrysanthème pour un trésor.","lastmod":"2025-03-19","duration":"38:01","url":"/play/19016418.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvM2Y1YzhkNTk5NDA1YWMzOGE4ODg2NzY1YWRkOTc0MWIuanBn.cache","vod_id":18957479,"title":"[Watanabe Media] DB010 : Première séance photo timide d’une étudiante.","lastmod":"2025-03-19","duration":"35:21","url":"/play/18957479.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNmY0YzU4ZDVmMmNiMmU4YjFlZGNlY2M5Y2RjZmYxNmUuanBn.cache","vod_id":19057366,"title":"Une figure féminine emblématique des débuts, une déesse espiègle et adorable au look naturel !","lastmod":"2025-03-19","duration":"14:54","url":"/play/19057366.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTZiNjA3NTRkNzc1ZDEwNzRiMjdjMTM2YWJjOTVmZTcuanBn.cache","vod_id":18925038,"title":"Une présentatrice de journal télévisé sud-coréenne se livre à une performance de danse nue !","lastmod":"2025-03-19","duration":"07:32","url":"/play/18925038.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjE1YzVlMjc4ZWI3Mjc3ODEwNDk0YjZlYzI4ZmI0ZjkuanBn.cache","vod_id":18947269,"title":"TMAVR-157 [VR] Les adultes sont simples ♪ Je vais utiliser ma bite d'adulte pour me débarrasser de cette fille effrontée de ma pension, Yui-chan-cd2","lastmod":"2025-03-19","duration":"37:55","url":"/play/18947269.html"}]},
videoTitle: 'Tianmei Media - Ma sœur est streameuse porno - Xu Yeye',
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=/`;
}
};
}