JUR-252-C In der Nacht vor meinem Heiratsantrag hatte ich ungeschützten Sex mit meinem Jugendfreund. Er lächelte verführerisch und sagte: „Ab morgen beginnen wir eine außereheliche Affäre …“","lastmod":"2026-07-11","duration":"01:57:52","url":"/play/19129574.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWM3ZGE3MTdjZDM0MDg3MTgzMzc1YzZiOGQ4ZjM0MmMuanBn.cache","vod_id":19046490,"title":"FSET-318-C Ich bin ein Tutor, der ohne Wissen der Familie einer Hochschulaufnahmeprüfungskandidatin eine sexuelle Beziehung mit deren Tochter hatte.","lastmod":"2025-03-19","duration":"02:24:45","url":"/play/19046490.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTA5NzA4ZDczMGFiY2Y2YTZhMzJiZjQwYzM5NWU5ZTguanBn.cache","vod_id":18980348,"title":"FC2-4280634 [Gesicht entblößt] [Seltsame Geschichten/Samenerguss] Mein Mann sagte: \"Meine Frau ist sexy und süß, also schlaf bitte mit ihr.\"","lastmod":"2025-03-19","duration":"58:05","url":"/play/18980348.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTVhZmEwMTE1YjczMjgxN2U1ZmMzMGYyNzQ5YzZjYTYuanBn.cache","vod_id":19046165,"title":"GS-447-C Eine junge Ehefrau nimmt an einem Vorstellungsgespräch für eine Moderatorenstelle im Tagesprogramm teil und erlebt eine leidenschaftliche Begegnung. Die unerfahrene junge Frau, die noch keine Moderationserfahrung hat, möchte dringend Geld verdienen, da ihr Mann nur wenig verdient. Als ich ihr jedoch sagte, dass es sich um eine Tagessendung handele und sie daher nicht viel verdienen könne, erklärte sie sich zu allem bereit und begann, sich auszuziehen! Als ich sagte: „Nein, das ist kein Sexshop…“, antwortete sie aufgeregt: „Sie können es gerne versuchen.“","lastmod":"2025-03-19","duration":"01:55:49","url":"/play/19046165.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjQ2NzY4OWYyNjcxMTY5ZjZmZmZlNWYzMDczYTZkZmQuanBn.cache","vod_id":19069196,"title":"Ein Mann mit Kurzhaarschnitt bot einen hohen Preis, um zwei Göttinnen für einen Dreier zu engagieren. Sie sahen unschuldig aus, hatten lange, schlanke Beine, und er umarmte je eine von beiden, während die dritte ihm einen tiefen Blowjob gab. Die beiden Schönheiten wechselten sich beim Sex mit ihm ab.","lastmod":"2025-03-20","duration":"01:34:43","url":"/play/19069196.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MTAvNzRkNGJlZWFkNTg0OGZhMTc3ZTA1MGMzODA3YzA5ZGEuanBn.cache","vod_id":19082023,"title":"Exklusiver Leak: Geheimnisse einer Schulschönheit enthüllt! Eine Sammlung von Lehrer-Schüler-Skandalen! Die verbotene Affäre einer atemberaubenden Schulschönheit mit einem Lehrer, die verschiedene Stellungen und intensive sexuelle Aktivitäten beinhaltet.","lastmod":"2025-05-10","duration":"01:22:52","url":"/play/19082023.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmYwMWRhMzcyMzIyODBlYzU0M2E2NTgxOWJhNDI5YmEuanBn.cache","vod_id":19015285,"title":"PARATHD-3765 Eine 40-jährige Ehefrau wird durch den großen Penis des Sohnes ihres Ex-Freundes erregt und hat Sex mit ihm.","lastmod":"2025-03-19","duration":"59:54","url":"/play/19015285.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMGU4YzQ2NzJhMGYwN2FmNjYwYmY1YjliNTgyNzJhOGEuanBn.cache","vod_id":19121733,"title":"APNS-403 Eine Studentin mittleren Alters, die von Sex besessen ist, wird wiederholt von ihren männlichen Nachbarn penetriert, während sie allein zu Hause ist – Minami Fukuhara","lastmod":"2026-05-14","duration":"01:55:06","url":"/play/19121733.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MjUvMTAzMmRjNDQzOTA0ODc4NzI5MTA2YmJmNzBhYjJlYWEuanBn.cache","vod_id":19087320,"title":"PRIN-036 Doujin AV [Es ist ein Zwischenfall!] Die hinreißende Doppelfunktion einer wunderschönen Cosplayerin, die zu exzessiven Orgasmen neigt, und eines unterwürfigen, wunderschönen Mädchen-Cosplayers!","lastmod":"2025-06-24","duration":"03:09:55","url":"/play/19087320.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmEwOTE4ZjlkY2FjM2E2MjkyMjBkYTk5OWVjY2JkNWUuanBn.cache","vod_id":18991289,"title":"NGOD-208 Mein Mann und ich unternahmen eine Geschäftsreise aufs Land. Er missbrauchte seine Macht und ich konnte ihn nicht ausstehen. Er stach mich mit seinem riesigen Penis.","lastmod":"2025-03-19","duration":"02:02:18","url":"/play/18991289.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTkzZTc3MjI3MTZjNGYzYmI3ZjA1Y2RlYzVmNWRiYTkuanBn.cache","vod_id":18971958,"title":"Die besten Freundinnen massierten ihre Körper mit ätherischen Ölen und rieben ihre empfindlichen Vulven.","lastmod":"2025-03-19","duration":"45:04","url":"/play/18971958.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMmY2NTZkZTk1M2YyYTc2ODY3Yzk0YzdmODA4ZWNjNWYuanBn.cache","vod_id":19040624,"title":"Die sexy Schönheit Meihan aus der chinesischen TS-Serie und ihre Schwestern nahmen einen fetten Tycoon von beiden Seiten in die Zange, brachten sie zum Orgasmus und ejakulierten über die Gesichter ihrer Schwestern.","lastmod":"2025-03-19","duration":"08:53","url":"/play/19040624.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmRlYTBiZTk3YjJkMjBkMzBhNzI2NTBmNDA2MDYzZTMuanBn.cache","vod_id":18935576,"title":"Unter der Uniform der Flugbegleiterin, ihr lüsterner Körper und ihre obszönen Schreie...","lastmod":"2025-03-19","duration":"06:00","url":"/play/18935576.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODVjYTU0NGQ2YzcwMTU0OGEzNDFiNjRjNTQ2OGQ1YzYuanBn.cache","vod_id":18973482,"title":"[Pure Sisters] Lust auf etwas Neues? Dann probiert doch mal gemeinsam den gleichen Vibrator aus.","lastmod":"2025-03-19","duration":"12:12","url":"/play/18973482.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmZlY2E5NzcxYmVmNDI4NzEzYmYxZDNlNWNjZGEzZDAuanBn.cache","vod_id":19049522,"title":"【NicoLove】Ich habe mich selbst befriedigt, aber am Ende bin ich auf ihm gekommen!","lastmod":"2025-03-19","duration":"18:17","url":"/play/19049522.html"}]},
videoTitle: 'Auf dem Campingplatz GNS-146 hat sich ein schrecklicher Vorfall ereignet; die Schreie einer alleinreisenden Camperin hallen durch die Berge.',
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=/`;
}
};
}