Mengobrol dan merayu orang asing, memaksa mereka mengoleskan pasta gigi, memperlihatkan wajah mereka, melakukan seks oral, menjilat anus mereka, dan berejakulasi dalam hitungan menit.","lastmod":"2026-07-11","duration":"01:38:19","url":"/play/19154170.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTExMDQvNjE1YmQ3OWJjOTkwZjAwNzYyMjNlMGFmMTFiNDlkNDYuanBn.cache","vod_id":19104121,"title":"Seorang wanita tua yang tinggi, berkulit putih, dan cantik dengan kaki panjang diundang ke sebuah hotel. Pria itu bermain-main dengan tubuhnya yang indah, dengan kuat menopang kakinya yang panjang dan mendorong dengan cepat.","lastmod":"2025-11-03","duration":"52:34","url":"/play/19104121.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNWM4ZmZmYzUzNTZkZWFjMzBkMWUyZWJiMTQyY2IwMTMuanBn.cache","vod_id":19064656,"title":"MUKC037C Adikku yang mesum dan seorang gamer otaku mengizinkanku menggunakan alat kelaminnya kapan saja saat aku bermain game.","lastmod":"2025-03-29","duration":"02:20:00","url":"/play/19064656.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMzgxZmVjZDgwYjU5OTAzZTBkMDViNjY4ZmFmNTU3N2MuanBn.cache","vod_id":19050216,"title":"Tantangan TMY0030 inci untuk 5 pramugari dengan stoking hitam!","lastmod":"2025-03-29","duration":"23:45","url":"/play/19050216.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MTgvYWU5M2E2MDYwOWMzZmZiNjkzYzY4ZWUyN2FhNmU5MTYuanBn.cache","vod_id":19084647,"title":"Seorang bibi yang kesepian dan bercerai, terjebak dalam hubungan inses keluarga, mengenakan stoking dan pakaian dalam hitam lalu melakukan inses dengan keponakannya di rumah.","lastmod":"2025-07-17","duration":"08:18","url":"/play/19084647.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZWVkYzRlZWY1ZmUxM2JiNTJhOWY2OTU2ZTQzNjc2YjguanBn.cache","vod_id":19142718,"title":"Gaun tidur seksi Nuomibaby dan stoking hitam, akankah itu membuatmu ejakulasi?_Hari ini kau adalah jalang kecil tuanmu, nikmatilah.","lastmod":"2026-05-12","duration":"10:06","url":"/play/19142718.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA2MTMvOWMxZjc3ZTlkOTNlMzgyMzMxMGYwOGNiMThjZTE3ZTMuanBn.cache","vod_id":19149060,"title":"Piala Emas Raja Laut Menghadirkan Dewi Pendamping Kelas Atas: Berkulit putih, Cantik, Bermata besar, dan Terlibat dalam Pertemuan Seksual yang Penuh Gairah.","lastmod":"2026-06-12","duration":"47:50","url":"/play/19149060.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9zYnp5dHBpbWc0LmNvbTozNTE5L3VwbG9hZC92b2QvMjAyNjAyMjctMS8xNTI4Mjk4ZTAxM2MxN2JjYTRlMDU3NzY0NmEwYzJmYS5qcGc=.cache","vod_id":19127218,"title":"Sebuah video yang memperlihatkan seorang model Shanghai berhubungan seks dengan seorang \"sugar daddy\" di depan jendela hotel karena hasrat seksual yang tidak terpenuhi telah bocor.","lastmod":"2026-02-27","duration":"02:27","url":"/play/19127218.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MDUvZGM4YmRjZGZmNTk0ZTg0NWYwNGUwYzZmZjdmNWZmYzkuanBn.cache","vod_id":19093712,"title":"Wanita Jalang Memburu Pria - Seorang wanita murahan yang ingin ditusuk dan melakukan seks oral #Harumi Fujita SGOR013","lastmod":"2025-09-04","duration":"01:28:19","url":"/play/19093712.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MTIvZTBmYTg4YTU2NGM4ZTJhOTM1NTJkMzUzYWM0MzkyODIuanBn.cache","vod_id":19089290,"title":"Dewi cantik Lingling terjun ke industri film dewasa dalam sebuah kontras yang mengejutkan, mengenakan stoking dan menggunakan alat bantu bergetar untuk masturbasi – sungguh cabul.","lastmod":"2025-08-11","duration":"29:50","url":"/play/19089290.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDNmZWE0NWIzYjI2NWNjYzViMGNmYTc3NDE2YjJhZjYuanBn.cache","vod_id":19124999,"title":"Gadis yang memijatku di panti pijat ternyata adalah seseorang yang kukenal! Dia berkata, \"Tolong rahasiakan ini,\" jadi aku memintanya melakukan seks oral padaku, dan kemudian aku memintanya... (Kalimatnya tidak lengkap dan berakhir tiba-tiba).","lastmod":"2026-02-16","duration":"02:02:35","url":"/play/19124999.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNTY3Y2NiY2RkN2UwNGRhODU5MWU2NTFlNjUzMTUxNTEuanBn.cache","vod_id":19025824,"title":"Loli harimau putih yang memesona, bercinta tanpa kondom, meledakkan lubang lembutnya!","lastmod":"2025-03-29","duration":"08:00","url":"/play/19025824.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNWRiZTVkOTIzMDZkMWYwNjc2MmI5ZjQwNGM3NDJjZTQuanBn.cache","vod_id":19014215,"title":"Seks intens dengan dewi atletis papan atas!","lastmod":"2025-03-28","duration":"07:55","url":"/play/19014215.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNjUwN2E1YmVhZGUzN2I4MTYzNWQ4ODU4ZjRkMThjNDAuanBn.cache","vod_id":19119154,"title":"Kisah Seksual Mahasiswi Modis Akademi Seni Platinum dengan Pacarnya Terungkap: Pinggul Indah Berbentuk Buah Persik, Perilaku Mesum Tanpa Batas di Ranjang","lastmod":"2026-01-18","duration":"08:08","url":"/play/19119154.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMTYvMzBjN2NlMWNlMTg3NTM5OTgyMjZjZmI2ZDEyYTRiNzAuanBn.cache","vod_id":19101010,"title":"Kisah cinta kemarin adalah lambang keindahan.","lastmod":"2025-10-15","duration":"01:16:34","url":"/play/19101010.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvM2ZlMjA0MGVlZWVmMDgxZjA5Njg4NmIwMzBmMThkMjAuanBn.cache","vod_id":19025521,"title":"Model wanita berkaos kaki hitam mengerang dan berhubungan seks di hotel!","lastmod":"2025-03-29","duration":"23:27","url":"/play/19025521.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjA0YjJmOGU0NWNjMmQ4OTZkZWZiODJlNmI4NjQ1ODEuanBn.cache","vod_id":19043581,"title":"Seorang ibu tiri cabul yang menculik anak tirinya saat suaminya pergi - para pemerannya termasuk Sumire Mihara, Miki Matsuzaka, dan Yurika Aoi.","lastmod":"2025-03-29","duration":"04:02:45","url":"/play/19043581.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZmI1ODE5NzI4YzdlZWFjYTFjMzg0MzI1NWRlOGJmYWMuanBn.cache","vod_id":19037352,"title":"[Skandal Internet] Versi Lengkap Eksklusif \"Skandal Kepala Perawat 3P\": Gangbang Wanita Cantik Berkaos Kaki Hitam, Rekaman Pribadi Asli dalam Ultra HD 1080P","lastmod":"2025-03-29","duration":"14:35","url":"/play/19037352.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA1MjIvODE1ODc3YTI4MzIwMGE1OTA1OWZiYzNmNmVkZWJmMjEuanBn.cache","vod_id":19075095,"title":"HMN468, kau pria beristri yang mencoba merayuku. Begitu aku tahu kau sudah menikah, aku pasti akan membuatmu berselingkuh dan berhubungan seks denganku.","lastmod":"2025-05-22","duration":"02:00:47","url":"/play/19075095.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMGQ0NGE0Yzc2ODJjZDNjMmYzNzEzY2I3OWUxOTQ5YmMuanBn.cache","vod_id":19117600,"title":"Seorang pemuda tampan, yang dikenal karena penampilannya yang menawan, sedang berhubungan seks dengan seorang mahasiswi yang mengenakan stoking hitam mencolok, yang terus mengeluarkan suara-suara sugestif dan mengerang.","lastmod":"2026-01-10","duration":"19:31","url":"/play/19117600.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOWVlZTIzYjBhMjFiNzQ5Nzg1Y2Q1NWYwMzRiOTMwOGUuanBn.cache","vod_id":19004089,"title":"Seorang wanita jalang dengan tubuh sempurna ditusuk dan dikencingi sekali.","lastmod":"2025-03-28","duration":"20:51","url":"/play/19004089.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMDIxMDI3Yjg5NTBlZTllNTU4NDI2ZmU2YjFlOTNhOWMuanBn.cache","vod_id":19057294,"title":"MUDR090 Inaba Ruka yang tulus namun cabul dari Kaede Nami...","lastmod":"2025-03-29","duration":"01:50:52","url":"/play/19057294.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjI5ZWZjMjc3YzU3MGE5ZjdmZDc5ZWJlMzdmYTlkYTcuanBn.cache","vod_id":19063403,"title":"IPZZ084C Seorang guru cabul dengan rok ketat menggoda penis kita dengan kakinya yang sempurna.","lastmod":"2025-03-29","duration":"02:28:53","url":"/play/19063403.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMzIxOWNlZjIyNTk1YTk5MDBjZWNjZjM3Y2UwNjc3ZWQuanBn.cache","vod_id":19050934,"title":"Seorang mahasiswi muda akan melakukan pertunjukan akrobatik, [berkulit putih, cantik, dan berambut merah muda], kakak, berikan padaku, sebuah telur getar untuk masturbasi dan ejakulasi.","lastmod":"2025-03-29","duration":"03:03:21","url":"/play/19050934.html"}]},
videoTitle: 'Wanita dewasa berkaos kaki hitam yang menawan merayu bayiku dan membuatku ejakulasi.',
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=/`;
}
};
}