Une jolie fille à la peau claire, au visage juvénile et à la poitrine généreuse. Elle sait faire le grand écart et possède un gode vibrant. Son gros pénis noir est très attirant, et son vagin vibrant est incroyablement tentant. À ne pas manquer si ce genre de choses vous intéresse.
VIXEN aime taquiner son mari et son amant joueur devant les autres【Vixen】","lastmod":"2026-07-11","duration":"11:30","url":"/play/19162509.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzZmMjkwNWUwOGRmNWJlYTU1Nzc4YTlmYTllMDBiNWQuanBn.cache","vod_id":18946224,"title":"Dernière vidéo de l'année de la star du web aux formes généreuses « Xiao Cai Tou Miao Miao Miao » : bas, jambes magnifiques, short en jean, accessoires insérés dans son vagin, orgasme intense avec éjaculation féminine - version intégrale haute définition 720p.","lastmod":"2025-03-22","duration":"00:34:13","url":"/play/18946224.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTgxZmMwODBmZGFlZWU3YWUwYTkwZDZhOTNiNTZkMjcuanBn.cache","vod_id":18927981,"title":"Cette plateforme mignonne (anciennement Kawaii) met en scène une ravissante jeune femme nommée Yan Meimei qui propose des diffusions en direct où elle exhibe sa silhouette de rêve et se livre à une masturbation passionnée. Ses performances sont incroyablement envoûtantes.","lastmod":"2025-12-14","duration":"01:18:06","url":"/play/18927981.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDZmYWFlNDhmNjM3YTJjMDJjNDJjYjBkM2I4ZWE2YjMuanBn.cache","vod_id":18978275,"title":"[4K]BBTU-037 Club de harcèlement des filles à forte poitrine Mizuhara Misono","lastmod":"2025-12-14","duration":"01:38:20","url":"/play/18978275.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MDcvZDRhYmZhZjY0MDBkODNkNzU5NmQ2ZGUwMGE1MGE5YjkuanBn.cache","vod_id":19166851,"title":"Jeune écolière pulpeuse, voluptueuse et incroyablement mignonne, avec une silhouette parfaite.","lastmod":"2026-07-11","duration":"26:16","url":"/play/19166851.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTc3YzM2MTA0ZDk5NGY4N2FmNjEzMTQwNTFkOGE0MDkuanBn.cache","vod_id":18926723,"title":"Une jeune femme ronde et épilée fait l'amour avec son petit ami dans un hôtel. Elle a la peau claire, une forte poitrine et un vagin rose. Elle est en position dominante, se livrant à des mouvements de va-et-vient. Les gros plans sur ses fesses blanches et rebondies pendant la pénétration anale sont très excitants.","lastmod":"2025-12-14","duration":"02:33:17","url":"/play/18926723.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTcyOWJlYzY1ZTExMDU0NzE1Y2ZiM2UyN2Q1NmIxZGEuanBn.cache","vod_id":18980279,"title":"La fille qui appelle le « père de l'ami loup » est jolie et séduisante en lingerie sexy, bas et talons hauts, et a une silhouette magnifique. Elle écarte ses jambes pour que l'ami loup puisse voir de près son sexe rose et excitant, et gémit en se caressant le sexe avec deux doigts.","lastmod":"2025-03-23","duration":"00:58:06","url":"/play/18980279.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MDcvZmM3OTVmMjk5NDg1N2QyZjcyNzY2ZjI4MDE2Y2Y4NGYuanBn.cache","vod_id":19045731,"title":"SDNM508 « J’aime aider les autres », bénévole dans un restaurant pour enfants. Adachi Mi, cuisinière talentueuse et femme au foyer souffrant d’énurésie nocturne.","lastmod":"2025-08-06","duration":"02:35:54","url":"/play/19045731.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMTg3NGY1NTRiNTVmYjhkOWYzOTU3NDExYTU2OTgyYzcuanBn.cache","vod_id":19153498,"title":"Images filmées en caméra cachée de prostitution, mannequins de luxe aux formes généreuses, filmées de nuit.","lastmod":"2026-04-15","duration":"01:24:35","url":"/play/19153498.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzUwZWM0MGZiYWNlYzQ2MjU0Mjc4ODRjZDI4Zjk5YTMuanBn.cache","vod_id":18965086,"title":"Ressource rarissime et de premier ordre ! Vidéos inédites de la sublime [Yimeng], déesse de la beauté lycéenne, à ses débuts dans l'industrie du X ! ✨✨✨ – Le contraste entre son physique, sa silhouette et l'envergure de ses vidéos est saisissant ! _20220519_231400","lastmod":"2025-03-22","duration":"00:48:27","url":"/play/18965086.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDFmNDk3NTA0YTQwZjE3ODNkZDI2MDYwMTEyYjZjZTkuanBn.cache","vod_id":19146730,"title":"Moe Sakakibara, une employée à temps partiel innocente, a raté le dernier train et s'est retrouvée à partager une chambre avec son responsable qui l'a harcelée sexuellement… SONE-949","lastmod":"2026-03-06","duration":"02:45:31","url":"/play/19146730.html"}]},
videoTitle: 'Une jolie fille à la peau claire, au visage juvénile et à la poitrine généreuse. Elle sait faire le grand écart et possède un gode vibrant. Son gros pénis noir est très attirant, et son vagin vibrant est incroyablement tentant. À ne pas manquer si ce genre de choses vous intéresse.',
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=/`;
}
};
}