두 남성이 서로의 얼굴을 핥는, 잊을 수 없는 쓰리썸 장면.

무작위의

추천 영상

부잣집 아들이 주최한 파티에서 여러 여자들을 초대해 성관계를 맺었다.</script>","lastmod":"2026-07-11","duration":"10:04","url":"/play/19154016.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MjQvYmM1NDE5YjViZjdiMDdlOTQ3ZjExOTQ1MThhMGI4MmIuanBn.cache","vod_id":19070789,"title":"바람둥이 남자가 젊은 커플을 불러 모아 어른스러운 게임을 함께 하자고 한다.","lastmod":"2025-04-24","duration":"23:00","url":"/play/19070789.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTJhNGQxMTZlNmIyNzk3NDhmOTczYzhkZDg1NmUxYzIuanBn.cache","vod_id":19002166,"title":"검은 스타킹과 에로틱한 란제리를 입고 얼굴을 완전히 드러낸 귀여운 소녀의 모습은 정말 사랑스럽습니다. 분홍빛의 여린 음부가 자위와 신음 소리와 함께 드러나면서, 남성 시청자들의 마음을 사로잡아 선물을 보내고 싶게 만듭니다. 너무나 순수해 보이는 소녀! 이 놀라운 영상을 절대 놓치지 마세요!","lastmod":"2025-03-28","duration":"01:04:44","url":"/play/19002166.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMjUxOTNjMjk4NjZhNTFkODQ3NTdjOGVhNjU1ZDdkOWMuanBn.cache","vod_id":19130155,"title":"고화질 유출 대화 내용에는 관능적이고 에로틱한 짧은 머리의 우아한 젊은 이혼녀(자녀 있음)가 부유한 남성과 성관계를 맺고 셀카를 찍는 장면이 담겨 있으며, 호텔과 사무실이 그들의 전쟁터로 묘사됩니다.","lastmod":"2026-03-12","duration":"36:56","url":"/play/19130155.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTg1NTZiNTJmYTRlYjI2MTA2MTI2MTcxYmNiNjAwMzcuanBn.cache","vod_id":19004350,"title":"삼촌과 함께 보낸 설날, 라라섹시의 첫 금지된 성경험 1","lastmod":"2025-03-28","duration":"28:01","url":"/play/19004350.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODE4NTFhMTdhNjIwZGMyYzU4YjcwOGYwNDg1MTFiOTEuanBn.cache","vod_id":18963292,"title":"[재벌의 첩 선택 이야기] 몽골 무용 - 아치(국가표준무용교사) VS 경극 - 샤오징(승무원), 실감나는 고화질 공연","lastmod":"2025-03-28","duration":"17:59","url":"/play/18963292.html"}]}, videoTitle: '두 남성이 서로의 얼굴을 핥는, 잊을 수 없는 쓰리썸 장면.', 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=/`; } }; }
友情链接