Je flirtais avec la copine de mon collègue, une mannequin mûre qui se lance dans le X. Ahhh, c'était tellement bon ! Tu n'as pas pu te retenir et tu as éjaculé dans mon vagin ! L'entendre gémir, c'était tellement bon !","lastmod":"2026-07-11","duration":"43:55","url":"/play/19154229.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMmU3ZGFmMzUwMDZlODNmZjE4ZDVmYjQ4OWVjMTc0NjUuanBn.cache","vod_id":19060427,"title":"Ouais, je suis allé dans une salle de sport où le sexe n'était pas autorisé, et la personne qui est sortie, c'était cette beauté arrogante de la voisine.","lastmod":"2025-03-29","duration":"01:57:20","url":"/play/19060427.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZDY3MTRlNmMxMzVjMTQwZmI1YmM2YTgzYTNiYjFmMGEuanBn.cache","vod_id":19135530,"title":"La streameuse a montré le joli visage de sa fille Yao Yao tout au long de leur rencontre à l'hôtel.","lastmod":"2026-04-07","duration":"16:27","url":"/play/19135530.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MDYvOWIwYjQyYzhlYTY4MGI4MGEwNDFkNjcxMTI5MjVlNjMuanBn.cache","vod_id":19088220,"title":"Femme infidèle, plantureuse, du type épouse vertueuse et mère aimante, avec une expression assoiffée et lubrique.","lastmod":"2025-08-05","duration":"20:50","url":"/play/19088220.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNzEyY2Y0YjZjNDM1OTFkMTg3ODViMDFjMjY1MGM0NGEuanBn.cache","vod_id":19141007,"title":"Un hôtel a filmé en secret une femme qui retirait délibérément son préservatif, révélant ainsi une maladie contagieuse. La femme a découvert que l'homme était atteint d'une IST et qu'elle devait consulter un médecin.","lastmod":"2026-05-04","duration":"53:19","url":"/play/19141007.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvN2QxZDVkODdmZDI3NTUxNzhlZjRmZWZiNzdkYTYzODYuanBn.cache","vod_id":19027010,"title":"0 [Quantité limitée] Je me suis réveillé ce matin et j'ai trouvé une belle femme (enfin, je crois...) que j'ai ramenée hier soir, endormie à mon bras. Target !","lastmod":"2025-03-29","duration":"02:06:54","url":"/play/19027010.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNTI1OWZjZmZhODg3MjY2OTcwYTg0OTYwMTMzNzgxYmIuanBn.cache","vod_id":19141316,"title":"Après bien des efforts, un homme a réussi à séduire une femme sublime nommée Liang dans sa chambre d'hôtel. Pendant leur rapport sexuel, il a découvert qu'elle diffusait en direct et refusait de l'arrêter. Alors qu'elle prenait sa douche, il a discrètement placé une caméra sur elle et les a filmés.","lastmod":"2026-05-05","duration":"44:09","url":"/play/19141316.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjI2ZTVmOGU5NjI0YzBiYTdjOTAzYTZjYWRlNDdkZDYuanBn.cache","vod_id":19051272,"title":"MMUS034 La tentation diabolique de la belle Mitsuki Nagisa.","lastmod":"2025-03-29","duration":"02:29:55","url":"/play/19051272.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvODQzZTUxYzlhMDQ5NjZjNTI2NzIwOWY3NmQxMGMwZjQuanBn.cache","vod_id":19139584,"title":"C'est vraiment agréable de faire un voyage d'affaires avec une belle secrétaire.","lastmod":"2026-04-26","duration":"34:21","url":"/play/19139584.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMmYwNjJhNDczODBhZjhkMjU4NmQxY2VhZTUwZGE3MmQuanBn.cache","vod_id":18979560,"title":"J'ai envie de lécher la plante des pieds de belles femmes jusqu'à ce qu'ils s'adoucissent.","lastmod":"2025-03-28","duration":"02:02:05","url":"/play/18979560.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvN2Y0MjNlYjZmMDFkZWQyYjY5MzVhNTUxMjMxMTA5ZWUuanBn.cache","vod_id":19067248,"title":"Ce que je préfère, ce sont ses gros seins généreux ! La scène de masturbation nue de cette fille à la beauté époustouflante et à la poitrine opulente est incroyablement séduisante, parfaite pour lui caresser les seins et se livrer à une pénétration anale.","lastmod":"2025-03-29","duration":"01:02:14","url":"/play/19067248.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvN2U0ZDdiYjE5YmJiNGE3YmIzM2VhMTljMTFkMDAxNGEuanBn.cache","vod_id":18964657,"title":"Madou Media - J'oblige mon copain à me regarder me faire baiser - Ling Wei","lastmod":"2025-03-28","duration":"26:49","url":"/play/18964657.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMzZjMjRmMzY3ODQ1ZGNkNWIzYWE4OWMwMWZhNjNiNDcuanBn.cache","vod_id":18990283,"title":"Hanling, une belle actrice, séduit le frère de son petit ami et entame une liaison avec lui.","lastmod":"2025-03-28","duration":"13:09","url":"/play/18990283.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZWZlNDFjNjgwODZlZjA3MWQyZmU4MjMzZWQ4MmNmYzguanBn.cache","vod_id":19038104,"title":"[Dernières nouvelles] La vidéo explicite de la jeune mariée [Cai Siqiong] ayant une liaison après son mariage a fuité !","lastmod":"2025-03-29","duration":"15:56","url":"/play/19038104.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYTg4MTUzZDU3ZGE4NzBhZTk0NDJmMmI2MjBiMmMyOTMuanBn.cache","vod_id":19132347,"title":"Une photo selfie divulguée montre une jeune fille, belle étudiante, et son riche sugar daddy lors d'un voyage en voiture, où ils auraient eu une relation sexuelle orale dans la voiture.","lastmod":"2026-03-22","duration":"22:12","url":"/play/19132347.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9zYnp5dHBpbWc0LmNvbTozNTE5L3VwbG9hZC92b2QvMjAyNjAyMTgtMS9lZWU0MjkxM2YxYWIzYTY2NmNlNGY5MjY3YzNkNDY4Yy5qcGc=.cache","vod_id":19125370,"title":"Des informations divulguées révèlent qu'une belle femme à l'apparence époustouflante avait des relations sexuelles avec son petit ami, et que de nombreux selfies et vidéos d'eux ont été vendus.","lastmod":"2026-02-18","duration":"04:31","url":"/play/19125370.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjM0ZmIzM2Q5NzkzNmUxZWFhYjdiZTE5NjJjMTA3MGYuanBn.cache","vod_id":19059120,"title":"200GANA2272 Un coureur de jupons invétéré a été filmé à son insu en plein ébat avec une jeune femme dans sa chambre. 156 Une jeune femme mince et voluptueuse a été surprise en pleine étreinte passionnée avec son petit ami ! Il a révélé ses tendances masochistes, qu'il ne pouvait avouer à sa partenaire, et s'est retrouvé ligoté et cruellement moqué ! Pendant l'acte, elle a déclaré : « C'est encore mieux qu'avec mon petit ami… ! » Nous avons reçu les commentaires suivants !","lastmod":"2025-03-29","duration":"01:11:22","url":"/play/19059120.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOWJmN2U0ZDEwYmY2ZjFhOGIzNTc1ZDJmYjM2MjM4YWYuanBn.cache","vod_id":19007296,"title":"Une femme voluptueuse et sexy, vêtue de lingerie sexy et de bas noirs, se caressant la vulve de manière séduisante, assise sur une chaise, ses doigts s'entremêlant et se mouvant – incroyablement attirante, à ne pas manquer !","lastmod":"2025-03-28","duration":"01:29:00","url":"/play/19007296.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMTAvODM5NDgxYzE5MmM0ODNlNWU5Nzc5NjRmOTE0MWM5YTMuanBn.cache","vod_id":19105377,"title":"Voici l'histoire de ma tante qui essayait de tomber enceinte. Elle a succombé à la tentation inconsciente de ses fesses généreuses et a couché avec moi. (La dernière partie, « 星明日菜 MIAB_332 », semble sans rapport et fait probablement référence à un autre sujet.)","lastmod":"2025-11-09","duration":"02:10:20","url":"/play/19105377.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYjk0NWE2NzQzMTNhOWUxMmE2MWIxZDRiZDJjNzg4NzQuanBn.cache","vod_id":19116298,"title":"Des beautés nobles, sans voix, sont violées, pénétrées jusqu'à l'orgasme. Une sélection de scènes sadiques de viol collectif et de coups de couteau mettant en vedette les actrices Ayaka Yamagishi, Karen Yuzuriha et Yuki Takeuchi. PBD-500","lastmod":"2026-01-04","duration":"04:00:58","url":"/play/19116298.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MTcvYjA0NGVlODY0YTk3NzQwMjllNWQwMDI4ZGE5OTgwYWIuanBn.cache","vod_id":19079070,"title":"Une femme métisse a accidentellement dévoilé ses tétons en dansant.","lastmod":"2025-06-17","duration":"03:18","url":"/play/19079070.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZjE0YzQ5YzUwOGQzOTVmNTcwOWE3ZDQwNmY4YjNlNGIuanBn.cache","vod_id":19066736,"title":"PH047_Une femme aux formes généreuses vient faire le ménage_L'attrait d'une femme de ménage nue (mannequin).","lastmod":"2025-03-29","duration":"37:06","url":"/play/19066736.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNmNkNzk2Mjk3ODEzZDY0M2Q2NTJiODg0NWE2NjM2MWYuanBn.cache","vod_id":19123427,"title":"Mon ex-petit ami est revenu chercher des affaires, et il était toujours incroyablement soumis, alors je n'ai pas pu m'empêcher de le discipliner.","lastmod":"2026-02-08","duration":"32:35","url":"/play/19123427.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMGY0YzBhOWE1Y2RmYjBiNGM1NGViMDE3YjhkZDQwNjYuanBn.cache","vod_id":18995975,"title":"[MIDD-944] Rapport sexuel entre un homme plus âgé et une belle femme, débordant de sueur épaisse.","lastmod":"2025-03-28","duration":"50:17","url":"/play/18995975.html"}]},
videoTitle: 'Hanling, une belle actrice, séduit le frère de son petit ami et entame une liaison avec lui.',
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=/`;
}
};
}