Une salope aux gros seins, cocufiée, appelle sa femme pour la baiser. Elle mange du poulet, lèche le cul. Elle n'arrête pas de la frapper et de gémir. Pipe non-stop.","lastmod":"2026-07-11","duration":"28:40","url":"/play/19153814.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYTNlZDcwZjc1ZTBjMDlmMWMwMjM5MDg3ZGRhZGZkNTAuanBn.cache","vod_id":19001404,"title":"Une jeune femme discrète, dans une bataille nocturne passionnée, vêtue de bas noirs, chevauche un marteau-piqueur et se débat sans relâche, le pénétrant de toutes ses forces.","lastmod":"2025-03-28","duration":"54:39","url":"/play/19001404.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZjIyNWZiYjViMmQzMmVkNzQzNzE4MjgwMTYwOGMzNWMuanBn.cache","vod_id":19025321,"title":"Le duo exclusif de Madonna se produit ensemble pour la première fois ! Échange de partenaires (NTR) ~ Un séjour torride de 1 nuit et 2 jours dans une source thermale mixte ~","lastmod":"2025-03-29","duration":"02:45:30","url":"/play/19025321.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYWViNzI2NTU5ODg2YzM5ZWY4NDZjMDNjMWUxODJjMzEuanBn.cache","vod_id":19121416,"title":"Vidéo d'adultère dans un hôtel de banlieue : une femme filmée en secret, 12 personnes, 4 heures, HEZ-836","lastmod":"2026-01-30","duration":"02:42:09","url":"/play/19121416.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYzY4YjBjNzU2OWNjYWQxYTA0OGU1OWUwYWVhOWExY2UuanBn.cache","vod_id":19038638,"title":"[Le tuteur flirte avec un chauve] Sexe passionné dans les bois, visage exposé tout le temps, le tuteur suce ses seins, l'embrasse, touche ses parties génitales, gémissant lascivement, et prend les devants, laissant le tuteur la tenir et s'envoler.","lastmod":"2025-03-29","duration":"20:44","url":"/play/19038638.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMDUvMmRkZTUyNmYzODQ2N2Y5NTg0MTdkNWU0YjY4NjczMzAuanBn.cache","vod_id":19104424,"title":"Une vidéo montrant un diplômé de l'Université des langues étrangères du Guangdong participant à une relation sexuelle à quatre avec un étranger a fuité sur Twitter. La vidéo est qualifiée d'extrêmement dangereuse, incluant même un homme noir.","lastmod":"2025-11-04","duration":"11:36","url":"/play/19104424.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNzA0NTMwNTYyNGE3MmYyMTdlZjcwMTAyYTFmYWRmNWQuanBn.cache","vod_id":19134728,"title":"Une bombe sexy aux formes généreuses, avec une poitrine opulente et des fesses rebondies, se dévoile devant la caméra, échangeant des regards passionnés avec ses admirateurs. Vêtue d'un porte-jarretelles sexy et de bas noirs, elle exécute une danse sensuelle, les aguichant avec ses fesses galbées et des gémissements.","lastmod":"2026-04-03","duration":"38:15","url":"/play/19134728.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjIzNzAyMTRkMjJhOWFhZTY0ZWIxMTBmMjMwN2I2MmUuanBn.cache","vod_id":19025581,"title":"J'ai fait l'amour avec ma femme naïve aux gros seins, qui ne travaillait pour moi que de façon ponctuelle. Nous étions trempés de sueur et de sécrétions vaginales. Objectif !","lastmod":"2025-03-29","duration":"02:04:31","url":"/play/19025581.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMjUvN2Q0NWJhYzk5YjViYTgzNDk0YjI3YjgyYzI4Y2RjMjQuanBn.cache","vod_id":19102475,"title":"Un voyage de doux baisers… Je l’ai embrassée tout au long du trajet… Je l’aime encore plus, je ne peux pas la quitter. Nos langues entrelacées, nos corps… (Le reste du texte semble sans rapport et probablement généré automatiquement.)","lastmod":"2025-10-24","duration":"03:24:37","url":"/play/19102475.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMGMzN2Y0NGEyYmRjN2JkODUyNWEzMTI5NzQ3YmJkNjYuanBn.cache","vod_id":19004374,"title":"Projet Adultère mettant en scène une femme infidèle et sa vengeance sexuelle 1","lastmod":"2025-03-28","duration":"28:39","url":"/play/19004374.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMzY0MTJhMDcyZGM2ZGQ0NGQ3ODVkYmIyMjI0Y2M3MDEuanBn.cache","vod_id":19135821,"title":"Je n'ai pas vu ma femme en uniforme depuis 8 ans… sa timidité est excitante, elle brise la monotonie de notre vie sexuelle et ravive notre intimité et notre amour de jeunesse. CAWD-780-C","lastmod":"2026-04-08","duration":"02:33:14","url":"/play/19135821.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOWNlNjQzMTNlY2IwOTg1N2U5YzliNmRmYTJkOWIwNjYuanBn.cache","vod_id":19051506,"title":"Hotel Passion - Bataille dans la salle de bain de l'hôtel...","lastmod":"2025-03-29","duration":"11:47","url":"/play/19051506.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MjkvZjQ2N2MxMjMwODM1OTg2ZWQ3MDU5Mzc4YjkzNDJmZjYuanBn.cache","vod_id":19097894,"title":"Cette femme est irrésistible ! Super sexy, elle montre son visage tout le temps, exhibant avec passion sa gorge profonde et son gros pénis pendant que son frère la baise sauvagement.","lastmod":"2025-09-28","duration":"01:33:10","url":"/play/19097894.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDdhZWE1OTczNTgxZGFhOTJiN2JjYWIzMzgyZGRiYmEuanBn.cache","vod_id":19122636,"title":"Le secrétaire du Parti de Hanzhong a été pris en flagrant délit d'adultère. Le rapport a circulé et il semble qu'une vidéo les montrant en train de faire l'amour dans une voiture ait fuité.","lastmod":"2026-02-05","duration":"07:09","url":"/play/19122636.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjA0OGFhZWNlMTA3OGVmZGU0OTZiNTBjYTE2MTU1MTEuanBn.cache","vod_id":19008949,"title":"Une jeune femme d'une beauté à couper le souffle se livre à une séance de sexe passionnée de deux heures. Vêtue d'un bas résille noir, elle chevauche l'autre femme en gémissant et en haletant – incroyablement séduisante. À ne pas manquer !","lastmod":"2025-03-28","duration":"02:30:15","url":"/play/19008949.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDlhZDZkZGExOTk2MGYwZmI0ZDViODc0NTQ2NjBiYzguanBn.cache","vod_id":18991268,"title":"Une belle femme au corps parfait et son petit ami font l'amour passionnément tous les jours","lastmod":"2025-03-28","duration":"01:06:16","url":"/play/18991268.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjcxMDgzZmVhN2E4MmVmNjA3ZDAzNzAyYjAzZDcxN2EuanBn.cache","vod_id":18999491,"title":"Circuit gastronomique de Rufuwa","lastmod":"2025-03-28","duration":"02:28:42","url":"/play/18999491.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvM2RkZWU1MGJiMTQxZTc4OThjMzQ0OTMwYTJkOTA2ZDcuanBn.cache","vod_id":19113761,"title":"Modèle de voiture exquis sur canapé, sexe, Guanyin assise en position du lotus, sexe passionné.","lastmod":"2025-12-24","duration":"27:55","url":"/play/19113761.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MjkvNDEyNTFlNGZhNzU4N2E3Y2E3MjcxZjczMDMyMGIxZjMuanBn.cache","vod_id":19092417,"title":"Les rencontres passionnées et les interactions physiques des étudiantes dans les résidences universitaires.","lastmod":"2025-08-28","duration":"24:20","url":"/play/19092417.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MTMvMzgzNmUzZjg3NTQwYmFjMWU4NGFlYjI4MzA2Y2QxODEuanBn.cache","vod_id":19095197,"title":"MIDV967 « Se frotter les mains, ça ne compte pas comme de la triche ? » J'ai passé trois nuits à l'auberge et la sœur de ma copine, une vraie diablesse, m'a masturbé et m'a fait éjaculer 17 fois.","lastmod":"2025-09-12","duration":"02:33:16","url":"/play/19095197.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MDIvZGEyZTc1NzYxNmFiNGRkZjY1N2EwMmU3NjUyMjdiOTQuanBn.cache","vod_id":19068337,"title":"XK8067 Le voyage fantastique du programmeur 1 : L'invasion de l'âme des cent sœurs d'un programmeur et leur désir profond.","lastmod":"2025-04-02","duration":"45:34","url":"/play/19068337.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjc1YjQ3ZDE4NmJhMGU0ZDA0ZTlhNGE3NWQxMDg2NzIuanBn.cache","vod_id":19040822,"title":"Éprouvant secrètement un désir sexuel intense, Angel Moe a des relations sexuelles secrètes avec son ami sur son lieu de travail à temps partiel ; un rapport passionné.","lastmod":"2025-03-29","duration":"02:04:23","url":"/play/19040822.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMTIvMzkxZDgzNjc5NjRiNzNkY2Y4NDRiYmE3OTJlM2I3NTUuanBn.cache","vod_id":19100216,"title":"Tour en mer de huit pieds de haut et huit pièces, animation numérique d'histoire de fantômes, conte onirique pour adultes de huit pieds de haut avec sous-titres chinois.","lastmod":"2025-10-11","duration":"16:39","url":"/play/19100216.html"}]},
videoTitle: 'C-2505 Le parcours passionné de ma femme infidèle 19',
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=/`;
}
};
}