GS291 Saya pergi melawat seorang rakan, dan ada seorang gadis cantik di sebelah saya; saya dapat melihat seluar dalamnya. Saya sangat teruja sehingga saya merenungnya. Dia memegang perutnya dan kelihatan seperti sedang kesakitan. Saya bertanya kepadanya sama ada dia baik-baik saja dan cuba membantunya.
REC Kereta Api Cabul NTR Sehingga saya jatuh cinta dengan seorang wanita pejabat, saya melihat wajahnya di platform. Aya Onami belum siap","lastmod":"2026-07-11","duration":"01:58:50","url":"/play/19164624.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTY3NGYwMjQxYzg4YjViYTBkYTZlN2I5MDlkNTI3NDguanBn.cache","vod_id":18996189,"title":"Ibu-ibu Kawan-kawan Saya (2018)","lastmod":"2025-12-14","duration":"01:14:00","url":"/play/18996189.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmUwZjljMGE5ODZhMDI0MjQzMjA3OWE0YTBjNTYxMmIuanBn.cache","vod_id":18951015,"title":"HUNTA-150_A Dikelilingi oleh pekerja wanita kanan, saya satu-satunya lelaki di pejabat yang bekerja lebih masa.","lastmod":"2025-12-14","duration":"03:31:40","url":"/play/18951015.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDhlZTRkNmIwNzY3MjRmOGI2ZmVlMzVjZDk5NDNkZTguanBn.cache","vod_id":19151096,"title":"Dia bertemu dengan seorang wanita ekshibisionis yang mesum di dalam runtuhan. Wanita itu kecil, memakai pakaian dalam yang hanya memuat naik video mendedah di media sosial. Dia seekor haiwan seks sejati, terdapat dalam HMN-807.","lastmod":"2026-03-31","duration":"01:34:08","url":"/play/19151096.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjk3OTgwNjEyZDM4ZmZhNzNjN2QxY2MxYTNmN2Q4MTIuanBn.cache","vod_id":18953924,"title":"OYC-095 Sudah tentu, ia dirakam sebagai AV! Kawan kacak saya membawa seorang gadis mabuk ke bilik saya.","lastmod":"2025-12-14","duration":"02:08:02","url":"/play/18953924.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2VmNGU3ZDY0NmZkZmU2MmI3OWJkMTU2NDc4YzllODcuanBn.cache","vod_id":18953830,"title":"NPS-360 Tiga ibu membintangi AV bersama!! Wanita yang sudah berkahwin mengumpul dokumen - suami tidak kelihatan.","lastmod":"2025-03-22","duration":"02:38:38","url":"/play/18953830.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MDcvZTg1NzBjZDFlYjI5ODNmNDI1ZmYyODJjYTAzZDM0ODYuanBn.cache","vod_id":19041741,"title":"START299 Teman lelaki saya bercakap tentang bos wanita yang dikaguminya, dan akhirnya dia terperangkap dalam kegilaan seks sesama jenis lesbian.","lastmod":"2025-07-06","duration":"02:20:38","url":"/play/19041741.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNWYzNmMyN2NkNzMyNmI5ZDVmZjk2YWM2YzM0MWM5M2UuanBn.cache","vod_id":18980383,"title":"PPPE-108 Selepas ibu bapa saya berkahwin semula, saya berkongsi bilik dengan dua kakak saya! Terperangkap di antara dua adik-beradik perempuan yang lucah, saya berulang kali disakiti dan dipenuhi dengan air mani mereka setiap hari… Arai Rima, Yokomiya Nanami","lastmod":"2025-12-14","duration":"00:28:17","url":"/play/18980383.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDRkMWIyYzIzNDRhNjRkNzAwMDJjMmM3NmM1YTM3NGYuanBn.cache","vod_id":19004393,"title":"YAL-132 Secara Rahsia Menjual Seks Curang Teman Wanita Kawan Saya - Kanna Shinozaki","lastmod":"2025-03-23","duration":"01:38:49","url":"/play/19004393.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNWZkYmY3YjllNDFhYTM4YTIyMWEyY2YyNmYxMTM2ZGIuanBn.cache","vod_id":18970036,"title":"HND-628 Seorang pendatang baru, kononnya seorang pelajar kolej seni liberal yang mengidolakan orang dewasa, bekerja sambilan di sebuah kedai pakaian dalam, tetapi sebaik sahaja dia menanggalkan pakaiannya, dia benar-benar menakjubkan! Dia mempunyai tubuh bogel yang sempurna, dan kini dia secara rasminya membuat debut dengan penampilan sulung AVnya yang berkrim!! Aoi Tojo","lastmod":"2025-12-14","duration":"02:28:33","url":"/play/18970036.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MTAvNGViN2UxOTg2YWI5MGMxZGVkN2FmZmZmYjU0MzhiNTguanBn.cache","vod_id":19037815,"title":"Seorang gadis nakal yang montok dan berperut buncit menjadi mainan korban di sekolah—pesta pora liar berkulit gelap dan daging bejat yang diserang oleh cecair putih—anime.","lastmod":"2025-06-10","duration":"27:01","url":"/play/19037815.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDE1OGRkNjUzY2QwMDQ4NjQxZWUzY2VlZDBlODEzMGQuanBn.cache","vod_id":18987695,"title":"[Sarikata Bahasa Cina] CAWD-595 Rakan zaman kanak-kanak saya, Ichika, dari rumah sebelah, datang menggunakan bilik mandi saya selepas pemanas air saya rosak. Saya dapat melihat kulitnya yang berpeluh, menghidu syampunya, dan juga dapat melihat sekilas payudaranya yang kecil.","lastmod":"2025-12-14","duration":"01:55:12","url":"/play/18987695.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYWUzZmRjZTQ0N2ZhYTk0NDc2NmJhYTQ3YTllNDE3YzIuanBn.cache","vod_id":18960586,"title":"SDMU-396 Cermin Ajaib: Bertemu peminat kumpulan tarian lelaki yang teruja di konsert!","lastmod":"2025-03-22","duration":"03:53:20","url":"/play/18960586.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTQ1MjY0NmNhMGZkOGEwOWIwYjVmMDg4OTdjY2JlNWYuanBn.cache","vod_id":18978459,"title":"BBAN-411 Seorang graduan baru yang tidak tahu malu dan saya terlepas kereta api terakhir, dan akhirnya berkongsi bilik dengan seorang lesbian. (Penulis: Dinasti Qing Yamei; Air dan Kayu Semula Jadi)","lastmod":"2025-03-23","duration":"02:30:11","url":"/play/18978459.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvNjYzZjE0MmViOWYwOWIxZTY2NmQ0YTdmM2Y0OWJjZjguanBn.cache","vod_id":19162089,"title":"Eh, awak bohong ke…? Cuma seorang wanita biasa… satu perubahan yang tiba-tiba! Satu perubahan yang besar! Satu perkembangan yang luar biasa!! Awak tak percaya mata awak, MBM","lastmod":"2026-07-11","duration":"04:00:19","url":"/play/19162089.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjA3OWRhYWZjMWU4MDBkMjAzMDE5MDAyOTljMDIyZDcuanBn.cache","vod_id":18971442,"title":"[Tanpa Penapisan] 326NOL-010 [Badan ilahi yang memancut secara berterusan!!] [Payudara E-cup] Berbeza dengan penampilannya yang kemas, kelakuannya yang pemalu sangat mengujakannya.","lastmod":"2025-03-23","duration":"01:06:56","url":"/play/18971442.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTUvODNmMDdiOWQ0ZmJmNjA1ODMyODZmNzBkY2ZmMmIwNTUuanBn.cache","vod_id":19133907,"title":"Minum dengan seorang gadis seksi memang menyeronokkan, dan dia sangat seksi! Seorang wanita berbadan tegap dengan susuk tubuh yang sempurna, dalam keadaan mabuknya, tanpa belas kasihan membawa seorang lelaki yang tunduk ke puncak syahwat. (Qing Gong Ren Ai EBWH-243)","lastmod":"2025-12-17","duration":"02:40:08","url":"/play/19133907.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZGQ5YjE2MWVhNGZmNzhlZDE0OTc3YzM0YTFmYWY0ODYuanBn.cache","vod_id":19152111,"title":"Insiden NTR sepenuhnya: isteri saya yang memakai I-cup tercinta dimanjakan oleh keinginan seorang lelaki pertengahan umur. Adegan yang mengejutkan: isteri saya di kawasan kejiranan JUR-580","lastmod":"2026-04-07","duration":"02:04:17","url":"/play/19152111.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDY5YmViMjIzYzczYmU4MDc1YjU0MDkxODgzMzA2YjAuanBn.cache","vod_id":19015206,"title":"Rakam aksi seks lakonan peranan yang intim seorang gadis pendek dan menarik!! cd2.","lastmod":"2025-03-24","duration":"08:04","url":"/play/19015206.html"}]},
videoTitle: 'GS291 Saya pergi melawat seorang rakan, dan ada seorang gadis cantik di sebelah saya; saya dapat melihat seluar dalamnya. Saya sangat teruja sehingga saya merenungnya. Dia memegang perutnya dan kelihatan seperti sedang kesakitan. Saya bertanya kepadanya sama ada dia baik-baik saja dan cuba membantunya.',
language: 'ms',
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('Pautan disalin!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Pautan disalin!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Pautan disalin!');
}
}
},
// 切换布局
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=/`;
}
};
}