[Troca de Rostos] Lee Ji-eun, com seus seios fartos, fazendo amor na academia...","lastmod":"2026-07-11","duration":"21:40","url":"/play/19166245.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzY4MTZjOWQ3MDFiN2RkYzZiYTE0YTUyNDk5YTA2MWYuanBn.cache","vod_id":19004561,"title":"Coelhinha rosa de seios fartos busca domínio online - Sênior Xu Mu","lastmod":"2025-03-23","duration":"17:43","url":"/play/19004561.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjlmOTM3ZDU4ZjBkY2YwZGY3OGNhMzc2Y2QwYzQyNTMuanBn.cache","vod_id":18929524,"title":"Uma linda loira, [Deusa Farah], está se masturbando em um sofá, lambendo um vibrador, inserindo os dedos, gemendo e ofegando. Muito sedutora, não perca!","lastmod":"2025-12-14","duration":"00:54:22","url":"/play/18929524.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzcwMjBlMzRiOTQzNDBiZGZhMzU4MmM5MzMzNTFlYTQuanBn.cache","vod_id":19001269,"title":"[Shanghai Bitch] A coleção da deusa de primeira linha [Shanghai Auntie], ordenhando, fazendo sexo e sexo oral! Um contraste impressionante!","lastmod":"2025-03-23","duration":"07:48","url":"/play/19001269.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMzk5ZmZjODZjYzE2YzY0OTdkOWMxNzM2MWJmZTg2YTIuanBn.cache","vod_id":18930964,"title":"Último encontro de técnicas voluptuosas de alta qualidade ao estilo de Dongguan [treinadoras de clube] sexo em grupo chocante, sexo sem proteção, sexo em grupo com lindas técnicas, tiroteios reais e muito mais!","lastmod":"2025-12-14","duration":"01:08:02","url":"/play/18930964.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWJiNzU0NWFiNjQ1OTVmZWU4Nzc5ZTRmYzI3ODlkYTYuanBn.cache","vod_id":18964274,"title":"[Legendas em chinês] OKK-052 Chanyota: Deusa molhada, brilhante e de traje de banho justo em traje de competição. Aprecie as cenas incríveis de uma garota loli fofa em um traje de banho de competição!","lastmod":"2025-12-14","duration":"01:32:39","url":"/play/18964274.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMzU3N2IzZmYzMjYxMTljYThmOWMwOWU5NjQwODg1ZTguanBn.cache","vod_id":19138306,"title":"Deusa de alto valor fazendo sexo no carro ao ar livre","lastmod":"2026-01-14","duration":"36:03","url":"/play/19138306.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMGJkNzMxYzU5NzgxZTYzMjU2YjlkZjJkMTk4Y2NmOWQuanBn.cache","vod_id":18950653,"title":"Uma deusa de primeira linha, exibindo seus talentos com nudez total, rabo de cavalo sexy e figura deslumbrante; ela até faz um espacate para revelar sua vulva aos seus admiradores masculinos; uma deusa da discoteca noturna com seios balançando e um bumbum eletrizante.","lastmod":"2025-12-14","duration":"01:28:42","url":"/play/18950653.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MDUvMjI4MThhOTZkY2Q4MTc4M2ZiYjg0ZDVmNjNlZWJkMDYuanBn.cache","vod_id":19050001,"title":"Uma coleção de 25 vídeos explícitos com a deusa @Wang Ruier, disponível para visualização mediante pagamento.","lastmod":"2025-09-04","duration":"01:42:24","url":"/play/19050001.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWJhNDMxNjVkZDc0Nzg0MGQwOTg5ZDgwNjY2YzM1ZjYuanBn.cache","vod_id":18960416,"title":"\"Segredos de Alta Qualidade Vazados do Drive na Nuvem\" - Mostrar o rosto é a chave! Uma deusa universitária deslumbrante, com um corpo incrível e várias selfies indecentes com um jovem rico~ A beleza te força a sofrer 3","lastmod":"2025-03-22","duration":"00:01:16","url":"/play/18960416.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTRiNmJjZTliMWM5MzQ2NGJkNTFjNDY1MDQ5MmExZTQuanBn.cache","vod_id":18931054,"title":"A belíssima e jovial deusa, \"Shanghai Juicer\" Zhang Yuqi, teve sua primeira relação sexual com o namorado. Ela tinha seios fartos, uma vulva rosada, usava meias pretas e um adorável uniforme de empregada. Eles se entregaram a uma penetração intensa e rápida sem camisinha, com Zhang Yuqi ejaculando dentro dele.","lastmod":"2025-12-14","duration":"01:26:24","url":"/play/18931054.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZWFiMDg5ZDM5NGQ5NTgyNmEyNTZmMjg5ZTEyNGI5ZGIuanBn.cache","vod_id":19147730,"title":"Deusa se liberta Anna1025","lastmod":"2026-03-11","duration":"28:16","url":"/play/19147730.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMGFjMjFmNTcyNjg4ZDNlNmUxNWViMzRhMjg4NjMzMzUuanBn.cache","vod_id":18924075,"title":"Me dá o Dick! -da_diamond_jackson_vl102213_720p_8000","lastmod":"2025-12-14","duration":"00:40:00","url":"/play/18924075.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvMjIzMjFlZjQyNjdhNmJkZmZjYWEzNjI1M2ExNmJiYjcuanBn.cache","vod_id":19064500,"title":"O charme de Ai Sayama, a mãe da namorada, sem sutiã e com seios fartos - MEYD-873","lastmod":"2025-12-14","duration":"02:26:23","url":"/play/19064500.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZWU5MWZmOGY0YTVkYjFmZmI2MWEwYTUyNGIwNWRjNzcuanBn.cache","vod_id":18962593,"title":"\"Segredos de alta qualidade vazados do armazenamento em nuvem: Mostrar o rosto é a chave!\" Uma certa aeromoça possui um nível de beleza excepcional e um corpo perfeito. Ela é uma deusa no trabalho e uma cadela submissa do chefe depois do expediente. O contraste entre beber urina, fazer sexo, ser humilhada e treinada é impressionante. (27)","lastmod":"2025-03-22","duration":"00:01:36","url":"/play/18962593.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWRlM2VlNWZiY2I0OGU1MGNkMTdjZGQwYWM5NWQxZTEuanBn.cache","vod_id":18995254,"title":"[Censurado] Mesmo num dia tempestuoso, minha cunhada insistiu em me dar aulas particulares.","lastmod":"2025-12-14","duration":"01:52:19","url":"/play/18995254.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWI4YWU3ZDY5NzRlOWE2ZWNhN2Y1MmRjZWIzMDY4MWQuanBn.cache","vod_id":18966346,"title":"EBOD-753 \"Professora, você gostaria de praticar fazer bebês comigo?\" Minha monitora de classe, uma gracinha com um busto impressionante, está noiva de mim (minha professora da turma), então ela vai me dar um \"treinamento de torta de chantilly\" depois da aula. — Yuri Fukada","lastmod":"2025-12-14","duration":"02:24:01","url":"/play/18966346.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNWY0NzQ2MDRlMDAzMTg0ZGI2Yzc1ZjA2Y2QxMTBmZDkuanBn.cache","vod_id":18931007,"title":"O streamer masculino mais incrível, um \"estrangeiro profissional\", se juntou a três deusas de primeira linha para uma orgia a quatro insana. Seus corpos maravilhosos eram incrivelmente sedutores; as deusas europeias e americanas estavam loucas para chupar o pau dele. Que tesão!","lastmod":"2025-03-22","duration":"00:45:29","url":"/play/18931007.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMjQvMDFlOGVhZWZiNWM2ZjViMmUwYThiZDkxOTNmYzdmNTguanBn.cache","vod_id":19064049,"title":"Uma deusa estonteante de seios tamanho G, de primeira linha, usando óculos de aro preto e lingerie sexy.","lastmod":"2025-12-13","duration":"01:33:14","url":"/play/19064049.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTk3Y2JiNjE5MGUzMWMwNmRiYTc5ZGZiNmVkM2NkMDkuanBn.cache","vod_id":19008452,"title":"MISM136 A deusa da vagina.","lastmod":"2025-03-24","duration":"02:28:03","url":"/play/19008452.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjA3MTQ2MjBmNWY2OWEyZTk0Mjg2YzFjMzFjMzNiZDEuanBn.cache","vod_id":18963167,"title":"\"Segredos do Disco de Nuvem do Rei da Glória\" - Mostrar o rosto é a chave! Uma aeromoça com aparência e corpo de primeira é uma deusa no avião, mas uma vadia de um sugar daddy depois do pouso~ Sexo, beber urina e todo tipo de treinamento - contraste extremo (6)","lastmod":"2025-03-22","duration":"00:01:01","url":"/play/18963167.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYTBjODliYzM5YWM4MTA3ZDY2ZTFlNjRmZjkzMTc5MTAuanBn.cache","vod_id":19156016,"title":"Xiao Bao procura uma deusa com uma aparência deslumbrante e uma figura requintada.","lastmod":"2026-05-01","duration":"32:22","url":"/play/19156016.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODczOTFjMzFhMmYxNGEyOTE3ZmNmMjVkYWRkMDM4YjYuanBn.cache","vod_id":18956132,"title":"\"Deusa Top✅Vazamento de Notícias\" Últimos Vídeos Vazados: Modelo Feminina Gostosa e Sensual da Xiuren.com, Socialite Top [Tian Bingbing], Meias Pretas, Rosto Revelado, Auto-Toque, Sedução Provocativa do Irmão Mais Velho","lastmod":"2025-03-22","duration":"00:09:10","url":"/play/18956132.html"}]},
videoTitle: 'Grande Árvore, por favor, me dê um pouco de iogurte, deusa voluptuosa.',
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=/`;
}
};
}