Ein Straßenkehrer-Experte, ein Frauenheld in urbanen Dörfern, eine charmante junge Frau, proaktiv und lüstern, die heftig in eine Frau eindringt, die oben liegt.
Pink Lover's Top-Quality Ceiling Little Lolita's First Appearance: Beautiful Face Revealed! Wearing Ladylike Attire, Doing the Most Lewd Things, Rear Entry into Breasts, Little Pink Ascends to Heaven.","lastmod":"2026-07-11","duration":"15:22","url":"/play/19152935.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjJkNDJlMzlmOTdlNTA0NjQ0NDcyYTIyYWNlOTkyYTUuanBn.cache","vod_id":19059066,"title":"Eine junge Frau mit festen Brüsten, einem knackigen Po und einer rosafarbenen Vulva entfacht nach dem Duschen ihre Lust und masturbiert aktiv für das Video; der ekstatische Vorgang ist unglaublich verführerisch!","lastmod":"2025-03-19","duration":"01:52","url":"/play/19059066.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzJjZjFhZDQ4MzY4NjU1YWM5ZmJkOGU3YWQyZTE3ZDEuanBn.cache","vod_id":18984424,"title":"Das Mädchen mit der Brille schrie während der zweiten Sexrunde so verführerisch; der Dialog war klar, witzig und obszön.","lastmod":"2025-03-19","duration":"29:42","url":"/play/18984424.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZjFkM2YxMGI4OGIxYjBmNzQ0YzExMmQ2ZTdlN2RlMGIuanBn.cache","vod_id":19062626,"title":"Eine üppig gebaute Büroangestellte ergriff die Initiative und ritt mich ohne Kondom, es war so lustvoll.","lastmod":"2025-03-19","duration":"10:02","url":"/play/19062626.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MDYvOWUyMWEzYjliZTFmMGVkNmZiNGEyM2FjNzJhYjVlM2EuanBn.cache","vod_id":19103392,"title":"5P nimmt Hostessen mit nach Hause, ihre Gesichter sind durchgehend zu sehen. 5P masturbiert, praktiziert Oralsex und hat einen großen Schwanz. Drei Schlampen werden abwechselnd von zwei Männern penetriert, ihr Stöhnen und Ächzen hört nicht auf. Verpassen Sie diese aufregende Show nicht!","lastmod":"2025-05-06","duration":"01:13:08","url":"/play/19103392.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNGIyOTUxNzIxYzMxNjliNjRkYzc2YWM3Njg0NzNkMjYuanBn.cache","vod_id":19000022,"title":"[China] Eine attraktive junge Frau namens Mi'er hat eine tolle Figur. Sie masturbiert mit einem Vibrator, den sie in ihre Vagina einführt, und benutzt sogar einen Dildo zur Klitorismassage.","lastmod":"2025-03-19","duration":"20:31","url":"/play/19000022.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjJjMGVhNWZlMWUzM2MxODRmNWJiYjJhOWQyNzhlNzMuanBn.cache","vod_id":18948913,"title":"KSBJ-251 Eine lüsterne Tante mit unstillbarer Lust verführt mich mit ihrem reifen Körper.","lastmod":"2025-03-19","duration":"02:00:03","url":"/play/18948913.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMDhkYTUxNWMyZjMwODU4MTdiZDMzYWQyOTgyNzhmYmQuanBn.cache","vod_id":18940730,"title":"Das Cosplay von Xiao Wu war umwerfend; sie ergriff sogar die Initiative und hatte intensiven Sex mit ihrem Freund, während sie leise stöhnte.","lastmod":"2025-03-19","duration":"09:51","url":"/play/18940730.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODdmZGVmZGI5MDZlMmNhNmJjNWYzZWQ5N2ZiYjBhNzYuanBn.cache","vod_id":18932919,"title":"IPZZ-014 Meine verheiratete Frau ist eigentlich eine sexbesessene Schlampe... Die Libido meiner Frau hat sich verändert und sie hat viel obszönen NTR-Sex.","lastmod":"2025-03-19","duration":"01:57:15","url":"/play/18932919.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MDEvYTcxOGRmZmIzYzNlZGRmZjJiMmMzNzNmODhhYzE0NGYuanBn.cache","vod_id":19102676,"title":"Al Sophie Marceau wurde gefesselt und penetriert...","lastmod":"2025-05-01","duration":"22:13","url":"/play/19102676.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNDRiYWY5ZjVlOTg5ZWU2ODBhZDc5YTJlMTBlYzQ4NjQuanBn.cache","vod_id":19039186,"title":"Das Trio war zusammen so lüstern, sie leckten und saugten sich gegenseitig die Muschis und genossen das Stoßen von Penissen und Schwänzen.","lastmod":"2025-03-19","duration":"04:49","url":"/play/19039186.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9ndXp3aWF5ei5jb20vMjAyNjAyMjUvZlNXT09lQzgvMS5qcGc/dD0xNzcyMDczNjE5.cache","vod_id":19140088,"title":"Eine Sammlung von echten, ehebrecherischen jungen Frauen aus angesehenen Familien, die ihre Ehemänner betrügen; diese ehebrecherischen jungen Frauen sind in der Tat die geschicktesten im Spiel.","lastmod":"2026-02-26","duration":"01:27:31","url":"/play/19140088.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYmYwNWM0NzQ1MzBjMjQ4ZjE1ZWJjZmIyNzFhNDMxNDUuanBn.cache","vod_id":19098110,"title":"JUR-166 Eine verheiratete Sekretärin hat leidenschaftlichen, schweißtreibenden und küssenden Sex im Büro des Präsidenten. Eine reife Sekretärin mit üppiger Oberweite tritt auf.","lastmod":"2025-03-31","duration":"02:04:18","url":"/play/19098110.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMTljZTY0NGI5ZDYzNjBjMmIxMDYxZGI1ZjZkNzYyOTIuanBn.cache","vod_id":19006592,"title":"FBOS-011 In einer stürmischen Nacht waren meine Chefin und ich im Büro eingeschlossen.","lastmod":"2025-03-19","duration":"02:00:34","url":"/play/19006592.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODU4MjViZjQwM2Y2NTBmNDBjMTk0Yjg5YmI5YTc1ZDUuanBn.cache","vod_id":18999251,"title":"Xiao Li, die gerade von ihrem Chef vergewaltigt wurde, ließ sich von dem jungen Mann auf dem Sofa heftig durchnehmen. Er spielte mit ihr und vergewaltigte sie in verschiedenen Stellungen, wobei er Hilfsmittel benutzte, um in ihre Vagina einzudringen. Ihre Stöhnen und obszönen Worte waren äußerst erregend.","lastmod":"2025-03-19","duration":"01:20:26","url":"/play/18999251.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MTEvZDExN2E5NzcyOWI0YjVkNjc2YTMwOTBhOThlOTUyZDIuanBn.cache","vod_id":19111998,"title":"Eine mollige Frau mit großen Gesäßbacken, die in schwarzen Strümpfen hing und in SM-Manier gefesselt war, war nach mehreren Orgasmen bereits gefühllos.","lastmod":"2025-07-11","duration":"25:47","url":"/play/19111998.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MjMvYmM1ZTU4YTA4Njk2NDkwNDE5OTZkZjM5ZjgwODRmZjMuanBn.cache","vod_id":19112914,"title":"Die blonde Göttin erlebte wiederholte Orgasmen durch ständiges Stoßen, Stimulation und anzügliches Geplänkel.","lastmod":"2025-07-23","duration":"26:56","url":"/play/19112914.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNWU1ZjJmM2FjY2FhYTFlNmQ2YzMzYTMxNWRhNTRmMzguanBn.cache","vod_id":19036999,"title":"Extrem obszöne lesbische gegenseitige Berührungen.","lastmod":"2025-03-19","duration":"10:49","url":"/play/19036999.html"}]},
videoTitle: 'Ein Straßenkehrer-Experte, ein Frauenheld in urbanen Dörfern, eine charmante junge Frau, proaktiv und lüstern, die heftig in eine Frau eindringt, die oben liegt.',
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=/`;
}
};
}