Khi tôi kết hôn với người yêu thời thơ ấu của mình… Mio (em gái cùng cha khác mẹ của tôi), người mà tôi quen biết từ nhỏ, quyến rũ và trêu chọc tôi mỗi ngày. Cho dù tôi xuất tinh bao nhiêu lần đi nữa, tôi… Ishikawa Mio MOODYZ","lastmod":"2026-07-11","duration":"02:36:33","url":"/play/19162394.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly8xNTI2MDMwOXAudG9wLzIwMjYwMzE0L0ZpUE1NalY3LzEuanBn.cache","vod_id":19148429,"title":"MOFOS - Cô em gái cùng cha khác mẹ Eva Lovia và anh trai cùng cha khác mẹ có chung một bạn gái [MOFOS]","lastmod":"2026-03-15","duration":"11:43","url":"/play/19148429.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMmNjOTU0YTllYWQwY2UxOTlhYzE2NGU0ZmQ1ODIwMzEuanBn.cache","vod_id":19141241,"title":"Alexis Fawx của Brazzers ăn mừng Ngày Độc lập bên hồ bơi cùng một con gà trống khổng lồ.","lastmod":"2026-02-02","duration":"10:43","url":"/play/19141241.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYmNkYzBjMjkyNzBkMTUwZDdlNGYyNmU5MjhlZTJlZWUuanBn.cache","vod_id":19143954,"title":"FreeUseFantasy - Hai chị em kế người châu Á Paisley Page và Clara Trinity phải làm hài lòng anh trai kế của họ [FreeUseFantasy]","lastmod":"2026-02-17","duration":"40:05","url":"/play/19143954.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDAxOWRlYTgzYjU4ZDgyZmNkMzA5OGRiMzViNGZkOGIuanBn.cache","vod_id":19013807,"title":"Anh trai tôi lại chăm sóc bạn gái tôi rồi_Trang web chính thức dành cho những người đàn ông bị kìm nén tình dục đang tìm kiếm quan hệ tình dục trực tuyến!","lastmod":"2025-03-24","duration":"25:24","url":"/play/19013807.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjFkYTYzZWQ4OThmY2I2NWMzM2U4N2VhZDlkMTU0MGYuanBn.cache","vod_id":18939830,"title":"GRCH-316_Anh em x Công chúa ~Tôi là người phụ nữ duy nhất giữa một căn phòng toàn đàn ông~ Phần 1","lastmod":"2025-03-22","duration":"02:57:18","url":"/play/18939830.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MDUvYTVhNGE4YjU4YjJiZWQzNDUxMzI3NGJkZTQ1Nzk4MTYuanBn.cache","vod_id":19045569,"title":"Những tưởng tượng tuổi teen của cô em gái kế về mẹ của anh trai kế, việc tự thỏa mãn bản thân và đồ chơi tình dục.","lastmod":"2025-08-04","duration":"16:10","url":"/play/19045569.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMTk5MDlkMjk3MzY1YzgyZjBlMDVkMWE4ZmZlYmFhMTcuanBn.cache","vod_id":19143963,"title":"FreeUseFantasy - Cô bạn thân của em gái kế dâm đãng HazelHeart quan hệ với em gái kế của mình ngay trước mặt cô ấy [FreeUseFantasy]","lastmod":"2026-02-17","duration":"37:41","url":"/play/19143963.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZDFjZTQxYjA4MDc0MDRmNmQ5YzFiOWRjYzdmNDk2NWIuanBn.cache","vod_id":19156534,"title":"SisLovesMe - Cô gái tuổi teen dễ thương trốn học và bú dương vật của anh trai kế [Sis Loves Me]","lastmod":"2026-05-04","duration":"12:43","url":"/play/19156534.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMTAvMTQ4MzNhZDc4MTZjNzUxOTk0YWUyZTRkMjQ4MjhjYWEuanBn.cache","vod_id":19056875,"title":"Các anh trai của Tianmei0161 có quan hệ bất chính với vợ của người anh trai mình, Wu Xinyu.","lastmod":"2025-10-09","duration":"35:12","url":"/play/19056875.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTVjMDJkN2E5ZTNkNmFjYmI0MDhmNDEwYWE4MDI3MmYuanBn.cache","vod_id":19003119,"title":"Anh ta bắt em gái cùng cha khác mẹ của mình giúp phục vụ bạn trai.","lastmod":"2025-03-23","duration":"42:17","url":"/play/19003119.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9pYy4xNTUyNTAyMTQudG9wLzIwMjYwMjIwL2xZcVhQZjlnLzEuanBn.cache","vod_id":19144838,"title":"GOTMYLF - Một gã dâm dục túm lấy một người phụ nữ trưởng thành có thân hình gợi cảm và bắt cô ta nhún nhảy vòng ba to lớn của mình trên dương vật của hắn. [GOTMYLF]","lastmod":"2026-02-22","duration":"28:58","url":"/play/19144838.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MDkvMGQ0Y2ExM2I4NmZlNDBjZWU0ZGY5YjBiN2VjYTEwNjUuanBn.cache","vod_id":19032790,"title":"Người tình của tôi đang ngoại tình với vợ tôi.","lastmod":"2025-05-09","duration":"16:28","url":"/play/19032790.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNTg4NWZlMTk0MjBkZTZmYTFmMTU4MGY3YTU5ZGUwZDEuanBn.cache","vod_id":19155906,"title":"SecretCrush4K - Nữ tiếp viên hàng không bị chứng dày sừng da quá mức ngoại tình với chồng [SecretCrush]","lastmod":"2026-04-30","duration":"26:32","url":"/play/19155906.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvZjE3YmYxMjI2ZGRiNDI0NGQ3Mjc3ZWVkYmRlNTUyY2EuanBn.cache","vod_id":19161843,"title":"Cô gái xinh đẹp với làn da sần sùi bắn vào dương vật của tôi - MIRARI【MIRARIHUB】","lastmod":"2026-07-11","duration":"17:48","url":"/play/19161843.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzhjNmVmMmIyZTI1NGE3MTExZTc2YTE3ZWI5MDliM2MuanBn.cache","vod_id":18945021,"title":"Anh bạn, mẹ cậu xinh đẹp quá! -mgb_tia_layne_ap052713_720p_8000","lastmod":"2025-12-14","duration":"00:32:40","url":"/play/18945021.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMzRkODg1MzU3MDYzYjEzNjhkNzNhZDBlZWYzYzM3MjMuanBn.cache","vod_id":19159294,"title":"TeensLoveBlackCocks - Cô gái tóc đen xinh đẹp chơi đùa với dương vật to màu đen để kiếm tiền [TeensLoveBlackCocks]","lastmod":"2026-05-21","duration":"08:00","url":"/play/19159294.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZTA2NTc5MDhjOGIxOGY1Mjg4NGFiNDcyNzY5MjI1YjAuanBn.cache","vod_id":19156134,"title":"Hai anh em, Tiểu Hà và người em trai học giỏi hạng ba, đã bí mật quay phim những người mới đến.","lastmod":"2026-05-02","duration":"52:37","url":"/play/19156134.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmJiYjg1NzU5M2I0MTE3YTY0MDUxYjE1ZDg5ZTMzYWQuanBn.cache","vod_id":19020742,"title":"Một bà mẹ kế dâm đãng.","lastmod":"2025-03-24","duration":"04:36","url":"/play/19020742.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDE5NmE3ZmM5Y2FlOTFkNWJiZDgwZWM1ZDRiZGZlOGQuanBn.cache","vod_id":18940021,"title":"IESP-650 Huấn luyện đồng tính nữ giữa chị kế và Shiori Mochida - Phát hành theo chương trình cấm đồng tính nữ","lastmod":"2025-12-14","duration":"02:25:17","url":"/play/18940021.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDhlOTljYmNjOThkYzlkYWY5OWY3NDhmMTBiNmIxMmQuanBn.cache","vod_id":19141788,"title":"DaughterSwap - Cô con gái có mái tóc dày đi cắm trại cùng ông ngoại [DaughterSwap]","lastmod":"2026-02-05","duration":"08:36","url":"/play/19141788.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTRlMWZjYzFmNjljMzZkMDJhN2YxMDI4MTVmNDMyZjMuanBn.cache","vod_id":18958765,"title":"Cậu em trai có dương vật dài và mảnh - Nữ thần mạng xã hội nổi tiếng không muốn được đối xử như công chúa, chỉ muốn làm gái hư và làm hài lòng chủ nhân của mình!","lastmod":"2025-03-22","duration":"00:01:32","url":"/play/18958765.html"}]},
videoTitle: 'FamilyStrokes - Mối quan hệ rắc rối của chị kế với các anh kế [FamilyStrokes]',
language: 'vi',
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('Đã sao chép liên kết!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Đã sao chép liên kết!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Đã sao chép liên kết!');
}
}
},
// 切换布局
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=/`;
}
};
}