NAAC-054 Melhor Nudez - Shinkawa Sora - CD2","lastmod":"2026-07-11","duration":"02:12:40","url":"/play/19129553.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTZhYmE2ZmIzNjgxZTgzYmI5YTJjM2JkZTdjM2U1ZWYuanBn.cache","vod_id":18942700,"title":"JUL-077 Desbloqueado: Bailarina ativa e dona de casa recebe 3 jatos de esperma em um software.","lastmod":"2025-03-19","duration":"01:59:22","url":"/play/18942700.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTgyMzVmNWJmMDYxMTJjYTg0ZjA1ODhlZDgzYzI2MzcuanBn.cache","vod_id":18958634,"title":"Corpo nu sob sobretudo preto","lastmod":"2025-03-19","duration":"28:11","url":"/play/18958634.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTUvNjYyMTkwMDQwNzA2NTgxMmIyNTBiNGQxZmJlOWM3NzMuanBn.cache","vod_id":19108412,"title":"UBUG-004 Documentário sobre a primeira experiência embaraçosa de uma professora de jardim de infância com seios tamanho H com squirting – Karin (20 anos)","lastmod":"2025-12-15","duration":"02:08:39","url":"/play/19108412.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDE3ZDVhMWIzM2MyNGU4NmMxYjNkZjg4OWMwMmZkN2MuanBn.cache","vod_id":18941286,"title":"Ele foi estuprado por uma professora na biblioteca.","lastmod":"2025-03-19","duration":"02:00","url":"/play/18941286.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNWFiY2MwMjdkMzQ4OGM1OWEyMTRkYTk4OTU3ZmRlYTUuanBn.cache","vod_id":19067092,"title":"[Comentário AV] Suor excita mulheres, professor faz pênis ejacular.","lastmod":"2025-03-20","duration":"15:21","url":"/play/19067092.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTUvNWRkOWMwM2NkN2Q4YjQ1Y2QyN2JlMTg0YzRjMmVhNzEuanBn.cache","vod_id":19109283,"title":"Reiko Kobayakawa - BID-037 Corpo Perfeito Vida Nua Reiko Kobayakawa Kanade Tomoyo Risa Kasumi Ruka Ichinose - cd3","lastmod":"2025-12-22","duration":"43:37","url":"/play/19109283.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMGZjOWUzNDMwMDBjOThhZDE2ZGI3NTM5ZWEwOWU5OWYuanBn.cache","vod_id":19063394,"title":"JUTA-156 é o melhor!! O primeiro documentário AV com nudez de uma esposa de 30 anos.","lastmod":"2025-03-19","duration":"01:52:04","url":"/play/19063394.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDM4NDcxNjdhZTI5YWE3Yjk0YjBiNzk4MWRjMTgxNWIuanBn.cache","vod_id":19014958,"title":"ALDN-230 Madrasta Nua","lastmod":"2025-03-19","duration":"01:58:29","url":"/play/19014958.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOGIxNTJjZDU1ODUzZjJhYzkwYmZkMzY0ZGNiYWRiZDMuanBn.cache","vod_id":19033921,"title":"SDAB-246 “Quero passar mais tempo com professores que são como pais para mim…” Passo duas horas com meus alunos todos os dias depois da aula, aproveitando um tempo juntos, meio flertador.","lastmod":"2025-03-19","duration":"01:52:23","url":"/play/19033921.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MTcvMjNmNWRhNmQzOTBhYzlkNjVjYTIxYjUyNTY0OWU3ZGYuanBn.cache","vod_id":19086589,"title":"A explicação da torta de frutas esclarece que o suor excita as mulheres, e a professora faz 8 pessoas ejacularem.","lastmod":"2025-06-17","duration":"15:21","url":"/play/19086589.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDM5NWU2NDI3ZGNkYmE2ZWZkMTYzOWRhZDUyYzdjYjYuanBn.cache","vod_id":19071310,"title":"MOOR-031 A professora de saúde Hibiki faz sexo com um homem.","lastmod":"2025-03-20","duration":"02:02:57","url":"/play/19071310.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MjMvZTZiZDU4YTU5NWFlMTA5YzViNDAxY2QyMDZiYjRiY2UuanBn.cache","vod_id":19094746,"title":"#2 Estúdio de modelo nua: Pintor apalpa e provoca sua vagina delicada, penetrando profunda e superficialmente, sem camisinha, estocando e ejaculando dentro dela.","lastmod":"2025-08-22","duration":"08:57","url":"/play/19094746.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTE4NjVmMTM0MjdkZDZmOTNhMDQ3MzVkZjRlOTE0OGYuanBn.cache","vod_id":19072578,"title":"ROYD-217 Faça o que a professora diz (coração) Pernas lindas que conquistam os corações e mentes de nossos alunos.","lastmod":"2025-03-20","duration":"03:05:34","url":"/play/19072578.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MjUvM2Y3ODNiZTkzOWMxZDM1MThhNjg0MzI2NWMzOGNlMTYuanBn.cache","vod_id":19098747,"title":"FC2-PPV-4504330-1 Uma joia deslumbrante descoberta no campo. O corpo nu, belo e delicado de uma jovem de 20 anos, com muito espaço para crescer — dê uma olhada!","lastmod":"2025-09-24","duration":"01:03:42","url":"/play/19098747.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmU4NTM2MTA2NjU0YTM5ZTcwYmZmZjM5ZjZiOTFlZTkuanBn.cache","vod_id":18957923,"title":"Uma bela secretária tira fotos nua e realiza uma dança sedutora para seduzir seu chefe enquanto toma banho; em seguida, ela é violentamente penetrada em um hotel.","lastmod":"2025-03-19","duration":"14:26","url":"/play/18957923.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjNlYWI4NWU3MGI2MjE4MDAyNTg5MTZkZGU5YTlmODYuanBn.cache","vod_id":19066634,"title":"Miyako Tsubaki - SHKD-985 A professora recém-casada Tamiya é forçada a se tornar o brinquedo sexual do aluno mais problemático da escola.","lastmod":"2025-03-20","duration":"01:57:53","url":"/play/19066634.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjZkODliNjQ5MDE1MjM1MmRhNjNlY2RlYjU3YzE4YTguanBn.cache","vod_id":19026216,"title":"-zipai- [Encontro] Professora de dança de cintura fina e bunda linda. Suas nádegas estão cobertas de palavrões, e ela adora ser fodida.","lastmod":"2025-03-19","duration":"27:13","url":"/play/19026216.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZWM3MWExN2UxZjUwOTE5Y2IwMzMwM2YyY2E1NmY2NTkuanBn.cache","vod_id":19050646,"title":"Uma professora de alto nível foi amarrada e disciplinada em um hotel, e então seu aluno a penetrou por trás, revelando sua buceta solitária e safada!","lastmod":"2025-03-19","duration":"49:55","url":"/play/19050646.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MTIvOWZmMGZlMDc0ZTgzYjdmMzRkYThiYWQ5NzRiNzlkZDIuanBn.cache","vod_id":19093308,"title":"Uma professora de inglês voluptuosa em Xangai foi mantida em cativeiro por um homem rico e brutalmente estuprada, gemendo de prazer durante o orgasmo.","lastmod":"2025-08-11","duration":"17:15","url":"/play/19093308.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzBjNGJiNmU1NGFiMTM3ZjQ3YTg0Y2ZhMWJiODYxZWQuanBn.cache","vod_id":18978862,"title":"[Sinopse] A história de uma jovem e bela celebridade da internet gira em torno de um professor que visita sua casa enquanto seus pais estão ausentes, e o diálogo íntimo entre eles é bastante excitante.","lastmod":"2025-03-19","duration":"17:58","url":"/play/18978862.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTFiMTEzMjMwY2Y2ZDRmOWM4MDE2NWZlNjQzYzZiMmUuanBn.cache","vod_id":18970926,"title":"DVRT-040 Professora de educação infantil super fofa!! Ainda sou virgem, você pode me ajudar a me masturbar?","lastmod":"2025-03-19","duration":"02:47:33","url":"/play/18970926.html"}]},
videoTitle: 'HDKA-290-C Professora de Ballet Nua',
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=/`;
}
};
}