CEMD-783 Tugas Cabul Seorang Setiausaha Urusan Keinginan Seksual: Seorang Wanita Pejabat Berdada Besar Dirogol Sehingga Orgasme dan Inkontinens oleh Bosnya
Pasangan lesbian tulen jatuh! Pelajar bergilir-gilir meniduri mereka sehingga mereka keluar air mani di dalam badan mereka seperti tandas daging. Tenma Yui, Kashiwagi Konatsu","lastmod":"2026-07-11","duration":"","url":"/play/19245916.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvY2JhNjFjZDBkZTc2YjE1ZDgzMzBiNmY3MzBmNGQwODkuanBn.cache","vod_id":19145987,"title":"Seorang remaja berusia 18 tahun dengan payudara G-cup yang sangat besar. Payudaranya yang berwarna merah jambu dan terlalu sensitif tidak dapat menahan diri daripada memancut dengan banyak, sehingga menghasilkan aliran air mani yang pekat pada payudaranya yang bersaiz sederhana dan gundukan G-cup. -cd1","lastmod":"2025-03-29","duration":"01:26:52","url":"/play/19145987.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODM3ZjExZWQzNjM5MmRjZGJjOTU3N2NiOWFlNjllZDYuanBn.cache","vod_id":19155717,"title":"MIAA-534 Tiga Hari Semasa Isteri Tiada: Menggunakan Anak Tirinya yang Berdada Besar sebagai Alat Permainan Seks - Seta Ichika","lastmod":"2025-03-29","duration":"01:59:23","url":"/play/19155717.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvZWRkM2Q1YTczZDI5ZGFjZjdmYzc2N2JlN2IxZWZhYTQuanBn.cache","vod_id":19237040,"title":"Noriko Iioka, payudara besar dan punggung besar, air liur meleleh kerana panas, seorang suri rumah yang nakal merayu untuk seks yang baik.","lastmod":"2026-05-24","duration":"2:04:56","url":"/play/19237040.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDg0MDE1OWQ2OGMyMTU5YTM3OWFkMmVjZTgyYjM2NGUuanBn.cache","vod_id":19228439,"title":"Nana E-cup Semula Jadi! Si payudara besar yang menggerunkan diseksa tanpa henti, farajnya memancut dan mencapai klimaks.","lastmod":"2026-04-10","duration":"0:35:19","url":"/play/19228439.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MTEvNmRlOWE4MmJmZWE1M2ZjMmY2YmM1OGQzNDFmYjA0YzYuanBn.cache","vod_id":19247075,"title":"Enai Moeka, dengan lengan baju yang comel dan kaki yang cantik, disakiti dengan kejam dan dimandikan! Seorang gadis muda yang tunduk dalam cosplay, berpakaian lengkap, menjadi tertakluk kepada hubungan seksual yang sengit.","lastmod":"2026-07-17","duration":"","url":"/play/19247075.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvZmZiY2Q3NWI2N2Q2MWE4NTdlOTg0N2Q3NTVmMmM4NDQuanBn.cache","vod_id":19223097,"title":"Miracan, seorang wanita berpayu dara besar yang memukau di sebuah pulau terpencil, di-fuck secara kejam dan pancutan mani di dalam dirinya sambil mengerang dengan penuh nafsu.","lastmod":"2026-03-21","duration":"0:08:26","url":"/play/19223097.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNWRiMWVkNWE0YzU2YzcxZjBhZmNjNzA5OWNkOWQxNTguanBn.cache","vod_id":19087021,"title":"TPPN-015 Terkedu di bawah beban kelucahan, terpikat oleh nafsu yang tidak berkesudahan. Yui Hatano","lastmod":"2025-03-29","duration":"01:55:42","url":"/play/19087021.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZDIwMDdhODlkZjIwNjE2ZDZjNjUxMmNlYWFlZDUyM2QuanBn.cache","vod_id":19055097,"title":"\"Saya juga mahukan anak!\" seorang guru taska yang berdada besar bercerita kepada rakan sekerja lelakinya. Keinginannya untuk hamil begitu kuat sehingga dia akan melancap sambil menyusukan anaknya! Dia memasukkan zakar muda ke dalam dirinya, payudaranya yang besar bergegar dengan kuat, berulang kali merayu untuk penembusan!","lastmod":"2025-03-28","duration":"","url":"/play/19055097.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMDczMjg5YzI1ZmNjNTJlNjQxNTJhMmRjNTM1ZjZiODkuanBn.cache","vod_id":19136377,"title":"Seorang jelita berambut pendek setinggi 168cm yang menakjubkan kembali, menjilat faraj seksinya dengan stoking hitam dan kakinya yang cantik, menunggangnya dan meniduri punggungnya yang cantik, menarik stokingnya ke atas dari belakang.","lastmod":"2025-03-29","duration":"","url":"/play/19136377.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNDFjZDAwNDIwOGE4NDg0NjE1N2RjY2Q0Zjg1NDNkZjkuanBn.cache","vod_id":19106708,"title":"Adakah HIKR-205 memilih seorang lelaki Jepun sebagai pasangan—seorang pemain bola keranjang seperti model dengan ketinggian lebih 190cm yang ditemuinya di Los Angeles—untuk melegakan keinginan seksualnya? Olivia (22 tahun)","lastmod":"2025-03-29","duration":"","url":"/play/19106708.html"}]},
videoTitle: 'CEMD-783 Tugas Cabul Seorang Setiausaha Urusan Keinginan Seksual: Seorang Wanita Pejabat Berdada Besar Dirogol Sehingga Orgasme dan Inkontinens oleh Bosnya',
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=/`;
}
};
}