Une jeune femme respectable a été pénétrée et invitée chez une femme de mœurs légères dont le mari travaillait dans le Guangdong. Vêtue de rouge et de bas noirs, elle était si vulgaire qu'elle n'avait pas d'amis.Une jeune femme respectable a été pénétrée et invitée chez une femme de mœurs légères dont le mari travaillait dans le Guangdong. Elle était si vulgaire qu'elle n'avait pas d'amis.Une jeune femme respectable s'est fait pénétrer et a été invitée chez une femme vulgaire travaillant dans le Guangdong. Vêtue de rouge et de bas noirs, elle était si vulgaire qu'elle n'avait pas d'amis.","lastmod":"2026-07-11","duration":"","url":"/play/19207231.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MTgvN2YzMGNiY2QyODU1ZWE5NjYwYTFlNmFiNWMyOWUyMTEuanBn.cache","vod_id":19135347,"title":"FPRE079 Une jeune fille aux formes généreuses taquine secrètement les tétons du père de son amie, savourant une éjaculation continue.","lastmod":"2025-05-18","duration":"2:32:56","url":"/play/19135347.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDZkNTA2ZDk0OGVjOTBhZjQxZDE4NjM4NjU2NWY2NmUuanBn.cache","vod_id":19085682,"title":"Sa meilleure amie, mignonne mais rusée, s'est approchée d'elle, lui murmurant des mots obscènes, la suppliant et la séduisant ! 吉隆ゆなら.","lastmod":"2025-03-26","duration":"2:04:45","url":"/play/19085682.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvNDdlODA2MjFlYjA5NTcwNGRiMDFiNzI3ZGYzMTNhMGEuanBn.cache","vod_id":19165722,"title":"Rupture avec mon petit ami : Étudiante à temps partiel - Fortement recommandé, à voir absolument !","lastmod":"2025-12-13","duration":"0:25:47","url":"/play/19165722.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZjM5MTIwMDJiNjFlZTEzOGNjZDdiZDQ2MDc5YzQ3NDYuanBn.cache","vod_id":19097968,"title":"C'est difficile dès que tu ouvres la porte ! Peu importe le nombre de fois où tu éjacules, ça ne finira jamais, comme un relais d'éjaculations sans fin !","lastmod":"2025-03-26","duration":"2:04:25","url":"/play/19097968.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MjYvZTE2NzU0MmFkNDIxNzE1MmJkZWZmYWNhNzFhNGI2NDIuanBn.cache","vod_id":19132042,"title":"Une femme aux seins volumineux et ondulants, se livrant inconsciemment à une provocation érotique avec son frère, et présentant un entrejambe excessivement proéminent. (Hakuhana HBAD-642-C)","lastmod":"2025-04-26","duration":"2:03:06","url":"/play/19132042.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMzAvMTUzZjZjMjQzZTdkNTg0ODVkODk0MWNiOTY1N2I5OTcuanBn.cache","vod_id":19161539,"title":"Magazine Magic Mirror Insider « Réservé aux couples » : J’ai « couché » avec ma fière copine et j’ai éjaculé en elle ! 4 beautés en maillot de bain font le buzz. Actrice inconnue SDMM_183","lastmod":"2025-10-29","duration":"3:55:07","url":"/play/19161539.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZWQzMDQ1Y2I2NmQ4ZjIyNWI1YThjZmEwM2E4YWI3ZTQuanBn.cache","vod_id":19176749,"title":"Kim Bo-na RAS0288 souhaite être brutalement pénétrée par son professeur et avoir une éjaculation faciale illimitée dans la salle de classe après l'école.","lastmod":"2026-01-28","duration":"0:32:44","url":"/play/19176749.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMTY2ZDcwMjU1NjE3Yjk3YjQ5NDRjOGFjMzgxNWUwODEuanBn.cache","vod_id":19190317,"title":"Un jeune homme en quête de plaisir s'engage avec passion dans une rencontre stimulante avec une femme sophistiquée et élégante, à la taille fine, aux hanches galbées et aux longues jambes – une expérience véritablement exaltante.","lastmod":"2026-04-02","duration":"0:38:31","url":"/play/19190317.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNmE2NGVjMDMyZWE3M2QzMTQ2ZTc0ZTlkNmViZWQyZTcuanBn.cache","vod_id":19044879,"title":"Une averse soudaine a contraint l'idole des photos et ses amies à se réfugier seules dans un abri jusqu'au matin.","lastmod":"2025-03-26","duration":"2:00:12","url":"/play/19044879.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYTY5MmNlMDAwNTA1MjYzYjZkYjZhODVhZGRhNWIzZDguanBn.cache","vod_id":19103863,"title":"Elle a fait sensation sur les réseaux sociaux en ayant des relations sexuelles débridées et passionnées avec une femme au foyer à l'appétit sexuel insatiable qui possédait un compte secret !","lastmod":"2025-03-26","duration":"2:10:42","url":"/play/19103863.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjI1MmVlMTVlYjE0NjJlZjkxYzA1YTgyZGE3MmMzZTcuanBn.cache","vod_id":19108010,"title":"Avoir des relations sexuelles avec l'amie de la mère de sa femme","lastmod":"2025-03-26","duration":"2:14:38","url":"/play/19108010.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNjI5MWM1MWViMTFlOGJiYThmNzZjMzg0ZjM3MGJhNWEuanBn.cache","vod_id":19178848,"title":"Le petit ami d'une jeune fille punit une lycéenne absentéiste avec son gros pénis.","lastmod":"2026-02-07","duration":"0:18:43","url":"/play/19178848.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MjAvODFmMDY3OWEzZTc5MDI0YTg0Mzg4ZDQ4YWQ3MzNhM2QuanBn.cache","vod_id":19155339,"title":"Surveillance AV normale homme et femme Deux bonnes amies mères pratiqueraient-elles une fellation sans mains sur un étudiant que vous venez de rencontrer pour l'aider à améliorer son éjaculation précoce ? Acteur inconnu DVMM195","lastmod":"2025-09-19","duration":"2:48:37","url":"/play/19155339.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MjIvZjMyMzk3NmY2MjNhNzQ5YWRkYjRjYzBkYTZiZjQ5ZTEuanBn.cache","vod_id":19140271,"title":"Week-end de repos pour entraîner ta copine","lastmod":"2025-06-22","duration":"0:31:10","url":"/play/19140271.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNGJjYjMwN2U3MGRhMTIzYzg1NWIzZjhlOTFhODcwYzUuanBn.cache","vod_id":19048619,"title":"CLUB-584 Vidéo intégrale de caméra cachée : Je me suis lié d’amitié avec deux belles femmes vivant dans le même appartement, je les ai emmenées dans ma chambre et j’ai eu des rapports sexuels torrides avec elles. (Article 36)","lastmod":"2025-03-26","duration":"3:14:51","url":"/play/19048619.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvY2M5ZTBhZWQ4Njc3MzRhYmZjOTFlZDk1OTdlYzhmMDQuanBn.cache","vod_id":19122346,"title":"Une salope chaude avec un cul magnifique cherche un sugar daddy pour un viol inversé ~ Des femmes lubriques sans fin jouent avec un service excessif et sans fin de PTM pour Ai-Felis.","lastmod":"2025-03-26","duration":"1:59:55","url":"/play/19122346.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMGU4ZDJhNjgxMTFmZGE4OTEzNGUwYjkxYjRiN2IxMWQuanBn.cache","vod_id":19105332,"title":"Il a pris une chambre d'hôtel avec sa petite amie et l'a filmée en secret !","lastmod":"2025-03-26","duration":"0:27:11","url":"/play/19105332.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNTdjYjZmNDJiMTAzMzUzODIwODkzNTUzODQ1OTIzMDIuanBn.cache","vod_id":19054595,"title":"Une femme infidèle a été réprimandée par son voisin lubrique ; son petit ami n'était absolument pas au courant !","lastmod":"2025-03-26","duration":"0:09:38","url":"/play/19054595.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvOTY3ZDNiNDVhNzY5MjRmMzk2NTMxYzQxZjU1MmU4NDcuanBn.cache","vod_id":19175539,"title":"L'amie de ma femme a soudainement trouvé que manger des aliments crus était génial. (Nogami Shiori, ALDN-526)","lastmod":"2026-01-22","duration":"1:39:57","url":"/play/19175539.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYmI4YmNiZjk5YmU2NmFkOGQ2OWEyNzhkMmU0MTgxZDQuanBn.cache","vod_id":19056647,"title":"Je fais une fellation profonde et brutale à mon copain et je le fais éjaculer dans ma bouche - MissCharm","lastmod":"2025-03-26","duration":"0:13:26","url":"/play/19056647.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNWYxMmUyMTM5ZWI5NzEyOWU2ODdlNGYwNGU4Yjg2ZjIuanBn.cache","vod_id":19125362,"title":"MESU110C : Le premier jour d'un bain moussant trois étoiles pour adultes, profitez d'un moment chanceux avec une fille de bain moussant, avec éjaculation illimitée.","lastmod":"2025-03-26","duration":"1:59:44","url":"/play/19125362.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvY2NjNWE5YWQwZWZkMjllZGVjNzE0YjIxMzgyNTM0ZmMuanBn.cache","vod_id":19046457,"title":"Les possibilités de modèles de dos de maillots de bain sont infinies.","lastmod":"2025-03-26","duration":"0:59:52","url":"/play/19046457.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMDcvOWJlODgyZGFjMTI3ODgzZWJiZDBhZWRiODAxYTIzZmIuanBn.cache","vod_id":19158352,"title":"Incapable de se contrôler, l'amie de son fils s'est livrée à des rapports sexuels d'une intensité sans précédent, enchaînant les orgasmes… Yurine Tsukino JUQ-621","lastmod":"2025-10-06","duration":"2:31:30","url":"/play/19158352.html"}]},
videoTitle: 'L'amie de maman mange en boucle infinie vol.60 Remi Mikage HALE-065',
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=/`;
}
};
}