Hitomi Honda brincou com meu corpo com dedos diferentes dos do meu marido. Hitomi Honda パープルジャム","lastmod":"2026-07-11","duration":"","url":"/play/19206972.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODgxYTM2ODc0YmUzNDNlMGQ5ODA1MmVmNTMyMDc5YmYuanBn.cache","vod_id":19088015,"title":"【Versão AI Limaster】Por favor, discipline minha jovem esposa/escrava voluntária - Arai Airi.","lastmod":"2025-03-26","duration":"1:48:56","url":"/play/19088015.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZmE1NDk4NTNhMGFkZjhmOTA1ZTYzOWI4YjI2YWE2MjcuanBn.cache","vod_id":19105767,"title":"PIYO-173 Quero fazer aquela garota que vi na rua beber meu sêmen em segredo...","lastmod":"2025-03-26","duration":"2:20:48","url":"/play/19105767.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDlkN2U5ZGU1ODc1ZjNkOTczY2I2OWNhY2FiNmJmYjQuanBn.cache","vod_id":19169435,"title":"A história de um filme adulto de um fã-clube de Bakumatsu, que mostra mulheres brincando e fazendo sexo com irmãs mais novas.","lastmod":"2025-12-23","duration":"0:08:04","url":"/play/19169435.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDBhYzE1YTNjMTM3OTBjYTUyYjE1MzZkN2RkZTA1YzkuanBn.cache","vod_id":19174739,"title":"\"De qualquer forma, tudo não passou de um sonho.\" Em um estado de embriaguez, ela teve um caso com um colega mais velho de seu emprego de meio período. (A cena final é descrita como Tsukino Ezui DASS-761.)","lastmod":"2026-01-18","duration":"2:03:15","url":"/play/19174739.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYTIxZGFkYzI5ZjZkMzE1MTZiMWZlZWFjYTA2ODg2ZTkuanBn.cache","vod_id":19122688,"title":"Depois de sair do trabalho, vi minha esposa usando lingerie sexy indo para a casa do nosso vizinho.","lastmod":"2025-03-26","duration":"2:26:27","url":"/play/19122688.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNGNlYTAwYWVhMjg0ODUzN2ExMGQ1NTdhZmJhMjEzOWIuanBn.cache","vod_id":19115962,"title":"Uma celebridade sexy da internet, apelidada de \"Garota do Chá com Leite\", foi flagrada fazendo sexo em seu carro à beira de uma estrada suburbana com um motorista de aplicativo de meia-idade. O pênis dele era um pouco pequeno demais para satisfazê-la.","lastmod":"2025-03-26","duration":"1:45:26","url":"/play/19115962.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZmExNzU2NDNhMzc2NGNmOGMwMzQ5MWFlMGJmNjBiYWMuanBn.cache","vod_id":19083339,"title":"O choque de ver o pênis do meu pai careca e lascivo sendo ativado pelo P foi demais para mim; nunca mais sentirei nada... As sementes da depravação uterina foram plantadas em uma nova rodada de Nakad-Nogi Aya...","lastmod":"2025-03-26","duration":"2:45:12","url":"/play/19083339.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNDdkOTA3ODQ5OTFmNDM4YmI0ZDVjMDk2YzU3YzczZTUuanBn.cache","vod_id":19078544,"title":"MOON-033 Fiz amizade com uma garçonete em um resort de águas termais e tive um caso de amor lento e intenso com ela, forçando-a a ejacular dentro de mim repetidas vezes.","lastmod":"2025-03-26","duration":"2:25:04","url":"/play/19078544.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMGIzYTkwMjEyNzk1NmY1MmU1ZTM2ZWNhMTE0OTBhYzcuanBn.cache","vod_id":19066556,"title":"Quando o marido dela não está em casa, ficar com essa esposa amadora supercarnívora e peituda faz com que meu pau não fique duro o dia todo.","lastmod":"2025-03-26","duration":"2:43:02","url":"/play/19066556.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZGU0OGFhMmJlNjU0MDIzZTFhZjM5ZTlkNzhiNGQ2OTQuanBn.cache","vod_id":19063995,"title":"Invoquei uma mulher linda e voluptuosa que me fez ejacular até que eu estivesse completamente sem sêmen.","lastmod":"2025-03-26","duration":"2:07:03","url":"/play/19063995.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTFiMTYzNjk0OGMyZDllNmFjOTM1YjMwNWQ5YWJjNmQuanBn.cache","vod_id":19034301,"title":"PFES-052 Enviaremos uma vadia safada e peituda que lhe fará um boquete até você gozar. Rino Yuki","lastmod":"2025-03-26","duration":"2:35:38","url":"/play/19034301.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzhmY2Q0YTg1MWEwNDU4OTQ4ZDYzNjAyNzM0NDNhMTguanBn.cache","vod_id":19101941,"title":"Meu sogro conhecia todas as minhas zonas erógenas e me fez ter orgasmos por sete dias consecutivos enquanto meu marido estava fora...","lastmod":"2025-03-26","duration":"2:26:31","url":"/play/19101941.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvODYyZDc2YjgwMTE3NzNiYmM1OGQ4YWE5NGU4NjNmYzcuanBn.cache","vod_id":19177229,"title":"Minha linda namorada adora sexo oral e tem uma libido tão forte que quer lamber um pau grande o tempo todo. (Hana-i Tsubaki HBAD-720)","lastmod":"2026-01-30","duration":"2:03:17","url":"/play/19177229.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjkwN2YyMGRhYWNhNjE2ODY3YTljM2RjNTQzNzNhNzAuanBn.cache","vod_id":19077098,"title":"ROE227 Depois que minha família foi embora, minha mãe e eu passamos nossos dias incestuosos na casa dos meus pais.","lastmod":"2025-03-26","duration":"1:59:47","url":"/play/19077098.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMTRhZTFiYmJmZjYyODcyMjI2MWYwYjNlY2IwMWIzNWYuanBn.cache","vod_id":19042663,"title":"Minha namorada, que está sempre em casa, topou participar da minha sessão de fotos!","lastmod":"2025-03-26","duration":"0:31:43","url":"/play/19042663.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZDgyNzQ0NzY4MjJjZWVkY2UwZTE3OGVlZjA4OTExMTQuanBn.cache","vod_id":19196682,"title":"Sexo apaixonado no carro: Buscando minha namorada linda depois do trabalho, ela não quer ir para um hotel. Que tal fazermos sexo no carro hoje? Homem: Que excitante fazer isso em plena luz do dia!","lastmod":"2026-05-03","duration":"0:09:30","url":"/play/19196682.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTUvZWVhNzU1YzRhNWY4Y2RjZGFiMWMwN2YyMDkwMWYzNzguanBn.cache","vod_id":19168927,"title":"Uma secretária casada, envolvida em relações sexuais no gabinete do presidente, em meio a suor e beijos — uma secretária lasciva e sexualmente excitante. Nanami Tina JUR-466","lastmod":"2025-12-20","duration":"2:01:56","url":"/play/19168927.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvNDlhY2M2YTVkOWNhMTY1NDRkY2FhZjk0ZTg1ZTJjNWMuanBn.cache","vod_id":19200184,"title":"As técnicas de sexo a três de Amy satisfazem seus desejos mais íntimos.","lastmod":"2026-05-20","duration":"0:57:29","url":"/play/19200184.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZTRmMjNmMDNhZWZjZTY4ZjdmMmRhODk4NTczYmRkMzYuanBn.cache","vod_id":19101771,"title":"O estuprador que me estuprou durante meus tempos de estudante já cumpriu sua pena e me estuprou novamente dez anos depois de eu estar casada!","lastmod":"2025-03-26","duration":"2:29:29","url":"/play/19101771.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvODkwMjBiYmYyNzU5YTI3ZTBlNzUwMzQxY2QzYjQ5YTIuanBn.cache","vod_id":19174509,"title":"Nos bastidores de um salão de beleza sofisticado, uma terapeuta sexualmente ativa busca sexo primitivo e penetração. Ator desconhecido STOL-123 de um salão masculino de luxo em Minami-Azabu.","lastmod":"2026-01-17","duration":"4:01:06","url":"/play/19174509.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9zYnp5dHBpbWc0LmNvbTozNTE5L3VwbG9hZC92b2QvMjAyNjAyMjctMS9mNDJhMmY1Y2FhMjM3ODQwNTRjODZkYmNlZDNhNDE2NC5qcGc=.cache","vod_id":19183143,"title":"Fotos íntimas vazaram; a mulher era mantida em cativeiro por uma mulher rica com um alto apetite sexual, e só era liberada após ser completamente satisfeita a cada relação.","lastmod":"2026-02-27","duration":"0:38:26","url":"/play/19183143.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MjYvNmQ4MDRlMTcxMzE4NGVlOWJiODJmYTMzZjZjZDliNjYuanBn.cache","vod_id":19151212,"title":"Quando DASS559 estava em uma viagem de negócios, ela ficou bêbada na frente do chefe, que odeia chuva forte... Mesmo que tenhamos acabado morando juntos depois daquela noite, a saliva dela ainda estava muito espessa.","lastmod":"2025-08-25","duration":"2:00:19","url":"/play/19151212.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZWIyOWU4ZTIwOGUxM2NhYzMwZmY4MzdiZWIwZTkxYmYuanBn.cache","vod_id":19060842,"title":"Ele é meu chefe durante o dia e meu escravo sexual à noite!","lastmod":"2025-03-26","duration":"2:04:31","url":"/play/19060842.html"}]},
videoTitle: '9. Depois do trabalho, dividi um quarto com uma colega. Tive relações sexuais com ela até que meu desejo sexual fosse satisfeito.',
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=/`;
}
};
}