Une streameuse mûre, belle et aux cheveux courts, fait payer ses diffusions en direct, exhibant sa silhouette légèrement mince et se livrant à une masturbation très obscène.
Une lycéenne se masturbe dans les toilettes, la culotte sur la tête, la tête en bas, et s'urine dessus.","lastmod":"2026-07-11","duration":"08:11","url":"/play/19164989.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMTdlNWFiYjAzMjY0ZmE5MTEzZWVjNTM3MDI3NWQ4MmMuanBn.cache","vod_id":19154639,"title":"Little Wildcat, célébrité d'Internet : physique et apparence de rêve, visage et tétons exposés, pénis inséré dans le vagin (montage en direct).","lastmod":"2026-04-22","duration":"10:58","url":"/play/19154639.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYzg0ODI0NTQ3ZDRkMDQ1Mzc1Y2QxZmJiMDkxYTczNTUuanBn.cache","vod_id":19139281,"title":"Masturbateur prêt à l'emploi pour débutants - Kitaoka Karin - SQTE-628","lastmod":"2026-01-19","duration":"01:43:16","url":"/play/19139281.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZWEyYzgxMDM5MTZjYmY2ZjU5YmFlOWFiOWI4MThjOTUuanBn.cache","vod_id":19026026,"title":"Une streameuse en direct, pure et belle, fait payer ses services pour exhiber sa beauté, sa silhouette parfaite et une masturbation passionnée, ce qui est très tentant.","lastmod":"2025-03-24","duration":"57:03","url":"/play/19026026.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOGZkNTJjZTU3ODM2MDdhNjE5NTkyNTA3NGViMTVmOTcuanBn.cache","vod_id":18968188,"title":"393OTIM-162 Avoir des relations sexuelles avec Karen, une belle femme aux cheveux noirs courts.","lastmod":"2025-03-23","duration":"00:59:16","url":"/play/18968188.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzZjYjUxOGVlOGEzYzAyN2NhZjZmMWM0ZWQzMjJjZmYuanBn.cache","vod_id":18936664,"title":"Jeu de rôle chaotique avec une mère sexy en minijupe, bas noirs et talons hauts, faisant l'amour dans un pavillon après une randonnée épuisante dans un cadre pittoresque. Dialogues crus et excitants. Version originale 1080p.","lastmod":"2025-12-14","duration":"00:14:13","url":"/play/18936664.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTEyZDM0ZmRkY2JjYmQ2MWE0OTZmMjA3OGVhYjhkZTQuanBn.cache","vod_id":18955111,"title":"« Dernière recommandation ✅ Hardcore Heavyweight » Des dizaines de milliers d'abonnés sur Pixiv : la séance photo privée de Xrei est terminée ! Diverses scènes de sexe avec beaucoup de sperme blanc (3)","lastmod":"2025-12-14","duration":"00:10:44","url":"/play/18955111.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOGU2NmNkYmZiZjdhNDYyYmM3NzQ2N2VjZWE0NmMzNmQuanBn.cache","vod_id":18934202,"title":"[Sous-titres chinois] DOCP-214 « Je suis là, pardonnez-moi ! » Une belle femme de ménage, chargée du service domestique, est immédiatement pénétrée dans son gros cul sexy dès son arrivée à la maison ! Il la pénètre violemment à plusieurs reprises…","lastmod":"2025-12-14","duration":"03:59:21","url":"/play/18934202.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MDYvZTlhMjQxODUzMDczMzU3MTA5Mjk0Yjg3ZTI2NzFhYjEuanBn.cache","vod_id":19041627,"title":"Une femme riche et belle joue avec une jolie esclave dans la salle de bain.","lastmod":"2025-07-05","duration":"11:19","url":"/play/19041627.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MDEvMGI4ZmI3MzliNzkyYTJmNGVhNDQ4ZTBhYzE2YmJjOWQuanBn.cache","vod_id":19036010,"title":"IPZZ135 L'infirmière lubrique lèche et embrasse avec sa longue langue pour provoquer l'éjaculation.","lastmod":"2025-06-01","duration":"02:29:55","url":"/play/19036010.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MTAvYTBhYTMwZTY1NTJiYzQyMmVjMjlhZjYwN2FkNGY0ZGEuanBn.cache","vod_id":19167536,"title":"Une streameuse mature, plantureuse et vêtue de bas noirs, séduit un homme dans un bâtiment abandonné pour une relation sexuelle nocturne.","lastmod":"2026-07-11","duration":"32:30","url":"/play/19167536.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNjZmZWEzNTM5ZGI4MDA0OWU3MTRkMjM2NWM4NDUxZWMuanBn.cache","vod_id":19134920,"title":"Tout droit venue des rues de Corée du Sud — Waouh, quelle beauté ! Des jambes magnifiques, un caractère adorable, une silhouette parfaite, une esthétique exquise, et elle flirte avec une actrice inconnue (MBMH-087).","lastmod":"2025-12-23","duration":"02:13:03","url":"/play/19134920.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDYxODI5OTRkOGJiNGIxMTMwZGZhNWZhOGI1NWVhNzMuanBn.cache","vod_id":19009801,"title":"Offre limitée dans le temps : 3480 → 2480 [2 œuvres + α#Super Slim Figure] L'égérie de la marque possède également une silhouette de mannequin parfaite - cd2","lastmod":"2025-03-24","duration":"58:33","url":"/play/19009801.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDIxOTAzNGFmMzU1Y2JkMDY2MjAyMDBmM2E4NGI4N2QuanBn.cache","vod_id":19140638,"title":"Une jeune fille rousse aux formes généreuses, vêtue d'un uniforme, utilise un langage suggestif et se livre à des interactions flirtantes, jouant avec ses seins, son clitoris et se masturbant avec des accessoires.","lastmod":"2026-01-28","duration":"30:11","url":"/play/19140638.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmNjNmFiNGU1ZjE3NmQxMzIzOWRjMzI2NjAzYTE5NGQuanBn.cache","vod_id":18948703,"title":"\"Otaku✅Haute Qualité✅Avantages\" ⭐Jeunesse Invincible⭐ Des centaines de milliers d'abonnés, célébrité d'Internet [Yi Hui] - Tenues sexy variées, danses nues provocantes, silhouette de rêve, ultra-séduisante, très excitante - 01/03/2022","lastmod":"2025-12-14","duration":"01:34:19","url":"/play/18948703.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjhlYmIzYTE0OTBlMTQyOTgwYWZlZjYyNjljZDEwYzEuanBn.cache","vod_id":18966614,"title":"Le secret, c'est de montrer son visage ! Aisha, une ancienne influenceuse de Pornhub et étudiante shanghaienne qui a quitté le milieu, est une femme étonnamment libérée, à l'apparence raffinée, qui s'adonne à diverses formes de sexe et d'éjaculation. (7)","lastmod":"2025-12-14","duration":"00:16:44","url":"/play/18966614.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjlmOTM3ZDU4ZjBkY2YwZGY3OGNhMzc2Y2QwYzQyNTMuanBn.cache","vod_id":18929524,"title":"Une jolie blonde, [Déesse Farah], se masturbe sur un canapé, léchant un vibromasseur, s'insérant les doigts, gémissant et haletant. Très séduisant, à ne pas manquer !","lastmod":"2025-12-14","duration":"00:54:22","url":"/play/18929524.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9pYy4xNTUyNTAyMTQudG9wLzIwMjYwMjIzL1prbXRZVVRjLzEuanBn.cache","vod_id":19145373,"title":"Danse du ventre séduisante avec des mouvements de hanches sensuels ! XVSR-851","lastmod":"2026-02-25","duration":"01:57:46","url":"/play/19145373.html"}]},
videoTitle: 'Une streameuse mûre, belle et aux cheveux courts, fait payer ses diffusions en direct, exhibant sa silhouette légèrement mince et se livrant à une masturbation très obscène.',
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=/`;
}
};
}