GS291 Je suis allé rendre visite à un ami, et il y avait une fille canon à côté de moi ; je voyais sa culotte. J’étais tellement excité que je l’ai dévisagée. Elle se tenait le ventre et avait l’air d’avoir mal. Je lui ai demandé si elle allait bien et j’ai essayé de l’aider.
REC Train Pervert NTR Jusqu'à ce que je tombe amoureux d'une employée de bureau, j'ai vu son visage sur le quai. Aya Onami inachevé","lastmod":"2026-07-11","duration":"01:58:50","url":"/play/19164624.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTY3NGYwMjQxYzg4YjViYTBkYTZlN2I5MDlkNTI3NDguanBn.cache","vod_id":18996189,"title":"Les mères de mes amis (2018)","lastmod":"2025-12-14","duration":"01:14:00","url":"/play/18996189.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmUwZjljMGE5ODZhMDI0MjQzMjA3OWE0YTBjNTYxMmIuanBn.cache","vod_id":18951015,"title":"HUNTA-150_A Entouré d'employées plus âgées, je suis le seul homme du bureau à faire des heures supplémentaires.","lastmod":"2025-12-14","duration":"03:31:40","url":"/play/18951015.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDhlZTRkNmIwNzY3MjRmOGI2ZmVlMzVjZDk5NDNkZTguanBn.cache","vod_id":19151096,"title":"Il découvre dans les ruines une femme exhibitionniste et perverse. C'est une femme menue, vêtue de lingerie, qui ne publie que des vidéos suggestives sur les réseaux sociaux. Une véritable bête de sexe, disponible sous la référence HMN-807.","lastmod":"2026-03-31","duration":"01:34:08","url":"/play/19151096.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjk3OTgwNjEyZDM4ZmZhNzNjN2QxY2MxYTNmN2Q4MTIuanBn.cache","vod_id":18953924,"title":"OYC-095 Bien sûr, ça a été filmé comme un film X ! Mon bel ami a ramené une fille ivre dans ma chambre.","lastmod":"2025-12-14","duration":"02:08:02","url":"/play/18953924.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2VmNGU3ZDY0NmZkZmU2MmI3OWJkMTU2NDc4YzllODcuanBn.cache","vod_id":18953830,"title":"NPS-360 Trois mères jouent ensemble dans un film X ! Une femme mariée récupère des documents ; son mari est absent.","lastmod":"2025-03-22","duration":"02:38:38","url":"/play/18953830.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MDcvZTg1NzBjZDFlYjI5ODNmNDI1ZmYyODJjYTAzZDM0ODYuanBn.cache","vod_id":19041741,"title":"START299 Mon copain parlait de sa patronne qu'il admirait, et il a fini par se retrouver pris dans une frénésie de cuckolding lesbien.","lastmod":"2025-07-06","duration":"02:20:38","url":"/play/19041741.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNWYzNmMyN2NkNzMyNmI5ZDVmZjk2YWM2YzM0MWM5M2UuanBn.cache","vod_id":18980383,"title":"PPPE-108 Après le remariage de mes parents, j'ai partagé ma chambre avec mes deux sœurs aînées ! Prise entre deux sœurs lubriques, j'étais quotidiennement ravagée et remplie de leur sperme… Arai Rima, Yokomiya Nanami","lastmod":"2025-12-14","duration":"00:28:17","url":"/play/18980383.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDRkMWIyYzIzNDRhNjRkNzAwMDJjMmM3NmM1YTM3NGYuanBn.cache","vod_id":19004393,"title":"YAL-132 Je vends en secret les photos intimes de la copine infidèle de mon ami - Kanna Shinozaki","lastmod":"2025-03-23","duration":"01:38:49","url":"/play/19004393.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNWZkYmY3YjllNDFhYTM4YTIyMWEyY2YyNmYxMTM2ZGIuanBn.cache","vod_id":18970036,"title":"HND-628 Une nouvelle venue, étudiante en lettres qui idolâtre les adultes, travaille à temps partiel dans une boutique de lingerie. Mais une fois déshabillée, elle est absolument sublime ! Son corps est parfait, et elle fait ses débuts officiels dans le X avec une vidéo torride ! Aoi Tojo","lastmod":"2025-12-14","duration":"02:28:33","url":"/play/18970036.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MTAvNGViN2UxOTg2YWI5MGMxZGVkN2FmZmZmYjU0MzhiNTguanBn.cache","vod_id":19037815,"title":"Une jeune délinquante aux formes généreuses devient un jouet sacrificiel à l'école — une orgie sauvage de peau sombre et de chair dépravée envahie par un liquide blanc — anime.","lastmod":"2025-06-10","duration":"27:01","url":"/play/19037815.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDE1OGRkNjUzY2QwMDQ4NjQxZWUzY2VlZDBlODEzMGQuanBn.cache","vod_id":18987695,"title":"[Sous-titres chinois] CAWD-595 Mon amie d'enfance Ichika, ma voisine, est venue utiliser ma salle de bain après la panne de mon chauffe-eau. Je pouvais voir sa peau transpirante, sentir son shampoing et même apercevoir ses petits seins.","lastmod":"2025-12-14","duration":"01:55:12","url":"/play/18987695.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYWUzZmRjZTQ0N2ZhYTk0NDc2NmJhYTQ3YTllNDE3YzIuanBn.cache","vod_id":18960586,"title":"SDMU-396 Miroir Magique : Rencontre avec un fan enthousiaste d'un groupe de danse masculin lors d'un concert !","lastmod":"2025-03-22","duration":"03:53:20","url":"/play/18960586.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTQ1MjY0NmNhMGZkOGEwOWIwYjVmMDg4OTdjY2JlNWYuanBn.cache","vod_id":18978459,"title":"BBAN-411 Jeune diplômée sans scrupules, j'ai raté le dernier train et me suis retrouvée à partager une chambre avec une lesbienne. (Auteure : Yamei Qing Dynasty ; Eau et Bois Naturels)","lastmod":"2025-03-23","duration":"02:30:11","url":"/play/18978459.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvNjYzZjE0MmViOWYwOWIxZTY2NmQ0YTdmM2Y0OWJjZjguanBn.cache","vod_id":19162089,"title":"Euh, vous mentez… ? Une femme ordinaire… et soudain ! Un changement radical ! Une explosion de joie ! Vous n’en croyez pas vos yeux, MBM","lastmod":"2026-07-11","duration":"04:00:19","url":"/play/19162089.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjA3OWRhYWZjMWU4MDBkMjAzMDE5MDAyOTljMDIyZDcuanBn.cache","vod_id":18971442,"title":"[Non censuré] 326NOL-010 [Un corps divin qui éjacule continuellement !!] [Seins bonnet E] Contrairement à son apparence soignée, son comportement timide l'excite énormément.","lastmod":"2025-03-23","duration":"01:06:56","url":"/play/18971442.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTUvODNmMDdiOWQ0ZmJmNjA1ODMyODZmNzBkY2ZmMmIwNTUuanBn.cache","vod_id":19133907,"title":"Boire un verre avec une fille canon, c'était génial, et elle était vraiment sexy ! Une femme à la poitrine généreuse (bonnet J) et au corps parfait, dans son état d'ivresse, a impitoyablement mené un homme soumis à l'orgasme. (Qing Gong Ren Ai EBWH-243)","lastmod":"2025-12-17","duration":"02:40:08","url":"/play/19133907.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZGQ5YjE2MWVhNGZmNzhlZDE0OTc3YzM0YTFmYWY0ODYuanBn.cache","vod_id":19152111,"title":"Un cas de NTR complet : ma femme adorée, aux seins menus, est consumée par les désirs d'un homme d'âge mûr. Scène choquante : ma femme dans le quartier JUR-580","lastmod":"2026-04-07","duration":"02:04:17","url":"/play/19152111.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDY5YmViMjIzYzczYmU4MDc1YjU0MDkxODgzMzA2YjAuanBn.cache","vod_id":19015206,"title":"Capturez les jeux de rôle sexuels intimes d'une petite fille sexy !! cd2.","lastmod":"2025-03-24","duration":"08:04","url":"/play/19015206.html"}]},
videoTitle: 'GS291 Je suis allé rendre visite à un ami, et il y avait une fille canon à côté de moi ; je voyais sa culotte. J’étais tellement excité que je l’ai dévisagée. Elle se tenait le ventre et avait l’air d’avoir mal. Je lui ai demandé si elle allait bien et j’ai essayé de l’aider.',
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=/`;
}
};
}