Cette étudiante à temps partiel était une véritable perle, l'exemple parfait d'une jeune fille séduisante, complètement sous le charme de ce garçon qui la touchait et la caressait sans cesse. Même sans grande attention, elle semblait y prendre un plaisir immense.
Maître de la boutique : Frère Horn part à la recherche de fleurs et explore les secrets des bains de la piscine dorée de Macao et des beaux seins : un service complet de massage spa, massage à l’huile, sexe et fellations.","lastmod":"2026-07-11","duration":"","url":"/play/19207035.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNmE3YzBmYTc4MWM2M2JjNDM3OTdhNTc0ZjM3ZGJlNWIuanBn.cache","vod_id":19095315,"title":"« Hé. J'ai envie de toucher tes tétons pour toujours. » Une étudiante était obsédée par le fait que des hommes lui touchent les tétons. Téton + Solitude = Chikubinbo","lastmod":"2025-03-26","duration":"1:40:37","url":"/play/19095315.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzI1YzY5ZWE4Nzg5ODU1M2IzYmI4MTkwMGEzOTViMDguanBn.cache","vod_id":19114082,"title":"La starlette d'internet [Yuzu Cat] se déguise en JK en bas noirs brillants, Yuzu Cat en train missionnaire, boîte bento, câlins et baise vigoureusement 1","lastmod":"2025-03-26","duration":"0:22:30","url":"/play/19114082.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYzg4NjBkYTQ5ZWNiOWNkNWVkMzlmYWI1NTRiNDk3OGQuanBn.cache","vod_id":19121344,"title":"MMZ016_La récompense de la sœur tutrice_Séduire les étudiants et les baiser sans pitié jusqu'à l'orgasme Site officiel Ye Rumeng.","lastmod":"2025-03-26","duration":"0:32:54","url":"/play/19121344.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9zYnp5dHBpbWc0LmNvbTozNTE5L3VwbG9hZC92b2QvMjAyNjAyMjUtMS9hZjU3OTk1OGVmYmViN2RkZWRmYzg1ZDM1ZjcyMzgzYi5qcGc=.cache","vod_id":19182693,"title":"Un homme a une liaison avec une femme mariée dans un hôtel ; le contraste est saisissant.","lastmod":"2026-02-25","duration":"0:14:39","url":"/play/19182693.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MDMvYThmNDgwZjMxOTZmODU4OTYxOGYxOTA5YTFiYzdkNjcuanBn.cache","vod_id":19129676,"title":"Cette étudiante d'ordinaire calme et discrète est en réalité mon jouet sexuel, ma partenaire sexuelle orgasmique quotidienne après les cours ! Futaba Kurumi MIAA-713-C.","lastmod":"2025-04-03","duration":"2:30:21","url":"/play/19129676.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMTZiZjNkYjRiMmJjMGQ3YThjZDFlN2IyNmY1MTZkNjIuanBn.cache","vod_id":19056398,"title":"Porter un uniforme scolaire pour séduire un livreur","lastmod":"2025-03-26","duration":"0:14:10","url":"/play/19056398.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNjI4YmVjNTlhNTI4YTZmMDc1MjRmMTllOGFjNzc2M2UuanBn.cache","vod_id":19184092,"title":"Petite et adorable dans sa tenue de soubrette rouge, cette écolière douce et sage baisse sa culotte et frotte son pénis contre son ouverture, implorant la pénétration et l'éjaculation.","lastmod":"2026-03-03","duration":"0:58:27","url":"/play/19184092.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MDEvZWRjNGNmOGM1MjUyYzUxMjFlMGRhNjIyMmEwNDhkODUuanBn.cache","vod_id":19137130,"title":"La déesse suprême de Green Broadcasting, la belle Doubaobao est tellement belle qu'elle n'arrête pas de s'asperger d'eau !","lastmod":"2025-06-01","duration":"1:20:45","url":"/play/19137130.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOGRlODk4ZGY2NmI2Yzg1NWEzZDhkY2ExMzZlYzMwMWIuanBn.cache","vod_id":19126856,"title":"XVSR358 Insémination forcée de l'étudiante innocente Wakatsuki Mariya.","lastmod":"2025-03-26","duration":"1:26:12","url":"/play/19126856.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjM5NGQ5OTgxMGMzNGExNmZiNjk1YjA2YTlkNjRlOGUuanBn.cache","vod_id":19097809,"title":"« Professeur, commettons l'adultère. » Je suis une enseignante dont le mariage bat de l'aile, et un élève qui voulait éjaculer en moi a eu des rapports sexuels avec moi à plusieurs reprises !","lastmod":"2025-03-26","duration":"1:59:20","url":"/play/19097809.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MTQvYzNkYTZlYzFlNjcxZWFjOTQ0YjI0NWE0MjI2ZjdhZDYuanBn.cache","vod_id":19143606,"title":"Une jeune fille en uniforme scolaire se masturbe jusqu'à l'orgasme avec un vagin lisse et sensible.","lastmod":"2025-07-13","duration":"0:08:36","url":"/play/19143606.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZTMyMTNlZDNjNjBlYjQ3MDEyMmM3NmE0YzVkYzc4MWMuanBn.cache","vod_id":19086096,"title":"Si la cliente est très impulsive, utilisez des actions très suggestives pour créer un lien avec elle et l'inviter à s'engager formellement dans le service. (Suit une phrase apparemment sans rapport : « Tanaka Nene dans la vraie vie, une femme mariée qui recherche des services de beauté masculins. »)","lastmod":"2025-03-26","duration":"3:55:28","url":"/play/19086096.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTUxYzBjYjY1ZDZjNDcwMzBhMTlmMTg5MTUzMzlhZTguanBn.cache","vod_id":19113539,"title":"La série « Top Scholar » - Une vendeuse de bière dans un bar a été attirée dans un hôtel et a subi une relation sexuelle brutale.","lastmod":"2025-03-26","duration":"0:45:22","url":"/play/19113539.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MTcvYTRkNTlkYjA5ZjZlMTRhOWZmZTFkMzRlY2I5ZmQ4NDAuanBn.cache","vod_id":19204168,"title":"Une étudiante suit une formation d'esclave dans un entrepôt. Amano Hanano se tord de douleur chaque jour à cause de l'entraînement à la corde. (Amano Hanano グ ロ ー バ ル メ デ ィ ア ア ネ ッ ク ス)","lastmod":"2026-06-16","duration":"2:02:07","url":"/play/19204168.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MDYvMjNkYzA1YzcyZDY4MzcwNzQ2NzUwOGM3NzczMDA5YTcuanBn.cache","vod_id":19138013,"title":"MIDV510 est une ancienne mannequin de charme, sensible et dotée d'une silhouette menue et élancée. Lors de ses trois premiers orgasmes, son utérus a été sujet à des spasmes et des convulsions incontrôlables !","lastmod":"2025-06-06","duration":"1:57:43","url":"/play/19138013.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MjIvMzY1YTYwM2Y0MGFhYjAxMGJiN2NlNzU0ZTc0NDc3NTkuanBn.cache","vod_id":19150553,"title":"[Chinois] SONE467 : Une étudiante, une fille sans prise de tête, et sa colocataire d’hôtel obsédée par le sexe. Je suis un homme plus âgé qui fréquente de belles femmes devant les magasins.","lastmod":"2025-08-21","duration":"2:26:07","url":"/play/19150553.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTUzYmMyZjY1ZmE5YjQ4MjMzMDZiYWMwZGJiMjYzZGQuanBn.cache","vod_id":19100298,"title":"Le corps d'une jeune femme séduisante est libéré et sauvagement pénétré par derrière, drainant l'essence de cette belle femme jusqu'à ce qu'elle éjacule instantanément !","lastmod":"2025-03-26","duration":"0:17:20","url":"/play/19100298.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDFjOTU0NDA3MDdhZTI2YzkxYzlkMjg1ZGZmOWZlNjIuanBn.cache","vod_id":19172751,"title":"Magnifique sorcière de 42 ans ! Elle s'adonne au sexe anal avec deux orifices ! Naoka Nonokawa, Naoka Nogawa, YOCH-024","lastmod":"2026-01-08","duration":"2:19:07","url":"/play/19172751.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MDUvNTdlYTgzNjliMmI1NjhiNGRiYjUwMzIyYzQ4MmMzYjIuanBn.cache","vod_id":19147575,"title":"Frère Tanhua, ta bite est tellement grosse ! (Rencontres avec des escortes à l'hôtel, baise et cris)","lastmod":"2025-08-04","duration":"0:22:18","url":"/play/19147575.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjc0ZDI0OTgxNjdkMTc3M2M5N2ZkMzUxN2QwMmNjMWQuanBn.cache","vod_id":19047897,"title":"Une fille garçon manqué super mignonne dans une pub porno lesbienne","lastmod":"2025-03-26","duration":"2:01:15","url":"/play/19047897.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNjU2OTFmNDI5OWQ4MTdmNjNkMTc3NDA5NGYzMWQ2M2YuanBn.cache","vod_id":19179742,"title":"Mon amant, un mannequin nordique que même les célébrités internationales s'arrachent, est venu au Japon pour moi, m'offrant un séjour thermal de rêve, comme un invité d'État. (Réalité Partie 2 : IPZZ-687)","lastmod":"2026-02-11","duration":"2:19:17","url":"/play/19179742.html"}]},
videoTitle: 'Cette étudiante à temps partiel était une véritable perle, l'exemple parfait d'une jeune fille séduisante, complètement sous le charme de ce garçon qui la touchait et la caressait sans cesse. Même sans grande attention, elle semblait y prendre un plaisir immense.',
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=/`;
}
};
}