CHCH-031 Uma dona de casa voluptuosa e amadora, com seios impressionantes, que não fazia sexo há 20 anos, finalmente se entrega ao prazer após muitos anos. Misato (43 anos, tamanho K)
Bumbum Grande, Cheio e Rechonchudo♪ Hoshino Natsuki, Hoshino Natsuki MARRION","lastmod":"2026-07-11","duration":"02:37:31","url":"/play/19164922.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjNkMDYwM2M1MDA4YjA4MDhlNjBlNWI3NTQwYWNhYTMuanBn.cache","vod_id":18967860,"title":"KTKC-157 ●Durante o ensino médio, suas colegas causaram alvoroço nas redes sociais, zombando dela como uma \"banheiro de peitos\". Ayako, uma garota comum com seios tamanho K da infeliz era Reiwa, faz sua segunda estreia.","lastmod":"2025-12-14","duration":"02:07:50","url":"/play/18967860.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNmVkMDUzNzBjMzNjN2ExMTUzYTFiNzYyZmVjNzZjNDguanBn.cache","vod_id":19140900,"title":"Meia-irmã NEET com seios fartos tamanho G, uma garota NEET (Nem Estudando, Nem Trabalhando, Nem em Treinamento). Apesar dos seios à mostra, ela é muito introvertida. Liberte sua alma adormecida com sexo com os seios e gozo! Yuuki Koya FOCS-276","lastmod":"2026-02-01","duration":"02:00:27","url":"/play/19140900.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmIzZjJlYWMzNGVhZGY4NWQzNGZiMThlZjQ0YWFjZGIuanBn.cache","vod_id":19001070,"title":"SDNT-014 Uma dona de casa amadora de verdade, forçada a atuar em um filme porque seu marido queria que ela fosse traída. Caso 12. Motomiya Momoko (pseudônimo), secretária médica, 32 anos, residente na cidade de Saitama, província de Saitama. Consentimento para sexo em grupo e ejaculação interna. Queria ser traída pelo marido.","lastmod":"2025-03-23","duration":"02:20:14","url":"/play/19001070.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjQxNjJlNTM5ODU4MDU5MzU3MWU3OTE0MTYxYmVkMDEuanBn.cache","vod_id":18987515,"title":"529STCV-269 [Uma mulher esbelta, voluptuosa e bonita, sexy e sedutora, experimentando múltiplos orgasmos] Uma garçonete transgênero de um bar de narguilé","lastmod":"2025-12-14","duration":"01:32:35","url":"/play/18987515.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MTkvNmYzYTQyMzk0Y2ZmMDVhOGIxZjZjNWYzNDI0MjA0NDMuanBn.cache","vod_id":19047757,"title":"HWKR002 Enfermeira grávida, esposa bonita que experimenta orgasmo","lastmod":"2025-08-18","duration":"02:04:26","url":"/play/19047757.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOGMwNTMyNjMzYjg1YmIyOTM3N2RhNTM3ODE1M2MxNGUuanBn.cache","vod_id":18949527,"title":"Originalmente uma locutora verde do universo [Residents' Green Broadcast Without Missing], uma história desagradável se desenrolou em sua vida, e ela surpreendentemente entrou na indústria do entretenimento adulto em uma escala incomumente grande, sua aparência é etérea!","lastmod":"2025-12-14","duration":"00:21:11","url":"/play/18949527.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTQ3ZDE2OWE4ZDM4ZTgyNTczOWQ3NmIzNTk1MjczYTIuanBn.cache","vod_id":18994884,"title":"[Código de Alta Definição] 326PAPA-036 [Penetrando a Vida Doce do Papai: Versão Yuri-chan] Ejaculação profunda e primal para uma balconista de loja de roupas que gosta de homens mais velhos e tem mamilos hipersensíveis!!","lastmod":"2025-03-23","duration":"01:10:37","url":"/play/18994884.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MTcvYzNkNmI2MDdlMTQ2N2RjOWM5NGZlN2Y4NDBkZDZhYWQuanBn.cache","vod_id":19168614,"title":"O máximo!! A primeira vez que uma mulher casada de 30 e poucos anos se despe em um documentário AV - Ayaka Oshima, Mature Woman JAPAN","lastmod":"2026-07-16","duration":"01:57:43","url":"/play/19168614.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTdjNjIwNmVjMGQxMGJkYzFmOWNkOGUwNTBhMGNlMTIuanBn.cache","vod_id":18956086,"title":"300MAAN-602 [Halloween 2020: Garota Samba Curvilínea e Sexy] Uma beldade com seios naturalmente tamanho H que viralizou nas redes sociais!","lastmod":"2025-03-22","duration":"01:17:39","url":"/play/18956086.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZTRhYWUxYjBkMjI1YTEzYjJkMjQ1ZmZhMzNmNWE3ZWIuanBn.cache","vod_id":18961811,"title":"Benefícios exclusivos do assento VIP [Edição Uniforme de Comissária de Bordo] ~ Diversas Comissárias de Bordo Ricas e Bonitas: Gentis e Virtuosas na Vida Diária, Extremamente Diferentes na Vida Privada (14)","lastmod":"2025-12-14","duration":"00:01:03","url":"/play/18961811.html"}]},
videoTitle: 'CHCH-031 Uma dona de casa voluptuosa e amadora, com seios impressionantes, que não fazia sexo há 20 anos, finalmente se entrega ao prazer após muitos anos. Misato (43 anos, tamanho K)',
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=/`;
}
};
}