Bị quay lén, rò rỉ, quan hệ tình dục bằng miệng trong nhà vệ sinh quán bar, không thể kiềm chế được","lastmod":"2026-07-11","duration":"","url":"/play/19267164.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYTlhZDFjNDBiMDk0NDNiNGQyNDkzNmE4MzJkZmRiMTguanBn.cache","vod_id":19161742,"title":"[Anh em ruột quan hệ tình dục tập thể] Trong căn phòng dâm dục, một tên đê tiện và một cô gái lẳng lơ đang bị một người chồng bị cắm sừng cưỡng hiếp trong khi người chị gái lớn hơn đứng xem. Người chồng bị cắm sừng bị cưỡng hiếp theo nhiều tư thế khác nhau.","lastmod":"2025-03-30","duration":"0:17:42","url":"/play/19161742.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDliN2NmZmQ3NDg4MGU4Mjk1MDM1M2ZkMzNmOGJmMTIuanBn.cache","vod_id":19250882,"title":"Cô em gái cùng cha khác mẹ, với làn da trắng mịn, vô cùng quyến rũ và dâm đãng.","lastmod":"2026-03-25","duration":"0:18:40","url":"/play/19250882.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzEzYzJiMjNhMzBiMmNlMTFkNjY0NzUyOGQ1NTdjMGUuanBn.cache","vod_id":19040066,"title":"200GANA2704 đã phát hiện ra một người đẹp sành điệu đang dùng công tắc khêu gợi trên núm vú của cô ấy, kích thích trực tiếp khiến cô ấy rên rỉ không ngừng.","lastmod":"2025-03-28","duration":"1:09:29","url":"/play/19040066.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvY2RkZTMxMDU2MWIzOTZkODI2OGJkZDY3MDBlMzEwNWYuanBn.cache","vod_id":19249527,"title":"GVH-823, nữ thủ lĩnh của giáo phái SEX, hòa quyện dịch cơ thể của mình với dịch cơ thể của các tín đồ, trải nghiệm cực khoái nhiều lần mỗi ngày.","lastmod":"2026-03-17","duration":"2:54:12","url":"/play/19249527.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjJkNDgwMGYxNzRiZGRlZDlkNzU4NGIyM2M1ZGJkZDAuanBn.cache","vod_id":19184372,"title":"MIAA-125 Nếu không giải quyết được vấn đề này, cho tôi xem \"của quý\" của anh. Công thức xuất tinh tuyệt đối của bậc thầy dâm dục! Yatsuno Tsubasa","lastmod":"2025-03-30","duration":"1:57:12","url":"/play/19184372.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjAxMjYwNWIxYmRjNGMzNWEyMGNmODZlNDQ5MTQyYjkuanBn.cache","vod_id":19102515,"title":"#Qiuxiang_Một cô gái trẻ lẳng lơ thực hiện màn 3P bằng cả hai tay! Cô ấy thích xuất tinh vào miệng, và sau khi xong xuôi, cô ấy cưỡi lên mặt và liếm âm đạo của mình. Cảnh tượng cực kỳ dâm đãng (1)","lastmod":"2025-03-29","duration":"0:58:10","url":"/play/19102515.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODRhNGRmNmFiNmJlMDQ1NzM0NmJhN2EzNWY0NGE2ZmMuanBn.cache","vod_id":19070385,"title":"Bộ truyện Lưu Nguyệt - Ngày đầu tiên trừng phạt nhân viên nam đi muộn","lastmod":"2025-03-29","duration":"0:35:03","url":"/play/19070385.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjg3MjY5M2FlNWIxMTZlYmVlODVhZmJmYWU3ZGRkZmUuanBn.cache","vod_id":19157841,"title":"[Phụ đề tiếng Trung] Cuộc sống học đường dâm đãng của cô nàng ngực khủng Tập 2: Nhắm mục tiêu! Kết thúc hậu cung","lastmod":"2025-03-30","duration":"0:15:48","url":"/play/19157841.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDRjMTdhMDNlNjM2MTQzZDZjYjk5MzEyM2NmMTI0NWQuanBn.cache","vod_id":19252193,"title":"Rõ ràng, đây là một bộ phim khiêu dâm hạng ba cực kỳ tục tĩu về Hime.Love Aoi Mai fetish HSM-084","lastmod":"2026-04-03","duration":"2:23:35","url":"/play/19252193.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMmQyYjllN2IzNGYwNDk0NGRlZGM1MzUyMjJlZDlmMzEuanBn.cache","vod_id":19160948,"title":"[Quan hệ tình dục trong xe] Một nữ streamer xinh đẹp và quyến rũ cùng bạn tình của cô ấy có màn trình diễn tình dục ngoài trời, bao gồm cả quan hệ tình dục bằng miệng và quan hệ tình dục trong xe. Nội dung rất khiêu dâm.","lastmod":"2025-03-30","duration":"0:29:33","url":"/play/19160948.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMzhmMjJkOGE0YjUyYzcxZGI2MWYzNmExOTQ3OGY4MGEuanBn.cache","vod_id":19173974,"title":"SWDF022 Một cô gái lẳng lơ đang mặc đồ thể thao che kín vùng kín, làm nổi bật thân hình nóng bỏng và mời gọi bạn cùng tham gia những trò chơi thể thao nghịch ngợm!","lastmod":"2025-03-30","duration":"2:02:20","url":"/play/19173974.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYTZmOTllZjMyNzBlMDIzMjEwZDZkOWU4ZDlhMjhkMjAuanBn.cache","vod_id":19152932,"title":"Một bộ phim khiêu dâm tục tĩu và bẩn thỉu với sự tham gia của 6 phụ nữ trưởng thành, kéo dài 4 giờ: \"Chồng tôi hoàn toàn phớt lờ tôi...\"","lastmod":"2025-03-30","duration":"4:00:42","url":"/play/19152932.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYTI2ZGZlMzE2OWZmNDkxZmRkY2JlZmM3MzIwMzJkYzcuanBn.cache","vod_id":19136777,"title":"Video này ghi lại cảnh một người mát xa có dương vật rất lớn sử dụng dầu kích thích tình dục để kích thích các vùng nhạy cảm của một cô gái quyến rũ, cuối cùng biến cô ta thành một gái điếm!","lastmod":"2025-03-29","duration":"2:01:06","url":"/play/19136777.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjI5ODFhYmNlMGMxNDQ3MzkyMGRmYzYxMTk2YjBiMDMuanBn.cache","vod_id":19042661,"title":"Loạt phim \"Học giả xuất sắc\" kể về một cô nàng nóng bỏng với làn da trắng mịn và thân hình săn chắc, có một cuộc tình một đêm và bị cưỡng hiếp dã man, phát ra những tiếng rên rỉ dâm đãng và đáng yêu.","lastmod":"2025-03-28","duration":"0:50:30","url":"/play/19042661.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MDEvNmFiNDgwNDgxNWEzNzM3NzMyMzY0ZTNkNmUwOWQ2YjMuanBn.cache","vod_id":19216154,"title":"NHDTC035 Nhà nghỉ suối nước nóng đang chờ đợi quan hệ tình dục ngay lập tức. Một cô gái ngực khủng, thích bạo lực, liên tục xuất tinh vào âm đạo dày của mình.","lastmod":"2025-07-31","duration":"1:44:00","url":"/play/19216154.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODVmYmE0NTFlOTU4MWE5NDgwOWU3NjM0OTgwODc0MGIuanBn.cache","vod_id":19128826,"title":"PES-083 Cô gái xinh đẹp hạng A và phim khiêu dâm tàn bạo × trò chơi gần như bất hợp pháp! Quan hệ tình dục nguyên thủy với một gã trai hư hỏng và một cô gái trẻ! Bộ 2 đĩa CD - CD1","lastmod":"2025-03-29","duration":"2:00:43","url":"/play/19128826.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMDJjNWIxYmY1NmVlM2ZkNmY5NzgxOTgyN2Y3M2VjZjguanBn.cache","vod_id":19147223,"title":"APNS-337 \"Tôi sẽ bị bạn cùng lớp vô gia cư và gia đình cậu ta cưỡng hiếp và làm cho có thai... Đúng vậy, mỗi ngày kể từ bây giờ...\"","lastmod":"2025-03-30","duration":"2:05:38","url":"/play/19147223.html"}]},
videoTitle: 'Ngày thác loạn của Aya Nanjo: bị xịt những mảng thịt vào người trong nhà vệ sinh. (AGAV-155)',
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=/`;
}
};
}