마작을 한 후, 마작 테이블과 소파에서 하이힐을 신은 우아한 젊은 여성 두 명과 성관계를 가졌습니다. ...","lastmod":"2026-07-11","duration":"01:17:41","url":"/play/19163550.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvNzllODNjNjg1MmQ1MTljY2Q2N2M0MTA5NDg0YjhkYTguanBn.cache","vod_id":19161701,"title":"맹뤄위 PMS004 변태 의사 EP1 음란한 신음 소리를 내는 가슴 큰 젊은 여성을 마취시켜 치료하다","lastmod":"2026-07-11","duration":"25:51","url":"/play/19161701.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmZmMGU1MGYwODlkNzE1OTgzZmE5MDEzZTMwMGZjNjkuanBn.cache","vod_id":18929286,"title":"짧은 머리의 매력적인 젊은 여성이 하이힐을 신고 의자에 앉아 소품을 이용해 자위합니다. 진동하는 에그를 질에 삽입한 채 몸을 요염하게 흔듭니다. 이런 취향이라면 놓치지 마세요!","lastmod":"2025-12-14","duration":"00:56:23","url":"/play/18929286.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDI1ZTRkNmJkM2UzMzExNjZmMjAxY2M0NDQ0NjdjYjEuanBn.cache","vod_id":18983733,"title":"[중국어 자막] EBWH-011 애니메 엑스포 귀환: 공유 아파트에서의 NTR - 커플 호텔 코스프레 대여점에서 안티 바니걸 의상을 입고 있었는데, 친구에게 공격당하고 바람을 피워 질내 사정을 당했다.","lastmod":"2025-12-14","duration":"02:26:09","url":"/play/18983733.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjQ3MjdjMDE5ODY2ZWRlNjI2MGI5NzgxZDQ4ZTIxMzAuanBn.cache","vod_id":19004400,"title":"[피치미디어] 문신한 젊은 여성이 밤새도록 깨어있는 모습 - 리옌","lastmod":"2025-03-23","duration":"13:40","url":"/play/19004400.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjMzNzg4MjQ0MTZiYjI4OTczMDdkNWM4ODI5ZmU0OGMuanBn.cache","vod_id":18967818,"title":"세련되고 긴 머리에 성숙하고 우아한 자태를 지닌, 키가 크고 모델 같은 몸매의 젊은 여성. 배에는 꽃무늬 문신이 클로즈업되어 있고, 깨끗하고 하얀 호랑이 모양의 혈자리가 있다.","lastmod":"2025-03-22","duration":"00:45:00","url":"/play/18967818.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MjMvNzUxZGYxNTE3NjBjZTQ0ZmNkNGE0ZmI1NDcxNTI3NGIuanBn.cache","vod_id":19165174,"title":"고가치의 부드럽고 아름다운 젊은 여성, 커플 목욕, 가슴 애무, 40분간의 격렬한 섹스","lastmod":"2026-07-11","duration":"01:14:06","url":"/play/19165174.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNWYyYzhhM2ZhOTUzNTlhMDUwYmExNWYwNzQ1N2MyZjUuanBn.cache","vod_id":18956356,"title":"[중국어 자막] BACJ-034 배란일, 땀에 흠뻑 젖은 음탕한 불륜녀 아이자와 아카리.","lastmod":"2025-03-22","duration":"01:48:06","url":"/play/18956356.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MjkvZTc3ZDgyNGNmMWVmNDc4NWRjMDkyMjI1NzkzMmI0ZmYuanBn.cache","vod_id":19166179,"title":"지난의 한 유치원 교사가 학생 부모를 속이고 불륜을 저질렀습니다. 결혼 직후 불륜 영상이 공개되었습니다.","lastmod":"2026-07-11","duration":"12:22","url":"/play/19166179.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTI2NGI3NTFhYTE1MDAxMDlhMWQ5ZTVlMmIzZGZiZTguanBn.cache","vod_id":18935964,"title":"과일대출 미녀 스페셜 에디션: 성숙하고 아름다운 젊은 여성 허쥐안이 직접 촬영한 가슴 애무 및 자위 영상. 부드러운 가슴과 은밀한 음부, 최고 화질.","lastmod":"2025-12-14","duration":"00:04:39","url":"/play/18935964.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTEzODM1MWE1NjE3ZjZiZTJiNDc2MTQ3OGZjODlhNjUuanBn.cache","vod_id":18976991,"title":"SOAV-098 불륜을 저지르는 유부녀의 진심 어린 이야기 (사토 노노카 지음)","lastmod":"2025-12-14","duration":"02:24:41","url":"/play/18976991.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNGU2ZGVmZTIyMWI2YzVhYTNlM2ZmM2ZkYzQyNjFmNjguanBn.cache","vod_id":19000660,"title":"그 젊은 여성은 돈을 벌기 위해 성매매 업계에 발을 들일 수밖에 없었다.","lastmod":"2025-03-23","duration":"35:07","url":"/play/19000660.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMGE2ZTZjYmU4NGEyMGQ1MDgxYjY1ZGFjNzZlZTM0YzcuanBn.cache","vod_id":18928950,"title":"아름답고 글래머러스한 젊은 여성이 검은 스타킹을 신고 남성 위에 올라타 뒤에서 격렬하게 삽입당하며 신음하고 헐떡이는 모습이 매우 유혹적입니다. 절대 놓치지 마세요!","lastmod":"2025-12-14","duration":"01:07:15","url":"/play/18928950.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvZTBkMGU2NmI4NWQ1ZjVhMDUyN2UzYzczYmNkMmMxNWMuanBn.cache","vod_id":19065341,"title":"젊고 아름다운 여성이 오빠에게 피임 없이 항문 성교를 당하는 이야기는 흥미진진하고 자극적이다.","lastmod":"2025-12-13","duration":"22:45","url":"/play/19065341.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvM2Q2MmI1ZGMyNWE5NTlmNTBjMGY5M2ExMDhkM2IyY2MuanBn.cache","vod_id":18990754,"title":"매혹적인 외모의 젊은 여성이 섹시한 검은 스타킹을 신고 진동 에그를 이용해 자위하는 모습이 포착되었습니다. 클로즈업 장면에서는 진동 에그가 굵은 흑인 남성의 성기에 삽입된 모습과, 진동 에그의 끝부분이 그녀의 아름다운 엉덩이에 삽입된 모습이 선명하게 드러나 매우 자극적인 광경을 연출합니다!","lastmod":"2025-12-14","duration":"03:20:41","url":"/play/18990754.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWU2MjcyODkzMjE2NjM0YTU2ZjIzNDY5MzQ2MzI4YmIuanBn.cache","vod_id":18992446,"title":"유명 미녀 구메이링이 가정부를 유혹해 격렬한 성관계를 갖는 젊은 여성을 연기한다. 그녀는 창문 앞에서 다리를 찢는 자세를 취한 후, 뒤에서 격렬하게 삽입당하며 강렬한 오르가즘을 느끼고 신음한다.","lastmod":"2025-03-23","duration":"17:26","url":"/play/18992446.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTAzOTExNWFmM2I2MjE1MzczMjk0YzRjZWFjZThiYjAuanBn.cache","vod_id":19011217,"title":"이웃집 젊은 여자가 나를 유혹했다. 그녀의 매끈한 엉덩이는 너무나 매력적이었고, 그녀는 정말 유혹적이었다. 나는 그녀와 뒤에서 섹스를 하고 그녀 안에 사정하는 것을 참을 수 없었다.","lastmod":"2025-03-24","duration":"10:20","url":"/play/19011217.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTJkN2JjNDIxZGNkN2Y3NDZlZDczMzM1YzJjYjdkOTUuanBn.cache","vod_id":18961120,"title":"샴쌍둥이인 아름다운 젊은 여성이 의자에 앉아 다리를 벌리고 외음부가 삽입된 모습으로 묘사되어 있다. 위에서 내려다보는 시점은 다양한 자세와 폭력적인 미학을 보여준다.","lastmod":"2025-03-22","duration":"01:25:14","url":"/play/18961120.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjhlYWZkZTI2NDM2MTgzYTY2ODk2NzhiZDdiYjRlY2YuanBn.cache","vod_id":18978899,"title":"FANH-092 유카는 불륜을 저지르고 아이 양육에 집착하는 어머니입니다. 아름다운 아내이지만 남편에게 배신당하고, 남성의 성기에 매력을 느낍니다. 세 번 연속으로, 배신당한 남편은 그녀의 촉촉하고 탐스러운 질 속에 사정합니다.","lastmod":"2025-12-14","duration":"02:02:12","url":"/play/18978899.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzg1MDA4M2I3MTBhMjQwMzg4YmMxMjE0OTMxYTA4ZjMuanBn.cache","vod_id":18948736,"title":"엄청나게 섹시하고 엉덩이가 큰 젊은 여성이 출장 중 호텔에서 다른 젊은 여성과 관계를 갖습니다. 그녀는 내내 얼굴을 드러내고 있으며 놀라운 실력을 보여줍니다. 그녀는 그 젊은 남자를 만족시키기 위해 목욕을 시켜주고, 젖꼭지를 핥아주고, 오럴 섹스를 해주고, 거대한 성기를 애무하고, 가슴을 흔들어주고, 다양한 체위를 시도하며 격렬한 섹스를 즐깁니다.","lastmod":"2025-12-14","duration":"02:15:03","url":"/play/18948736.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9pYy4xNTUyNTAyMTQudG9wLzIwMjYwMjE2L3RnYTdVVFU2LzEuanBn.cache","vod_id":19144086,"title":"케 씨는 PUBG를 즐겨 하며, 시간제 사무직으로 일하는 젊은 기혼 여성입니다.","lastmod":"2026-02-18","duration":"32:48","url":"/play/19144086.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYTdlZTkyZGVmOGZhYWU0MWZmZjY4YWI0MzRhMjY0YzIuanBn.cache","vod_id":18949617,"title":"전자 공장에서 제일 예쁜 젊은 여자가 퇴근했네: 나 곧 싸겠어, 너무 흥분돼, 집에 가고 싶어, 세게 박아줘, 젠장, 아는 사람이잖아, 너무 창피해, 여기 있을 수가 없어!","lastmod":"2025-12-14","duration":"01:45:55","url":"/play/18949617.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=/`;
}
};
}