HEYZO 3412 My Sex Partner, I Can Have Sex with You Anytime, Anywhere - Hinata Takagi","lastmod":"2026-07-11","duration":"","url":"/play/19207238.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMTliMTQzN2NlOTVhNWFjMDY1YTE1OWRhZmNjOGQ1OWUuanBn.cache","vod_id":19175207,"title":"In the bridal chamber, the ex-girlfriend, whom he had just married, lay on a red quilt, continuing to recount their past stories. (Unprotected sex) She was pregnant and considered her husband's.","lastmod":"2026-01-20","duration":"1:11:39","url":"/play/19175207.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvY2VmOWMzMjlmZTE3NjUxM2I1MmQxOWVkODYzZWI4YTcuanBn.cache","vod_id":19165548,"title":"I'll keep making you ejaculate as long as you break up with your girlfriend. (Miyuan and Hua CKCK-022)","lastmod":"2025-12-13","duration":"2:47:29","url":"/play/19165548.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYzI4YmJhOGFhMmU4ODkzNTE0NDUxMzA2NzI2ZGYyNGUuanBn.cache","vod_id":19037688,"title":"Unprotected anal penetration with thick semen ejaculation and anal rupture","lastmod":"2025-03-26","duration":"0:10:08","url":"/play/19037688.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjg0ZjYwMTA2ZWEzNzQ5ZjJlNThlMDQzYjFhODZmZjYuanBn.cache","vod_id":19088779,"title":"Amateur Wife Documentary No. 3: A mixed-race Ukrainian wife with model-like beautiful breasts experiences her first group sex session.","lastmod":"2025-03-26","duration":"1:58:46","url":"/play/19088779.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNTY2NzI3M2YwMWE5NGE3ZGU2ODQ0NGM0ZTE0OTNjZDcuanBn.cache","vod_id":19074022,"title":"FSOG-047 was having sex with his girlfriend, a girl wearing a mask, at his friend's house...","lastmod":"2025-03-26","duration":"0:37:18","url":"/play/19074022.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MTYvNDU1NDI1ZjNmZGRiMWJhYzA3Yzk0NTBjZDYyNzc3ZjAuanBn.cache","vod_id":19154913,"title":"First time taking off clothes Shin Amateur Hunter Unknown actor FIT005","lastmod":"2025-09-15","duration":"2:00:35","url":"/play/19154913.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMjc0NTk4ZjRhM2NhNWY5OTcxM2ZmNzgxMDgxYjJiY2EuanBn.cache","vod_id":19172640,"title":"Peeping at my girlfriend 4","lastmod":"2026-01-08","duration":"0:25:05","url":"/play/19172640.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvOWMzNWFiYTJiNzU0ZTg3ZWY4OTFlMzFhODBjZGRhNDkuanBn.cache","vod_id":19177915,"title":"Lu Mengfan, a student at East China Jiaotong University in Nanchang, Jiangxi Province, led an extremely immoral private life. Her boyfriend discovered she had been having casual sex during their relationship and exposed her private photos.","lastmod":"2026-02-02","duration":"0:10:17","url":"/play/19177915.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYmNmNTQ3ZjdmMGE1NjliMWIyODZlNjRkYmI4Mjk1NjMuanBn.cache","vod_id":19123310,"title":"He ejaculated inside his delicate, young girlfriend.","lastmod":"2025-03-26","duration":"0:17:18","url":"/play/19123310.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNzkyNTYzMmRiNjYxYTY5YjFlNzZjNTFmZmRlOTBhYzguanBn.cache","vod_id":19185961,"title":"Open crotch, black stockings, white hair, mature woman, unprotected, wildly thrusting into her fat ass and cunt.","lastmod":"2026-03-12","duration":"0:13:50","url":"/play/19185961.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODAyZDkzYmU3MzQyNDg5MjNkYmUyYTRkOTA3NjU4OTkuanBn.cache","vod_id":19110876,"title":"Having sex with her boyfriend in front of the patient! 1","lastmod":"2025-03-26","duration":"0:23:51","url":"/play/19110876.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvYzMzODMxOGE5YjcyM2ExZDgyMzkwNjFlYzlmY2IxZjYuanBn.cache","vod_id":19202409,"title":"Thirsty single men and women meet up for a 4P passionate sex session with full-face exposure, oral sex, big dick licking, nipple slicking, naked sex, a battle of multiple positions, intense fucking and thrusting.","lastmod":"2026-05-31","duration":"1:00:22","url":"/play/19202409.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMDMvOGJlYzQwOTZjYjQ5ODc3YmVlZmIxZjY5NDg0NjViMjguanBn.cache","vod_id":19157697,"title":"Hidden camera footage of a busty coach secretly instructing a woman on how to press her large breasts against her body during intense, sweaty training sessions with unprotected sex. (MILK228)","lastmod":"2025-10-02","duration":"2:00:23","url":"/play/19157697.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDkwNzFiMWY0NjI5MzdjZmU5ZTcyNGYxZTRkMzdkNjkuanBn.cache","vod_id":19185124,"title":"The various sexual encounters that Mark Chao and his ex-girlfriends had during their breakups were exposed.","lastmod":"2026-03-08","duration":"0:07:40","url":"/play/19185124.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMmZlMGJlNDFiZDVkNTYyY2FjZDRlZjVjMWU0ZmUyYTAuanBn.cache","vod_id":19120074,"title":"KKJ085's persuasive approach → taking her home → secretly filming sex → unauthorized submission of photos. Handsome pick-up artist gets her into bed immediately after the first encounter. 14.","lastmod":"2025-03-26","duration":"1:43:30","url":"/play/19120074.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvYzcxZjU3M2U2Nzc2OTIxMDEyZDEyNjE5ZGEzMzBjZDUuanBn.cache","vod_id":19166442,"title":"The cuckolded husband took his wife for a massage by another man for the first time.","lastmod":"2025-12-13","duration":"0:33:07","url":"/play/19166442.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMDgvZmQ1NjgxMGUxMzE0N2UxYTZiNjhmYTUxMjUwNTFlNzYuanBn.cache","vod_id":19163091,"title":"Losing to the allure of her overly sexy boss, Fujimori, who wears a revealing uniform every day, she engages in continuous sex in the office... Fujimori Riho (HMN_595)","lastmod":"2025-11-07","duration":"2:41:42","url":"/play/19163091.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzk1ZWViNmIyM2NiNDEyNjM2YTdjMzBlMGI2M2Y3NGMuanBn.cache","vod_id":19033721,"title":"My girlfriend always said, \"We can't have sex before we get married...\", but I finally got married. After submitting the marriage registration, we went straight to a hotel and had intercourse with ejaculation inside her repeatedly. (Akari Mitani)","lastmod":"2025-03-26","duration":"2:30:21","url":"/play/19033721.html"}]},
videoTitle: 'Chinese AV Model Extra: No Condom Sex! Boyfriend secretly films his slutty girlfriend having passionate sex. Taiwan's No. 1 AV actress, Wu Mengmeng!',
language: 'en',
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 copied!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Link copied!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Link copied!');
}
}
},
// 切换布局
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=/`;
}
};
}