Fuites de photos privées, dévoiler son visage est la solution ultime, photos privées d'une femme mûre aux lunettes fines jaunes, visage et vagin ensemble, Ziwei exposée, harcèlement sexuel, gémissements, haut de gamme","lastmod":"2026-07-11","duration":"","url":"/play/19267677.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDEwZDM4YTQyNmRlNWE0OThkZmVkNDRmNmY3ZWIzYWIuanBn.cache","vod_id":19240757,"title":"Une jeune fille, considérée comme une beauté, a été formée par un homme riche ; une chienne de grande qualité a été brutalement sodomisée.","lastmod":"2026-01-21","duration":"0:14:23","url":"/play/19240757.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MjIvNDUwNjM1NDQ3NmFjMzE4ZmQxZTFlNmZiZmY5MzU0OWEuanBn.cache","vod_id":19208877,"title":"GMAB006 Entrepôt Bondage et discipline d'une lycéenne - Partie 2 - À la campagne, son corps et son esprit sont liés, et elle éprouve un plaisir pervers grâce aux cordes.","lastmod":"2025-06-22","duration":"4:01:12","url":"/play/19208877.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjhmNzQ3MjI3MWIwMjRhZjgyYTNjNGM4MTlhOTIzNWMuanBn.cache","vod_id":19066065,"title":"IPX-955 Je suis certain que ma femme a une liaison avec un stagiaire de son entreprise. —Kijima Airi","lastmod":"2025-03-29","duration":"1:54:36","url":"/play/19066065.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MjMvZjlmZjM2M2U0NTczZDI5MDkwY2E2YjBlZmZhOTIzOGUuanBn.cache","vod_id":19264956,"title":"Une directrice plantureuse d'une société de production de films pour adultes propose des services sexuels à ses clients. « Si je fais ce que le président me demande, est-ce que j'aurai vraiment le poste ? » - Sena Kasumi (JUMP)","lastmod":"2026-06-22","duration":"2:48:44","url":"/play/19264956.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MTQvNWIwZTgyZDljZGI0MTM4MzRlMWJiY2VlMDYwYTc4MjAuanBn.cache","vod_id":19197281,"title":"Une femme sérieuse, employée au bureau de district depuis sept ans, est en réalité la personne la plus masochiste de toute l'histoire du label. Mochizuki Hitomi SDNM-358-C.","lastmod":"2025-04-13","duration":"","url":"/play/19197281.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMWUwMWJmODcwM2MwOTJhNzllOGRmNGIzZjIwZDNjZDIuanBn.cache","vod_id":19100280,"title":"Madou Media - Rencontre dans la rue avec une infirmière en uniforme, séduisante et lascive - Qi Yuwei","lastmod":"2025-03-29","duration":"0:29:04","url":"/play/19100280.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZjIxZWMyYzI5YTMwMDgzODFhMzAxOGI0NDgxMzc2MWYuanBn.cache","vod_id":19072003,"title":"☆Première fois au cinéma☆Petits seins bonnet C☆Une actrice sexy travaillant dans un célèbre parc d'attractions vit sa première expérience sexuelle sauvage en six mois, gémissant de douleur.","lastmod":"2025-03-29","duration":"0:55:56","url":"/play/19072003.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MTYvYmE0MGQ1NmRjNDQ5NDU1NjI1YjQ4ZTI2ZDM1YWM4NzMuanBn.cache","vod_id":19213330,"title":"DLDSS399 \"Bien qu'il soit un jeune diplômé complètement inutile et totalement incompétent dans son travail, il est incroyable au lit...\" Les rôles s'inversent, et il est complètement ligoté, devenant une salope diabolique.","lastmod":"2025-07-15","duration":"2:42:42","url":"/play/19213330.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MjQvZWRkOGYzYWIwMDYwZWJlNGQxNmVkYmIwY2EzM2UzODcuanBn.cache","vod_id":19219044,"title":"Modèle - Pénétration forcée de la petite amie du frère - Gu Taotao","lastmod":"2025-08-23","duration":"0:26:02","url":"/play/19219044.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MjgvMjRmYWU0ZjAxOTllNTJjM2RiZmNmMGNlZTE4ZmM0NGQuanBn.cache","vod_id":19224142,"title":"Modèle - M. Lapin - Servante japonaise à votre service - Keiko Nakano","lastmod":"2025-09-27","duration":"0:38:51","url":"/play/19224142.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTRjZmRmYmNlZjdhMDViMzMxYTNkODMyZmQxM2VjMDYuanBn.cache","vod_id":19066514,"title":"JUFE-384 L'entraînement frénétique et tremblant de la grande et arrogante présidente de l'entreprise ; le sexe vengeur des petites esclaves qui vous feraient absolument vous agenouiller ; Mimi Anzu","lastmod":"2025-03-29","duration":"1:54:31","url":"/play/19066514.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZWU1MWNmYmVkOGEwYTUyMjAyNTY3YTk4YjA3MmIwZDAuanBn.cache","vod_id":19241024,"title":"Déesse sexy, élégante et mûre dresse son esclave sexuel - Partie 1","lastmod":"2026-01-22","duration":"0:25:04","url":"/play/19241024.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODA1MzQyNmRlZDU2ZWY4YzkyNDMwOWYzMjQ2YTFkNjEuanBn.cache","vod_id":19069830,"title":"[Tarte aux fruits] Tombé dans la discipline","lastmod":"2025-03-29","duration":"0:26:45","url":"/play/19069830.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNmVkN2U5MmY1MDgxMzYyZDUyODRjM2NkODRmODEwMTkuanBn.cache","vod_id":19253817,"title":"Fuite exclusive : Le petit ami de Gao Biru, une enseignante de haut niveau, la transforme en garce","lastmod":"2026-04-13","duration":"0:19:42","url":"/play/19253817.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvODE4ZDRiN2QyNjRkODg5ZThlZWZmMDU4ZjA5MzY1MjguanBn.cache","vod_id":19242603,"title":"Le cerveau sexuel d'une femme masochiste dotée d'un clitoris extrêmement volumineux est éveillé dans le GMEM-141, qui propose un entraînement de base impliquant une défiguration anale, vaginale et faciale.","lastmod":"2026-02-01","duration":"2:16:21","url":"/play/19242603.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZTBjYTQ2YTMyZWI5MDk5MzY5MTVmZWUwMWZlNDNiMTQuanBn.cache","vod_id":19147000,"title":"Hino, une employée de bureau populaire, est victime de harcèlement de la part d'un pervers au sein de son entreprise et travaille frénétiquement.","lastmod":"2025-03-30","duration":"2:44:49","url":"/play/19147000.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZWJkNWZhM2MxOGFkMjc4NzM5NDRjNDIyN2YwNzkxZmUuanBn.cache","vod_id":19151471,"title":"Modèle chinois AV MD MD0067 Hunter and Prey, un faux jeu entre frères et sœurs qui dégénère en inceste - Lin Siyu","lastmod":"2025-03-30","duration":"0:28:09","url":"/play/19151471.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMmM3ODdkZDAzNDk2NTYxZWY0MjgzYzc4MTAzMzM4OTEuanBn.cache","vod_id":19139979,"title":"La star chinoise de l'AV Liu Yiyi (MSD MSD001) - Aphrodisiaque incestueux.","lastmod":"2025-03-29","duration":"0:35:35","url":"/play/19139979.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjczMDBhYzE0MTZkNTA4OTJhYzk0NjM1MzU5NzFmZmMuanBn.cache","vod_id":19090518,"title":"Une superbe employée de bureau porte un body pervers pour des séances de BDSM.","lastmod":"2025-03-29","duration":"1:00:53","url":"/play/19090518.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MTgvMmViZGI2NmI3MGYwY2MxYWRlZWUwM2VkMTQzZGVkYWIuanBn.cache","vod_id":19213652,"title":"FPRE151 Une PDG fière est ligotée et humiliée comme une chienne ; un entraînement SM sournois transforme une femme aux formes généreuses en une bête…","lastmod":"2025-07-17","duration":"2:36:26","url":"/play/19213652.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDg1MjUyOTUwNGI3NTIzZTAyMDE3NzUxMDg3NTBlZDUuanBn.cache","vod_id":19257373,"title":"Une escort girl aux formes généreuses, qui méprise les mines renfrognées des adultes, est droguée et manipulée sexuellement pour obtenir leur compréhension. (NNPJ-579-C)","lastmod":"2026-05-06","duration":"1:56:28","url":"/play/19257373.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZWJlZTQ0ZjhjYjA5YjQyZDI0OTFlNzFjY2I2ZDZlMmQuanBn.cache","vod_id":19120930,"title":"Cette fonctionnaire discrète travaillant à la mairie est en réalité une beauté digne d'une idole de la gravure, Momiji Kokoa, lorsqu'elle enlève ses vêtements !","lastmod":"2025-03-29","duration":"2:26:46","url":"/play/19120930.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMDIvYTYxMTViOTVlODI0NTI2MGZhYWIxYmYxNjI4NTEwZWQuanBn.cache","vod_id":19224823,"title":"Arisa Togawa, libération de son interdiction lesbienne, contrat de maîtresse, amour interdit avec l'amie de sa mère, supplique pour une formation lesbienne masochiste. Arisa Togawa, Ayaka Tomoda. BBAN516","lastmod":"2025-10-01","duration":"1:59:30","url":"/play/19224823.html"}]},
videoTitle: 'Mannequin - Travailleuse du sexe EP1 SM Queen Dressage de chien - Zhou Ning',
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=/`;
}
};
}