Uma vadia de primeira trai o marido com um jovem enquanto faz sexo ao telefone.","lastmod":"2026-07-11","duration":"28:48","url":"/play/19166719.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMTFiZjBmNWE3MjIyNmJlNzk3ZWZmODFhMTAxNGNmOTcuanBn.cache","vod_id":19160549,"title":"Hoi Hoi Cute #10 Amador Hoi Hoi Z, filmagem solo, uma noite, aplicativo de namoro, Amador Hoi Hoi - Tribo da Ilusão","lastmod":"2026-05-29","duration":"05:20:16","url":"/play/19160549.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTMzYjUwNjk1MDI1NTUxYmM1Njg0MTFjZmY4OTZjY2QuanBn.cache","vod_id":18987580,"title":"Caribbeancom 101123-001 Álbum de Fotos de Gatos - Wakana Futaba","lastmod":"2025-12-14","duration":"00:20:34","url":"/play/18987580.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvOTBmN2M3NGI3Yzc0OTE5Y2UyYThjZWQxNTMwZDBhNDkuanBn.cache","vod_id":19156676,"title":"Um homem de cabelo curto paga um preço alto por uma beldade de meio período de alta qualidade, com tatuagens que cobrem todo o braço e fotos em close dela abrindo as pernas.","lastmod":"2026-05-05","duration":"34:46","url":"/play/19156676.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTFmMmVjMDJjMjllM2VkYmYxY2M5MjdkNThhMTM5ZjUuanBn.cache","vod_id":18927384,"title":"FC2PPV-1267369 [Filmagem Pessoal] Nível divino! Garota de 19 anos que trabalha meio período! E sexo intenso! Ejaculação final.","lastmod":"2025-12-14","duration":"00:19:15","url":"/play/18927384.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjIxYzIxMWU0Mjk5YTI2NmJlMmE0Y2IxMjI4OWVkNTEuanBn.cache","vod_id":18962075,"title":"Sensação de dormência e formigamento~ Modelo de bunda de Guangzhou, 95 anos~ Carro esportivo, adicione no WeChat~ Encontro direto com Rocket~ Sexo e banho~ Inserção de pênis~ Meias e salto alto~ Fetiche por pés~ Irmão, venha me foder!","lastmod":"2025-03-22","duration":"00:55:04","url":"/play/18962075.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYjMzNGM5YjNhMWQ1MGJiMzQ3NGYwM2FmOWU0YWMyMDYuanBn.cache","vod_id":19148937,"title":"O diálogo entre o homem que estuprou a dona de uma casa de massagens legítima é extremamente estimulante.","lastmod":"2026-03-18","duration":"26:31","url":"/play/19148937.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZWY4Yjg2M2Y4MDM4ZTE3YjFhOWEwZTE1NzBkNTI0N2MuanBn.cache","vod_id":19011134,"title":"HODV21431 Quer experimentar o máximo prazer em masturbação e sexo...? Inclui calcinha da Kirishima Sakura e uma foto autografada.","lastmod":"2025-03-24","duration":"02:20:06","url":"/play/19011134.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOGNkNGY0YmE4NGYzOGI5ZjgxZjJjNmYxNjBhZDZjYWUuanBn.cache","vod_id":18963560,"title":"\"Coleção Completa Vazada de Primeira Linha\" - Mostrar o rosto é a chave! Alvo de banheiro de carne humana: matar 100 pessoas Twitter alta qualidade peito grande contraste vadia [Juice Summer] filmagem privada vários sexos Ziwei (25)","lastmod":"2025-12-14","duration":"00:02:15","url":"/play/18963560.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYmNjMDJiYWY4Y2M3MGU3YTFkZGJlODNmN2I3NTUwYzkuanBn.cache","vod_id":19141367,"title":"Mulheres voluptuosas e sedentas se revezam em sexo apaixonado com seus admiradores.","lastmod":"2026-02-03","duration":"56:06","url":"/play/19141367.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzdmMTJiMGRlZTgwM2M3OGQyMWY3Zjg0MDlmNGU2NWMuanBn.cache","vod_id":18946157,"title":"Garota anime loli fofa, 'Pequena Ancestral', fazendo cosplay de raposa, transando com seu namorado bem dotado até gritar 'Papai, eu não aguento mais', sexo anal, dupla penetração, ejaculação facial, engolindo sêmen e bebendo urina.","lastmod":"2025-12-14","duration":"01:14:42","url":"/play/18946157.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMjE5N2I1MzU1MWI1YmRjNGQxY2U0ZTVmMzg2ZTJlNzAuanBn.cache","vod_id":19137210,"title":"Wei Ge, o \"Rei dos Acidentes Fatais\", flerta com garotas em uma casa de massagem nos pés.","lastmod":"2026-01-07","duration":"01:19:07","url":"/play/19137210.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTVkY2RmZDczMTBiNWNiNmM0YzY4ODA3OTgwOWNlOWIuanBn.cache","vod_id":18991100,"title":"[Exclusivo] Mini-Yang Mi de primeira linha - Yang Mi, modelo CJ de alto valor, nascida em 1996!","lastmod":"2025-03-23","duration":"05:49","url":"/play/18991100.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMjEvODMzZjk3NjRmNjk2MzcwNGMxMGMzNTZiMDBmMmE5YWIuanBn.cache","vod_id":19058817,"title":"Jovem garota, \"Yuka\", faz sua estreia em filmes adultos. Atriz NH, ator desconhecido, TCD294.","lastmod":"2025-10-20","duration":"02:29:38","url":"/play/19058817.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTZkZjRjZDAxMjNjZjU0NjJjYjNhY2E4YmQ1Njc4ZDkuanBn.cache","vod_id":18974077,"title":"Tutoriais de posições sexuais, transmissão ao vivo de sexo apaixonado de casais ao ar livre, mulher safada mostrando o rosto o tempo todo para seus namorados, sexo oral com um pau grande na floresta, várias posições de penetração e foda, suas expressões são tão safadas.","lastmod":"2025-12-14","duration":"00:40:01","url":"/play/18974077.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmY5MThiYTkyM2ZhN2NlMjJjODgzMGNlNWMwYTQwZGUuanBn.cache","vod_id":18933251,"title":"ABP-237 Torre do Bordel Sensorial Serviço Completo Edição Especial de 3 Horas - Airi Suzumura","lastmod":"2025-12-14","duration":"03:00:44","url":"/play/18933251.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTU1MzA2ZThlM2Q5YzYyMjFlZDhhNGJmMmE0ZGM0ZGYuanBn.cache","vod_id":18985677,"title":"CESD-781 Eu estava preparado para ser rejeitado, então filmei um grupo de garotas lésbicas experimentando isso pela primeira vez, sendo que apenas uma delas tinha experiência lésbica... O resultado! Cenas lésbicas muito interessantes.","lastmod":"2025-03-23","duration":"02:43:56","url":"/play/18985677.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjk0YjY4ZTE0YmFhNjViY2VkZjI3NTk2M2JhMWMzOGYuanBn.cache","vod_id":18963950,"title":"Jovem e enérgico, ele sozinho atendeu duas garotas, uma de cada vez, e os ângulos da câmera eram muito profissionais.","lastmod":"2025-12-14","duration":"00:53:24","url":"/play/18963950.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjgwNjMzNGVmYmUzMWUwOTcxMWRkNjdjMzk0NDJiODEuanBn.cache","vod_id":18968897,"title":"A cunhada leva você a uma festa chique, onde uma jovem sexy com tatuagens faz sexo apaixonadamente com um cara, deixando-o penetrá-la por trás e estocar enquanto ela geme e suspira, tudo isso interagindo com a câmera – excitante e estimulante para os fãs masculinos.","lastmod":"2025-03-23","duration":"01:10:43","url":"/play/18968897.html"}]},
videoTitle: 'Sessão fotográfica com modelo em um clube renomado, onde uma massagista é apresentada a ele para uma sessão de sexo completa - Parte 2',
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=/`;
}
};
}