[Sexe passionné au bord de la route] Une jeune femme au visage juvénile faisait de l'auto-stop pour rentrer chez elle et a rencontré un conducteur au hasard. Ils ont fait l'amour tout le trajet, le visage découvert, elle lui faisait une fellation, il avait un gros pénis et ils ont essayé diverses positions. C'était intense et excitant.
Neuf voisines d'âges et de professions différents font preuve d'une luxure étonnamment constante dans leur vie sexuelle.","lastmod":"2026-07-11","duration":"19:29","url":"/play/19162816.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDVkOTQxNmY5YjQ4OWMyMTFhOGM4MGIxZDRkMGY5NjAuanBn.cache","vod_id":18959567,"title":"[Non censuré] ATID-523 Kozue Fujita, une étudiante salope qui ne sait pas faire du vélo, se promène avec sa bite.","lastmod":"2025-03-22","duration":"02:34:36","url":"/play/18959567.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTEwODBmZDQ5Zjg3M2Y1YmI3ZTM2YTEwYTMyY2ViNmMuanBn.cache","vod_id":18953552,"title":"Montrer son visage est la clé ! Une influenceuse Twitter très populaire, une déesse sexy couverte de tatouages, révèle ses photos privées, mettant en valeur sa silhouette voluptueuse et s'engageant dans des relations sexuelles passionnées – un régal pour les yeux (1).","lastmod":"2025-03-22","duration":"00:01:00","url":"/play/18953552.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMmRjZGU1YzQ2N2YyMWQwOTUwNDFkMDczMWE5OWJkZTQuanBn.cache","vod_id":18928666,"title":"Une petite salope sexy a profité de sa pause déjeuner pour rencontrer un beau garçon dans un hôtel. Sa culotte sexy l'a rendu irrésistible, et ils ont fait l'amour sans qu'elle se déshabille, elle éjaculant dans son préservatif.","lastmod":"2025-12-14","duration":"00:28:09","url":"/play/18928666.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzJiYWQwZjEzZGMwNzQyNTRkNjE3NmVhYjkwMTUwODEuanBn.cache","vod_id":18943734,"title":"Un jeune homme de Chaozhou, expert en prostitution de rue, a abordé une très jeune prostituée et est monté sur le toit pour avoir des relations sexuelles malgré le vent violent.","lastmod":"2025-12-14","duration":"00:23:30","url":"/play/18943734.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjgyYzg1MDJiNzE0NzVjYTE0M2U4M2JlMDE1M2UyMDUuanBn.cache","vod_id":18972270,"title":"Rapport sexuel non protégé avec une fille à la peau claire, aux seins roses et à la vulve propre et rose, la femme au-dessus, un long pénis qui entre et sort.","lastmod":"2025-12-14","duration":"02:10:27","url":"/play/18972270.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYmVlMjIzMTlhNTIxNGQ3YWMzNTBlMjUyNDg5OGVjMDUuanBn.cache","vod_id":19154135,"title":"Visage de célébrité d'Internet, grande beauté, sextoys de luxe","lastmod":"2026-04-19","duration":"01:31:02","url":"/play/19154135.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODY2ODUwMzI2OTdmNTM0NDcyYzdlOTkwYzU4ZjFhOWQuanBn.cache","vod_id":18971368,"title":"[Non censuré] 277DCV-220 Puis-je vous ramener chez vous ? Cas 214 [Compter 3, 2, 1, 0 suffit pour vous donner un orgasme] Se déroulant dans un bordel","lastmod":"2025-03-23","duration":"01:42:34","url":"/play/18971368.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODAwOTQwNGUzNmNiMjM0MmIzMzk3MDM1NmI4MDc1OTQuanBn.cache","vod_id":19000300,"title":"Mon copain était tellement excité qu'il n'a pas pu s'empêcher de me faire avaler son sperme.","lastmod":"2025-03-23","duration":"10:27","url":"/play/19000300.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDIyNWU0OTYxNWJjYjNkY2YxMGFlYTczMzk5NTE3NWYuanBn.cache","vod_id":18978340,"title":"FC2PPV 3508919 [Non, filmage amateur personnel] Sérieusement, ne partagez pas ! Une Lolita naïve et hypersensible, employée par une société de production de divertissement, est en quête de sensations fortes !","lastmod":"2025-03-23","duration":"01:14:49","url":"/play/18978340.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDRkOWQwZmMyMzQ3ZDE5ODc3NWRkNGQ2MTRmOTVkMmQuanBn.cache","vod_id":18954975,"title":"【潇洒红叶】Deux petits seins à peine développés, tout doux~ pas encore de poils pubiens~ slap slap ✨✨✨ Jeunes beautés, c'est le moment idéal pour les détruire sans pitié -003042-954_(nouveau)","lastmod":"2025-12-14","duration":"01:10:53","url":"/play/18954975.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2UxNGYzNmQ1NTcwOGZiMWIwNGIwYTRiMmY5ZWY1ZjguanBn.cache","vod_id":18957299,"title":"\"Top Internet Celebrity Exposed\" - Une étudiante internationale de 23 ans d'une beauté époustouflante, portant des lunettes et ressemblant à une certaine célébrité, se livre à la masturbation, au sexe oral et avale du sperme (4)","lastmod":"2025-12-14","duration":"00:02:01","url":"/play/18957299.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDM4YmIyMmJhMDkwMmNjZGYyMDk0YTJjY2Y5ODcwZTMuanBn.cache","vod_id":19025286,"title":"SSNI301 immobilisa complètement la taille de Yua Mikami qui tremblait alors qu'elle atteignait un orgasme irrésistible, avec des poussées incessantes pendant les rapports sexuels.","lastmod":"2025-03-24","duration":"03:41:44","url":"/play/19025286.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZDZlYjRhOWZiNGYxYjE5MmJlM2QxNWNjMmU5MjU0YWQuanBn.cache","vod_id":19135059,"title":"Une femme d'une quarantaine d'années, aux seins généreux, a des relations sexuelles avec son jeune petit ami.","lastmod":"2025-12-24","duration":"02:04:05","url":"/play/19135059.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MjMvODA2MTM0NmYwZDQzNWM4MmM2MTk4MjdhOGIzNDMxMDYuanBn.cache","vod_id":19164663,"title":"Groupe de filles bienveillantes, graffiti, poésie, cybercafé soft, exposition, Lily, divers sextoys, jeu mutuel","lastmod":"2026-07-11","duration":"14:55","url":"/play/19164663.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTQvNjNjZWRhYTI0N2Y4NjRiYjY3YmM5YTUyMmMyNzQwYTMuanBn.cache","vod_id":19065878,"title":"Un bel homme musclé a eu des rapports sexuels passionnés dans un hôtel.","lastmod":"2025-12-14","duration":"24:15","url":"/play/19065878.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMjBkZGVhZDYxMDRkNjhlYmZmN2Q4ZGVhZTMwZDc1MWUuanBn.cache","vod_id":19160998,"title":"J'ai retrouvé une très jolie fille avec un chignon dans un hôtel pour passer un moment agréable.","lastmod":"2026-05-31","duration":"01:21:35","url":"/play/19160998.html"}]},
videoTitle: '[Sexe passionné au bord de la route] Une jeune femme au visage juvénile faisait de l'auto-stop pour rentrer chez elle et a rencontré un conducteur au hasard. Ils ont fait l'amour tout le trajet, le visage découvert, elle lui faisait une fellation, il avait un gros pénis et ils ont essayé diverses positions. C'était intense et excitant.',
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=/`;
}
};
}