TPNS025 melakukan kencan seks anal terbalik dengan seorang cosplayer cross-dressing yang sangat cantik [ciuman mesra instan dan seks oral timbal balik], penetrasi dalam dan disetubuhi dengan keras.
Seks oral mahasiswi itu begitu bergairah, sampai-sampai sangat dalam. Rasanya aku rela hidup beberapa tahun lagi untuk dilayani oleh wanita secantik itu.","lastmod":"2026-07-11","duration":"","url":"/play/19207377.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODhjMjE3ZTE2ZTQxNzJkMWJlZTc5OTlmNjFkNmZiY2UuanBn.cache","vod_id":19098351,"title":"7. Aku melihat ibu tiriku melakukan seks oral pada temanku... Temanku sering datang berkunjung akhir-akhir ini!","lastmod":"2025-03-26","duration":"3:40:07","url":"/play/19098351.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZTYzMzE5Yzc4N2NiMjY0ZTY1ZmYzZjlmZjVjZDMzZDcuanBn.cache","vod_id":19041602,"title":"APKH-137 [Orgasme Instan, Pelacur Polos] Seorang gadis cantik berseragam anggun menunggangi penis raksasa dan berejakulasi liar. Seks menyimpang. Sakino Koharu.","lastmod":"2025-03-26","duration":"2:26:45","url":"/play/19041602.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMTcvNGRhNTlhZThiYTFhMWMzNmQxNjcxMjU0Nzk5NDFjOWIuanBn.cache","vod_id":19159641,"title":"[Bahasa Mandarin] VENZ029 Seorang istri yang sangat haus seks merayu penis besar dengan ciuman Prancis yang penuh gairah dan seks oral yang lihai, menyebabkan penis tersebut berejakulasi.","lastmod":"2025-10-16","duration":"1:41:09","url":"/play/19159641.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZGZmYmNjZDBiNjAwM2QyZDNmOTA3YTNhZWRlZmEyNzAuanBn.cache","vod_id":19032777,"title":"[Gadis Tionghoa melayani pria kulit hitam mesum] Penis pria kulit hitam ini sangat besar, bahkan tidak muat di mulut kecilnya saat seks oral. Dia menyuruh pria itu menghisap dan merangsang vaginanya, lalu menindihnya dan menggaulinya dari atas, meregangkan vaginanya hingga hampir pecah.","lastmod":"2025-03-26","duration":"0:38:57","url":"/play/19032777.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDgzN2NlOTdhOGUxNTdkYjAyYWQ0YWVmNDJmZjExMmQuanBn.cache","vod_id":19173071,"title":"Seorang pramugari yang pulang kampung menantang dirinya sendiri untuk ciuman mesra pertama di depan umum dengan seorang perawan!? Bibir indah pramugari itu terkunci dalam ciuman lidah ke lidah yang penuh gairah dan intens. (Aktris tidak dikenal SKMJ-666)","lastmod":"2026-01-10","duration":"3:18:18","url":"/play/19173071.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MTcvMTNhMjVhNzhjZTVkMDBlY2ZiMTdkMzgxNzAyZTQ5NTEuanBn.cache","vod_id":19149791,"title":"MIKR008 \"Hei, apakah kamu ingin melakukan sesuatu yang nakal dengan gurumu?\" Seorang guru perempuan cantik dan saudara perempuannya memiliki kencan manis sepulang sekolah, mengambil keperawananmu.","lastmod":"2025-08-16","duration":"2:30:31","url":"/play/19149791.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNTU4ZjY4YWE0Y2U0ZTFhYWU0ZTNlNDY4ZTA1YzA5NDYuanBn.cache","vod_id":19094811,"title":"Berhubungan intim dengan gadis cantik, seks oral, menjilat, menunggangi, dan berhubungan seks.","lastmod":"2025-03-26","duration":"1:20:31","url":"/play/19094811.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNTY0OWJmZTY4ZTY1OTQ5Y2FkMzE3NzQxYjU1MDE4YTIuanBn.cache","vod_id":19090041,"title":"Pertunjukan Aneka Ragam Amatir: Seorang perawat sungguhan menerima tantangan memeras sperma! Masturbasi dan melakukan seks oral dengan penis yang besar dan perkasa.","lastmod":"2025-03-26","duration":"2:40:17","url":"/play/19090041.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNzRiNjA0YTNmZjFiY2MxYjAxZWY3M2M1OGFhYTcxMTYuanBn.cache","vod_id":19187482,"title":"Pria blasteran ini sebenarnya orang Tionghoa. Penisnya terlalu besar untuk masuk, jadi gadis itu berteriak dalam bahasa Mandarin, \"Aku akan mati!\" Saat seks oral, penisnya hanya bisa didorong ke samping wajahnya.","lastmod":"2026-03-19","duration":"0:17:26","url":"/play/19187482.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYTBmMDY3MWJiY2E3OWE3ZDgxOTQ1YzAxYTcyMzI4N2IuanBn.cache","vod_id":19038532,"title":"Seks oral di ruang tamu yang gelap &lsquo \"Seri Pendidikan Seks Ibu Tiri\" &rsquo S3:E6","lastmod":"2025-03-26","duration":"0:34:57","url":"/play/19038532.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOTQ2M2ZkOGUwOGE0ZTI2NmFhMzU4NThlMzY5MzZjZGEuanBn.cache","vod_id":19077434,"title":"Bos perempuan saya, Ayaka, mengajak saya berlibur. Kami pergi berkencan, berciuman, dan berbicara tentang cinta.","lastmod":"2025-03-26","duration":"3:35:30","url":"/play/19077434.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNmM2YjQ2MWY4YjUwNmZiNDIzNTU1ZWUyMzFmODQ2YzguanBn.cache","vod_id":19035873,"title":"Wanita cantik berkaki panjang bak dewi itu diperkosa secara brutal bahkan sebelum dia selesai melepas pakaiannya, sambil berteriak: \"Aku tidak tahan lagi, aku kram!\" Rambut kemaluannya sangat lebat, aku hanya ingin memperkosanya dengan keras!","lastmod":"2025-03-26","duration":"0:56:23","url":"/play/19035873.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNGUxZDZiNDI3MzIzNDg1NThiYTI1YzUxMjE1YzM5MjQuanBn.cache","vod_id":19032961,"title":"[Anak Kucing Imut] Kemeja putih dan stoking hitam, wajah terbuka, seks oral yang penuh gairah, deep throat, pelayanan penuh perhatian dari pacar, menjilat vagina, menggoda klitoris dan jerawat.","lastmod":"2025-03-26","duration":"0:24:35","url":"/play/19032961.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOWM0YTlhOWE1YTI1ZTI1ZTZhMTQzMzU3OTVkNzJmNTguanBn.cache","vod_id":19035159,"title":"Xiao Bao mencari seorang wanita panggilan berpayudara besar dan manis yang mengenakan celana putih. Kamera memperbesar gambar wanita itu untuk adegan seks oral, lalu menusuknya dari belakang sambil memegang pinggangnya, dan akhirnya, dia menungganginya sambil menggerakkan pinggulnya seperti mesin bor.","lastmod":"2025-03-26","duration":"0:55:53","url":"/play/19035159.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvODI0NTUyZDM1ZDhjNWEzZDA4ZTM1ZmI2MzZlMzhlMDEuanBn.cache","vod_id":19185035,"title":"Seorang wanita masokis tanpa bra dengan kepribadian submisif menjalani kencan yang memalukan dengan \"Flying Fish Gear\" CEMD-791","lastmod":"2026-03-07","duration":"2:33:23","url":"/play/19185035.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZDc5YWMzYjhiMzM1NGZmNTZlMWMyY2FlMWU0ZTMwNGMuanBn.cache","vod_id":19105198,"title":"Kemampuan seks oral yang luar biasa dari seorang gadis bar!","lastmod":"2025-03-26","duration":"0:16:55","url":"/play/19105198.html"}]},
videoTitle: 'TPNS025 melakukan kencan seks anal terbalik dengan seorang cosplayer cross-dressing yang sangat cantik [ciuman mesra instan dan seks oral timbal balik], penetrasi dalam dan disetubuhi dengan keras.',
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=/`;
}
};
}