PeasantsQuest Gameplay 87 Une femme enceinte et mûre aime se faire remplir par une énorme bite.","lastmod":"2026-07-11","duration":"05:47","url":"/play/19164393.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjAyZDQxMzk5YmVhODE0YzFiNzVkMmMwMTZmNzUzNjguanBn.cache","vod_id":19005084,"title":"IPZZ-103-C Une beauté à temps partiel est forcée de porter une minijupe révélatrice par son manager qu'elle déteste, et tombe dans le plaisir du harcèlement sexuel.","lastmod":"2025-03-23","duration":"01:56:36","url":"/play/19005084.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmExZmNiNDJiMGQyYmQyNjcwMDAwNDllMDc3OGZlMDYuanBn.cache","vod_id":18937279,"title":"J'ai passé une nuit à l'hôtel avec une femme incroyablement sexy aux longs cheveux, qui ressemblait à une actrice célèbre. J'ai bandé rien qu'en la regardant, avant même qu'on fasse l'amour. On y est allés à fond, et elle a crié pendant l'orgasme !","lastmod":"2025-12-14","duration":"00:20:29","url":"/play/18937279.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWM0Yzg2NjNhZmNkNDM2OWE1ODlmNWQzYWRhOWZmMDguanBn.cache","vod_id":19014674,"title":"CESD772 Partagez votre bite avec votre voisin ! Des femmes au foyer carnivores qui dévorent de jeunes hommes : Kana Morisawa, Yui Hatano, Hibiki Otsuki.","lastmod":"2025-03-24","duration":"02:03:56","url":"/play/19014674.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MDYvYTJmZjhlY2I3MzVkY2U0YzM2MjZhZGMzY2VjNTE1ZTUuanBn.cache","vod_id":19041674,"title":"Bai Bai adore manger du poulet~ Une fois que cette femme sexy et de grande valeur a fini de manger avec sa bouche, laissez son orifice inférieur faire le travail.","lastmod":"2025-07-05","duration":"26:27","url":"/play/19041674.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNmU1YzNmY2U2NzJiMjM4YzRmZDU5YjZiMmNiYmE3NDUuanBn.cache","vod_id":19151758,"title":"Durant ma phase de rébellion, je suis devenue dépendante des drogues de mon beau-père (un puissant aphrodisiaque) et de son pénis. Il est en train de transformer sa fille, qui n'est même pas encore une femme, en une obsédée sexuelle perverse. SNOS-099","lastmod":"2026-04-05","duration":"02:54:40","url":"/play/19151758.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjc4MDk1MGZhZDQ0NDc0MWJjMWNhZTA4Y2ViOTY5ZjcuanBn.cache","vod_id":18991494,"title":"Une influenceuse sexy et très en vue, connue sous le nom de « Milk Tea Girl », a été surprise en plein acte sexuel dans une voiture, en bordure d'une route de banlieue. Elle utilisait un vibromasseur dans son vagin, vêtue d'une jupe courte. Le conducteur, un homme d'âge mûr, a prétendu que son pénis était trop court pour la satisfaire.","lastmod":"2025-12-14","duration":"01:45:19","url":"/play/18991494.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMGE2ZGIxYmY3YjhjM2MyODE1ZmNiOGE3ZGU2NmRmNzAuanBn.cache","vod_id":18957499,"title":"493NAEN-137 [Creamy Pie] Yandere à deux couettes ! Une salope qui vient de rompre avec son copain mais qui veut toujours la bite d'un vieux.","lastmod":"2025-12-14","duration":"01:02:38","url":"/play/18957499.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjc4ZjgzNTg1YTU2ZmEwODc3ZjRkNjUxZDZkOTJmNzIuanBn.cache","vod_id":18975638,"title":"Une jeune femme séduisante, vêtue de bas noirs, était allongée sur le lit, profitant d'un massage aux huiles essentielles prodigué par un jeune homme. Il lui caressait les seins, jouait avec son vagin, la forçait à lui faire une fellation, puis la pénétrait avec son pénis imposant dans de multiples positions.","lastmod":"2025-12-14","duration":"01:21:29","url":"/play/18975638.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTE5Mjg4NGViMDU5ZjIyN2FjMjY1Y2RjMDc0MDA3OTcuanBn.cache","vod_id":19012472,"title":"SUPA503 : La maîtresse de garderie profite de sa pause ! Habituée à ne voir que des pénis d'enfants, elle est ravie de découvrir ce pénis vierge en pleine érection ! Profitant de la gentillesse de la maîtresse, d'ordinaire si bienveillante envers les enfants, elle se livre à des actes indécents avec le jeune homme. Épisode spécial de 230 minutes (inceste).","lastmod":"2025-03-24","duration":"03:51:47","url":"/play/19012472.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmIxZmQ0ZmI4YzQ5NzcyZmQ2Y2Y4ZGI1YmY3NTMxOWYuanBn.cache","vod_id":18958160,"title":"[Sous-titres chinois] VEC-558 La mère de mon ami l'a forcé à avoir une relation sexuelle avec une tarte à la crème devant lui - Série","lastmod":"2025-12-14","duration":"01:39:37","url":"/play/18958160.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTAxZWMxN2EyZmMwNzViYTkzODhkZmQ1Yzc5YjYyZTcuanBn.cache","vod_id":18970982,"title":"[4K]BACJ-045 Nagase Aina, la grande sœur aux fesses généreuses, te baise sauvagement après un baiser profond jusqu'à ce que tu sois épuisé.","lastmod":"2025-12-14","duration":"02:23:26","url":"/play/18970982.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzM0MzJlYjk5N2RhNTY5ZjE1YTViOGU5NGY2YmU4MGYuanBn.cache","vod_id":18991183,"title":"BIJN-177 Regardez-moi m'exciter complètement avec la bite d'un autre homme… Les désirs d'une jeune femme voluptueuse s'éveillent dans une pièce faiblement éclairée, ses seins bonnet F se remplissant d'un flot continu de sperme crémeux — Erika Hata","lastmod":"2025-12-14","duration":"02:16:57","url":"/play/18991183.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvODZkZWQ1NWRjNjQyZmM2MGNkMGJhOWU1NWQ2MjczNTMuanBn.cache","vod_id":19147523,"title":"Jeune femme mince en short en jean se masturbe, dévoilant une taille fine et de belles jambes.","lastmod":"2026-03-10","duration":"01:50:00","url":"/play/19147523.html"}]},
videoTitle: 'Une femme perverse a forcé son jeune frère à utiliser son pénis pour rembourser les dettes de sa sœur.',
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=/`;
}
};
}