Private Shot Leaked: Hairless Steamed Bun Hole Girlfriend in Uniform Sex Oral Sex Private Shot Leaked_Top-Quality Lolita Can Be Fucked at Will","lastmod":"2026-07-11","duration":"0:51:40","url":"/play/19266989.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYjUyNDUxZDZiMjEwNGU3MDg0ZGYwNWI3M2EyMmIzNmEuanBn.cache","vod_id":19248403,"title":"MIDV-543-C Der reine und unschuldige Engel wurde zum ersten Mal mit Samen gefüllt und hatte ein sanftes Lächeln.","lastmod":"2026-03-10","duration":"2:30:18","url":"/play/19248403.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MjQvNDViYzgxY2Y4YjNlZWYwMDI4ZTFiOTRhYjdhNDVjMDkuanBn.cache","vod_id":19204567,"title":"FSDSS702s erste Nacht mit seiner ersten Liebe...und sein erstes Mal...erregt von ihren entblößten, großen Brüsten.","lastmod":"2025-05-24","duration":"2:05:32","url":"/play/19204567.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNmU1N2I2YzQyNTY1OGJhZDUyYWEwZmZmNDFiNzQ4MWYuanBn.cache","vod_id":19134594,"title":"BLD-006-C hatte sexuelle Beziehungen mit einem unschuldigen Mädchen.","lastmod":"2025-03-29","duration":"2:15:45","url":"/play/19134594.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNTYxNjBlYmI5NGMyZTMxY2MxZjk0Yzg0MTIxZDQ2OWIuanBn.cache","vod_id":19167456,"title":"VSR546 Meine Freundin, Yui Hatano, macht aus ihrem Wunsch, eine Affäre zu haben und von einem anderen Mann penetriert zu werden, kein Geheimnis.","lastmod":"2025-03-30","duration":"1:56:54","url":"/play/19167456.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MTAvOWRkYzFmYTczZTY1YjBlY2E3MGVjZDVkZDI1MjEzNjcuanBn.cache","vod_id":19262828,"title":"Ein Highschool-Schüler verriet Details über seine Freundin, die gerade ihren Highschool-Abschluss gemacht hatte. Sie wollte nicht nur täglich mit ihm schlafen, sondern schlief auch gerne auf seinem Penis.","lastmod":"2026-06-09","duration":"0:29:42","url":"/play/19262828.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDc4ZDE4NDViZThiMDhiNGVkMzM0ZTcxZjMxNWMyNmYuanBn.cache","vod_id":19109072,"title":"Eine obszöne Party während einer Firmenreise; eine Freundin, die die ganze Nacht von ihren lüsternen Kollegen missbraucht wird.","lastmod":"2025-03-29","duration":"1:59:25","url":"/play/19109072.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYWFhYzQzZDk4MDY1NjQ3NWNlY2E4MTY5YzhlNzYyMmMuanBn.cache","vod_id":19151432,"title":"Hierbei handelt es sich um ein geheimes, illegales Sexhandelsunternehmen, das ausschließlich in diesem Gebiet operiert und in dem HYPER Partners unbegrenzte Ejakulation anbietet.","lastmod":"2025-03-30","duration":"2:33:36","url":"/play/19151432.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTY0MTQzM2E2NDEyZmZhMWIxMDBhM2EwNzM2ZDY3NTkuanBn.cache","vod_id":19184819,"title":"[Chinesische] Salonangestellte zwingt verheiratete Frau, die sich nicht wehren kann, zum Sex, um Schulden zu begleichen.","lastmod":"2025-03-30","duration":"1:57:50","url":"/play/19184819.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvY2FkN2M3MWRkMmYwYjhmMzhhODViMzE3MzUwNjFjOGYuanBn.cache","vod_id":19064913,"title":"FSDSS-319 Ich, die Klassenlehrerin, nutzte den Reiz meiner unschuldigen, lüsternen Schülerin aus und begann im Hotelzimmer mit den Hüften zu wackeln. – Suzume","lastmod":"2025-03-29","duration":"2:01:52","url":"/play/19064913.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MjcvNTdhODdjYzg3YmQyMWI0ODAzOWRlNzdmMzQwODU1NzcuanBn.cache","vod_id":19265538,"title":"Eine Sammlung von Sexvideos, die von einem Studentenpaar aus Jilin aufgenommen wurden, ist durchgesickert. Darin ist zu sehen, dass die Freundin gerne Penisse isst und Sperma schluckt; die Szene war äußerst obszön.","lastmod":"2026-06-26","duration":"0:02:35","url":"/play/19265538.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNWM5OGUxM2Y4ZTI5NDUzNjQ3YjQ3NGRkM2YwZjk3Y2IuanBn.cache","vod_id":19249373,"title":"Sie verführt Männer mit ihrem üppigen Hintern, ihre H-Körbchen umschließen einen erigierten Penis – eine lüsterne, wollüstige Frau, die ungeschützten Sex genießt. CEAD-725","lastmod":"2026-03-16","duration":"2:16:51","url":"/play/19249373.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOGE5ZmVhMzAzMGJhMGM0YmY4MGE4ZTA5YWI5OTYzYTIuanBn.cache","vod_id":19123364,"title":"STARS-894 Das perverse Gesicht meiner Freundin (Nur ich kenne es). Eine heimliche Büroromanze mit K-san, der berühmten Schönheit der Firma. Unerreichbar.","lastmod":"2025-03-29","duration":"2:05:13","url":"/play/19123364.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNWY2NWZkOGY5YTNkM2VhZDU2ZDRkYjkzOTZlYmZkYzkuanBn.cache","vod_id":19109063,"title":"Sie ist eine wunderschöne Lehrerin, meine Klassenlehrerin, Clubberaterin und meine Geliebte – und ich habe von morgens bis abends verbotene, leidenschaftliche Begegnungen mit meiner älteren Freundin.","lastmod":"2025-03-29","duration":"1:55:41","url":"/play/19109063.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDE4MWE2NzFkOTU3NzEyMmQ3NzY1NmU2OWExYmYxMmYuanBn.cache","vod_id":19257276,"title":"Nach einem Monat Abstinenz wurde er so stark stimuliert, dass er die Ejakulation kontrollieren konnte und 24 Stunden lang ununterbrochene Orgasmen und Ejakulationen mit seiner sexuell frustrierten Freundin erlebte. (Sato Nonoka CJOD-446-C)","lastmod":"2026-05-06","duration":"2:52:08","url":"/play/19257276.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZGFiY2E3ZWU0ZWE0NzU5NTM3Zjg2OWI4MTIxNDVkOGYuanBn.cache","vod_id":19152471,"title":"Inzest! Der Körper meiner Mutter war noch sehr aktiv, deshalb bekam ich eine Erektion. Als sie es bemerkte, ließ sie mich sanft eindringen, damit mein Vater nichts davon mitbekam.","lastmod":"2025-03-30","duration":"2:54:59","url":"/play/19152471.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNGUxM2IxYTc5N2Y5YTViM2U5NzVmYmY2NGI0OGY1M2MuanBn.cache","vod_id":19127714,"title":"Ich hatte leidenschaftlichen Sex mit meiner geilen Freundin zu Hause und machte Selfies! Noch nicht genug, also holte ich mir einen Vibrator, um den Spaß fortzusetzen!","lastmod":"2025-03-29","duration":"0:55:04","url":"/play/19127714.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZjI5MzUzOThlNWE2MjZiNjA1OGJlNWM3NjMxYjQ5YTMuanBn.cache","vod_id":19037487,"title":"Keratin, Hausfrau, Tiffany Fox, verführt ihren jungen Nachbarn","lastmod":"2025-03-28","duration":"0:31:46","url":"/play/19037487.html"}]},
videoTitle: 'Eine unschuldige Freundin wurde von ihrem Vater in ein illegales Bordell gelockt, um seine Schulden zu begleichen.',
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=/`;
}
};
}