Uma mulher casada, professora universitária em Guiyang, foi flagrada tendo um caso. Ela foi a um hotel com seu amante, mas seu marido ligou para verificar se estava tudo bem. Sua vagina estava muito molhada e ela foi fodida ruidosamente.Uma mulher casada, professora universitária em Guiyang, foi flagrada tendo um caso.","lastmod":"2026-07-11","duration":"","url":"/play/19267835.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMTQyZjM4ZTRiM2M0MGNlZDc4Yjg0N2M3N2MwNTE3NzYuanBn.cache","vod_id":19259246,"title":"A influenciadora do TikTok Tianjiang Zhiwen, com 2,8 milhões de seguidores, foi vista em um ensaio fotográfico nua onde aparece exibindo os seios. Ela é descrita como tendo uma beleza estonteante e um charme puro de garota comum, como uma recém-formada.","lastmod":"2026-05-17","duration":"0:01:31","url":"/play/19259246.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzYzZmM5NmIxOGVmZjNhNzlkNGQ4MzEwY2U4NGFiYjguanBn.cache","vod_id":19079223,"title":"Uma jovem de Sichuan chamada Li X, que um \"Deus de 91\" conheceu durante uma viagem de negócios a Guangzhou, trabalhava como recepcionista de hotel. Ela mostrou o rosto e eles fizeram sexo em um quarto de hotel.","lastmod":"2025-03-29","duration":"0:36:58","url":"/play/19079223.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTZmMWU0ZjI2NTMyMjE5NWRmOTFjYWY1YmQyYjAzMmUuanBn.cache","vod_id":19078208,"title":"Vazaram as selfies de um homem rico em seu quarto de hotel com uma modelo de carros, mostrando a modelo sensual sendo penetrada violentamente.","lastmod":"2025-03-29","duration":"0:20:43","url":"/play/19078208.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDI4YzQ4NTFkOWEyNTBlNTY5N2Q4ZDUwODM1YjFhZjkuanBn.cache","vod_id":19151590,"title":"Seios bonitos, nádegas firmes, mulher madura gentil e atenciosa, sexo oral","lastmod":"2025-03-30","duration":"0:18:16","url":"/play/19151590.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNDY2MjgzYTIxNjU0NTRjODVkMGQ0MWE3ZmFhNzQxNDguanBn.cache","vod_id":19057741,"title":"Deusa de Sete Cores \"Um Pouco de Doçura\" - Deusa de Alto Valor com Meias Pretas Explosivas, Extremamente Sedutora, Constantemente Falando Palavras Obscenas","lastmod":"2025-03-29","duration":"1:45:26","url":"/play/19057741.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvN2QxNzBmYmI5N2VkMWY1YTIwZTQ4ZWFiZTkzZDdkZWIuanBn.cache","vod_id":19102330,"title":"#Blade_Deusa de primeira linha, suga seu namorado até a última gota, sexo e ejaculação dentro dele","lastmod":"2025-03-29","duration":"1:28:58","url":"/play/19102330.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDk3Y2Y1N2UyMmQ0MzQ5MjU2ZGNiMDViMDYyYWViZGQuanBn.cache","vod_id":19122084,"title":"De pé atrás dela, ele a penetrou, fazendo-a gemer e gritar: \"Ai meu Deus, marido, você é tão grande!\" O diálogo era incrivelmente obsceno.","lastmod":"2025-03-29","duration":"0:15:21","url":"/play/19122084.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvN2QyYzIwMzM1NjZhMzBlZGJiMTk5NjhiOWQ4ZDU2NzAuanBn.cache","vod_id":19056685,"title":"[Exploração Floral de Wenxuan] (Cena 3) Convidando sua melhor amiga para um ménage à trois, a nova deusa timidamente quer apagar as luzes, mas a perfeita sintonia entre elas leva a um sexo apaixonado, com suas nádegas torneadas e belos seios oferecendo um sabor único.","lastmod":"2025-03-29","duration":"1:11:53","url":"/play/19056685.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNmU1ZDk4OGI2ZTVhMWE5NmQwZjE3ZTQ3ZWE0MjVkNWQuanBn.cache","vod_id":19137597,"title":"O striptease foi incrivelmente sedutor; a transmissão ao vivo mostrou eles fazendo sexo, começando com um brinquedo sexual!","lastmod":"2025-03-29","duration":"0:35:36","url":"/play/19137597.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMmI1MDI3MjhkMGQwYWE2OWI3OGE0NmU2NTRiMGRkMGUuanBn.cache","vod_id":19055858,"title":"Jovem e linda garota, nascida em 1998, uma irmãzinha sexy, 0404, que faz muitos shows de masturbação. Bonita e com um corpo escultural, sua masturbação e penetração são muito tentadoras.","lastmod":"2025-03-29","duration":"0:25:02","url":"/play/19055858.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjk2ZmJkYTNkMTI1ZDc1MWQ3ODgxNmZlZGQyOWFiOGQuanBn.cache","vod_id":19135725,"title":"Uma jovem inexperiente estava tendo sua vagina estimulada e depois fazendo sexo com seu namorado. Suas pernas estavam amarradas a uma cadeira, e ela estava sendo violentamente penetrada enquanto usava um vibrador.","lastmod":"2025-03-29","duration":"0:49:22","url":"/play/19135725.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYTVkODkwOGMzYjI1MTM3YjJjMmQwYWQ1NDU5NzY4ZTQuanBn.cache","vod_id":19105165,"title":"Uma beldade sensual atinge o clímax com paixão e ejacula.","lastmod":"2025-03-29","duration":"0:33:58","url":"/play/19105165.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODhlNzNlNjNjMDQxYTFkY2YxODcwYzU4ZWYxMjViNWUuanBn.cache","vod_id":19106245,"title":"Nan Qiao de alta qualidade, modelo de alta qualidade na posição de montaria para sexo 2","lastmod":"2025-03-29","duration":"0:08:44","url":"/play/19106245.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvY2ZmNGY0YTYxODdmYzE3NzI4YTY4MTY5YmEwNGQ2MDEuanBn.cache","vod_id":19062062,"title":"Uma streamer famosa exibe sua vagina rosada e nádegas empinadas enquanto se masturba! Ela mostra seus lindos seios e sua vagina rosada, com o líquido escorrendo livremente!","lastmod":"2025-03-29","duration":"0:32:10","url":"/play/19062062.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MjYvZjI2MzEzMjRlNjhhZGE4YWZiMjQ0ODI0ZjEwZDcwZWYuanBn.cache","vod_id":19204744,"title":"A câmera de segurança da casa foi invadida. Um homem de meia-idade, que me parecia familiar, estava fazendo sexo com sua esposa, de pele clara e seios fartos, na posição missionária. A esposa era muito cooperativa e provavelmente era a esposa legítima.","lastmod":"2025-05-26","duration":"0:06:07","url":"/play/19204744.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMzc3M2VlNTIxMGZiOTM3NzZmNmFiMGIxZDdhYzFhMTEuanBn.cache","vod_id":19099765,"title":"A instrutora de fitness Xixi faz um show erótico com os alunos da sua academia.","lastmod":"2025-03-29","duration":"1:19:19","url":"/play/19099765.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MjIvNjU0ZjRmZjU0OTgxMWQ1ZTBkMjE1YTRkMzc0MGRhM2IuanBn.cache","vod_id":19264770,"title":"Fotos íntimas vazadas mostram Eileen, uma mulher madura de pele clara, fazendo sexo com seu namorado peludo. As fotos também incluem imagens dela de uniforme escolar, com sua vulva rosada sendo penetrada.","lastmod":"2026-06-21","duration":"0:24:36","url":"/play/19264770.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MTcvZjU1YzIzMjY3Mjk0YTc3NGFjMjk4MjgzYzE0YWQ0NjIuanBn.cache","vod_id":19263921,"title":"Uma mulher esbelta de óculos contrasta fortemente com uma mulher madura e sensual em uma sessão de fotos privada, envolvendo-se em assédio sexual e gemidos.","lastmod":"2026-06-16","duration":"0:13:02","url":"/play/19263921.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMGUyNGMxZmJiYzc3MjA1MWFhNDc5ZTIzN2M4NjNiNmYuanBn.cache","vod_id":19029298,"title":"A melhor aluna do príncipe herdeiro, uma garota de saia justa, troca de roupa e veste o uniforme para fazer sexo.","lastmod":"2025-03-28","duration":"1:01:31","url":"/play/19029298.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZTljYmU4M2RjYzJmMDEyYmMxMzdhZTk2MWFkOTMxZWIuanBn.cache","vod_id":19172826,"title":"#Diao Chan deseja a perspectiva em primeira pessoa do dragão, sexo e ejaculação.","lastmod":"2025-03-30","duration":"0:48:43","url":"/play/19172826.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYTgxOTc1YmRiYTcxYjdmMDJhMGRhMWZjY2QwYTMxODguanBn.cache","vod_id":19136413,"title":"Uma silhueta esbelta, aparência jovial, submissão e um corpo voluptuoso – é exatamente isso que um corpo jovem precisa!","lastmod":"2025-03-29","duration":"0:35:57","url":"/play/19136413.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZjBkYWY2MTA0YWNjY2FhNmE5YWFmNTczYzUxYjdhMTkuanBn.cache","vod_id":19132598,"title":"02 Lolita cena de sexo a três em ambiente interno 1, fetiche de uniforme, sexo oral, fetiche de pés, sendo fodida apaixonadamente pelo cara e gemendo","lastmod":"2025-03-29","duration":"1:02:43","url":"/play/19132598.html"}]},
videoTitle: 'Uma linda e alta modelo de carros fez sexo com o namorado, que a montou por trás...',
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=/`;
}
};
}