Novata na indústria de filmes adultos, uma mulher madura, sexy e mascarada! Meias pretas sensuais e uma saia justa! Autoestimulação, 69, sexo oral, pernas imobilizadas, penetração intensa, vibrador roçando sua vagina, extremamente obsceno.
Casal lésbico puro cai! Estudantes se revezam transando com elas até que elas gozem dentro de seus corpos como vasos sanitários de carne. Tenma Yui, Kashiwagi Konatsu","lastmod":"2026-07-11","duration":"","url":"/play/19245916.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MTYvNzMxOWUxZTFiNmYxOTYxOWQwZTI1YjRjYzU5ZDJmOGQuanBn.cache","vod_id":19194720,"title":"Um ano inteiro de vídeos íntimos gravados em casa de um homem infiel vazaram acidentalmente! Suas meias pretas sedutoras, suas belas pernas e seus genitais delicados ficaram totalmente expostos.","lastmod":"2025-09-15","duration":"07:04","url":"/play/19194720.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjAwZjQ5MDI4NmQ4ZDZkOGQwYjEwZGI4ZGZkZjVhNmIuanBn.cache","vod_id":19078176,"title":"[Atriz Japonesa] HNDB-147 Calendário de Gozadas com a Atriz Mais Popular, 31 Dias, 46 Gozadas Diárias, Edição 31 (21 de setembro de 2019), Atriz Ator-079","lastmod":"2025-03-29","duration":"03:59:04","url":"/play/19078176.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDM1Y2UwOWE2YjhhODBmMTQwODNmM2I0ZTNhMDZlOGYuanBn.cache","vod_id":19084478,"title":"Uma jovem de aparência inocente, usando meias pretas, sem pelos e com o rosto à mostra, exibe apaixonadamente sua vagina, revelando sua vulva em formato de borboleta de forma espetacular. Ela abre as pernas para closes de sua vulva e, durante repetidas penetrações com o auxílio de acessórios, experimenta múltiplos orgasmos com uma expressão extremamente provocante!","lastmod":"2025-03-29","duration":"00:55:45","url":"/play/19084478.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMzAwNDg2MTczY2EyNDU3MDY5NmJiYTUxZmNjODdkY2YuanBn.cache","vod_id":19216489,"title":"A carta de demissão da nova funcionária JUR-545 revelou, de forma chocante, imagens de NTR (Netorare): \"Eu treinei sua esposa para ficar com o meu corpo em apenas 3 meses.\"","lastmod":"2026-02-07","duration":"2:27:10","url":"/play/19216489.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvZWRkM2Q1YTczZDI5ZGFjZjdmYzc2N2JlN2IxZWZhYTQuanBn.cache","vod_id":19237040,"title":"Noriko Iioka, com seios e bunda grandes, babando de tesão, uma dona de casa safada implorando por uma boa foda.","lastmod":"2026-05-24","duration":"2:04:56","url":"/play/19237040.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDg0MDE1OWQ2OGMyMTU5YTM3OWFkMmVjZTgyYjM2NGUuanBn.cache","vod_id":19228439,"title":"Nana, com seus seios naturais tamanho E! Essa gostosona de peitões enormes é fodida sem parar, sua xoxota jorrando e chegando ao clímax.","lastmod":"2026-04-10","duration":"0:35:19","url":"/play/19228439.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MTEvNmRlOWE4MmJmZWE1M2ZjMmY2YmM1OGQzNDFmYjA0YzYuanBn.cache","vod_id":19247075,"title":"Enai Moeka, com suas mangas fofas e pernas lindas, é brutalmente fodida e ejaculada! Uma jovem submissa em cosplay, completamente vestida, é submetida a uma relação sexual intensa.","lastmod":"2026-07-17","duration":"","url":"/play/19247075.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZmZiY2Q3NWI2N2Q2MWE4NTdlOTg0N2Q3NTVmMmM4NDQuanBn.cache","vod_id":19223097,"title":"Miracan, uma beldade voluptuosa em uma ilha deserta, é brutalmente fodida e goza dentro dela enquanto geme lascivamente.","lastmod":"2026-03-21","duration":"0:08:26","url":"/play/19223097.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZTBkMTdlNTMyZTZjYzg4NzYzMWFhNjE0Yzk5OGRmODguanBn.cache","vod_id":19112734,"title":"[Modelo de carro de primeira linha] Eu poderia brincar com essas pernas lindas por um ano, essa deusa de saia justa está sendo fodida.","lastmod":"2025-03-29","duration":"","url":"/play/19112734.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYWU3ZmIzYTU0NjE2OTQ5N2U0OTI2MjJkNzc2NmRmNWIuanBn.cache","vod_id":19049099,"title":"Uma jovem e bela mulher com um corpo escultural se exibe sedutoramente na cama, com os seios e a vagina à mostra. Ela usa meias pretas e tem uma perna exposta. Primeiro, ela insere os dedos e, em seguida, usa um vibrador para estimular o clitóris até que ele fique lubrificado. Ela se masturba enquanto é penetrada, proferindo constantemente palavras sugestivas.","lastmod":"2025-03-28","duration":"","url":"/play/19049099.html"}]},
videoTitle: 'Novata na indústria de filmes adultos, uma mulher madura, sexy e mascarada! Meias pretas sensuais e uma saia justa! Autoestimulação, 69, sexo oral, pernas imobilizadas, penetração intensa, vibrador roçando sua vagina, extremamente obsceno.',
language: 'pt',
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 copiado!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Link copiado!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Link copiado!');
}
}
},
// 切换布局
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=/`;
}
};
}