Mit meiner idealen Chefin MOND-269-C","lastmod":"2026-07-11","duration":"02:11:46","url":"/play/19161677.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjk3OTgwNjEyZDM4ZmZhNzNjN2QxY2MxYTNmN2Q4MTIuanBn.cache","vod_id":18953924,"title":"OYC-095 Natürlich wurde das als AV gefilmt! Mein gutaussehender Freund brachte ein betrunkenes Mädchen auf mein Zimmer.","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 Drei Mütter spielen gemeinsam in einem AV mit!! Verheiratete Frau sammelt Dokumente – Ehemann nicht zu sehen.","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 Mein Freund erzählte von seiner bewunderten Chefin und geriet dabei in einen lesbischen Cuckolding-Rausch.","lastmod":"2025-07-06","duration":"02:20:38","url":"/play/19041741.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDRkMWIyYzIzNDRhNjRkNzAwMDJjMmM3NmM1YTM3NGYuanBn.cache","vod_id":19004393,"title":"YAL-132 Heimlicher Verkauf des Fremdgeh-Sex meiner Freundin - Kanna Shinozaki","lastmod":"2025-03-23","duration":"01:38:49","url":"/play/19004393.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjBiMWQwODc2NjkwZjQ4M2UwMTJiMDkwZGJmZDA4ZDkuanBn.cache","vod_id":19013568,"title":"GDHH186 Meine Schwester aus der Highschool streamt live. Sie hat mir ein Potenzmittel gegeben und macht es live! Ich will mehr Aufmerksamkeit! (Gedanken/Ideen)","lastmod":"2025-03-24","duration":"02:26:36","url":"/play/19013568.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MTgvNTU4ODQxM2QzNzA4NzMyOTM4ZjVmZmIxMTQwNGZjMzkuanBn.cache","vod_id":19053279,"title":"Kommentar zum Obstkuchen: Die kleine Teufelsschwester meiner Freundin","lastmod":"2025-09-17","duration":"16:40","url":"/play/19053279.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmRlZDg5NzgzY2IyNzRiNzQzNjU4MzllYTU3Njk0M2YuanBn.cache","vod_id":18991032,"title":"YSN-500 - Ich habe meine Schwester, Morimoto Tsugumi, immer wieder geärgert (Inzest)","lastmod":"2025-03-23","duration":"01:40:51","url":"/play/18991032.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzIyMmM1NGJjNmQyZmZiMzY1N2FlZWMzMTM0ZjU3M2MuanBn.cache","vod_id":18934156,"title":"Ich habe mit der sexy, sportlichen Freundin meines Freundes geflirtet, die total gerne trainiert. Nach einem Streit mit meinem Freund war sie sauer und fragte mich, ob ich mit ihr eine Runde fahren wolle. Ich fuhr mit ihr in ein Hotel, wir hatten Sex, und dann wollte sie nicht mehr. (HD-Version!)","lastmod":"2025-12-14","duration":"00:26:32","url":"/play/18934156.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNmVhNDRjMDg5ZWQ5NWJlZjAwYWRhZjE2YTE0NDRjMTYuanBn.cache","vod_id":18952968,"title":"109IENFH-036 Meine Highschool-Schwester hatte Mitleid mit mir, diesem Idioten, also versprach ich ihr, mich nur an ihr zu reiben. Dann fragte sie mich: „Was?! Bist du etwa reingegangen?“ Und dann konnte ich nicht mehr aufhören und bin in ihr gekommen! (Kawabei Meisha)","lastmod":"2025-12-14","duration":"00:39:25","url":"/play/18952968.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzExYzg2MGUxNjZkOGY0MjkxNGQxMmQwMDNiZGQxYjUuanBn.cache","vod_id":18943985,"title":"NPS-362 Regisseurin Harunas amateurhafte lesbische Anmachsprüche 123 Aoi Shino bringt ihre Freundinnen immer wieder zum Orgasmus, egal wie oft sie schon gekommen sind.","lastmod":"2025-12-14","duration":"03:00:04","url":"/play/18943985.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTQ0N2ZjOWNmMjZhMzQ1NzIzZDUzZjRkYzNhNmU3MzYuanBn.cache","vod_id":19003196,"title":"Starry Sky Media – Die geheime Badezimmer-Affäre meiner Freundin: Ihr Liebhaber ist in Wirklichkeit der Vater ihres Freundes – Ning Xueer","lastmod":"2025-03-23","duration":"21:40","url":"/play/19003196.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDNiNmNkYmYxMDVjODhhNGQxMzlmYTVmNTI3Njk2NDAuanBn.cache","vod_id":18935588,"title":"[Chinesische Untertitel] HND-761 Von einer üppigen Lehrassistentin zu einer Reise eingeladen","lastmod":"2025-03-22","duration":"01:58:15","url":"/play/18935588.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDY5ODBhOWIwM2Y1Nzk2MGNmZjUwZjRlNmVhMjYyOTAuanBn.cache","vod_id":18934727,"title":"HBAD-492 Mit dem Lehrer zur Schule gehen… Als der Lehrer, der sich in eine Schülerin verliebt hat, in sie eindringt, reagiert ihr junger Körper. (Von Nozomi Arimura)","lastmod":"2025-03-22","duration":"02:27:02","url":"/play/18934727.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MTAvMTQwYTY3NTRjMjBmOTAwYzUxOWVlOGIzZjI5MTQxMjIuanBn.cache","vod_id":19037821,"title":"Inzestuöse Beziehung zwischen Geschwistern: Schwester als Braut, Bruder als Bräutigam","lastmod":"2025-06-10","duration":"17:27","url":"/play/19037821.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MDcvYzU4OTJjOGQ1OWU5NjlkNmQwN2E1M2VmYzEwODg4ZGIuanBn.cache","vod_id":19051444,"title":"Er aß heimlich den Hahn seines Freundes, ohne dass sein Vater davon wusste.","lastmod":"2025-09-06","duration":"38:09","url":"/play/19051444.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjNmNmY5MThjMjExODE0ZjE5OGI4OTdkZmE0NjMxYjEuanBn.cache","vod_id":19018133,"title":"Der König in MIRD163 lebte mit 10 Mägden zusammen.","lastmod":"2025-03-24","duration":"02:30:02","url":"/play/19018133.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjQ5ZTI3ZTRjMDkzZDU5YWY1OWYzYTYwZjgwZjA4YjQuanBn.cache","vod_id":18964163,"title":"[Ungekürzte Version] STARS-755 „Ich werde es absolut nicht zulassen, dass meine Lehrerin einen Freund hat…“ Eine verliebte, verrückte Schülerin wurde extrem eifersüchtig.","lastmod":"2025-12-14","duration":"02:18:29","url":"/play/18964163.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYWMwODNiNWE0NzA0NzU5NDgwNWIyYmQzYjVjNzMyMzUuanBn.cache","vod_id":18967998,"title":"Die realistischste Vergewaltigungsszene im gesamten Internet, Weinen im Badezimmer, die Ausbildung einer nach den 2000er Jahren geborenen Flugbegleiterin beginnt.","lastmod":"2025-12-14","duration":"00:11:36","url":"/play/18967998.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTVkZmUxMGI5MGVlYjA1NzI2Zjc0NTI4YjE0MmFmNjUuanBn.cache","vod_id":18924665,"title":"\"Verhornte Freundin ruft Freund an!\" - GEILE FREUNDIN RUFT FREUND AN!","lastmod":"2025-12-14","duration":"00:25:28","url":"/play/18924665.html"}]},
videoTitle: 'Heyzo-2059 Erstellt von der jüngeren Schwester meiner Freundin und mir – Sakuragi Rino 1',
language: 'de',
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('Link kopiert!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Link kopiert!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Link kopiert!');
}
}
},
// 切换布局
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=/`;
}
};
}