Amateur Variety Show: Shy, Beautiful-Breasted College Student Only! One person endures continuous nipple play from behind while the other rubs their bare buttocks to make the other ejaculate – prizes await! (Saturday Video)","lastmod":"2026-07-11","duration":"02:59:49","url":"/play/19165726.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MTAvZmE5ZWZkYzkxNmVmN2RlZGI0ZDVmYjlkZjUyZTlkYzEuanBn.cache","vod_id":19037607,"title":"345SIMM-831 Minami (18 years old) Homecoming Club [Currently a third-year student at Metropolitan High School] [Super beautiful E-cup breasts developed during separation] [Intense oral sex techniques and nipple games]","lastmod":"2025-06-10","duration":"01:10:54","url":"/play/19037607.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA1MTMvOWI1ZDgzZTAyOGY5MmEwYzk5MTkxNjA1OTI0Mzc5YTMuanBn.cache","vod_id":19163326,"title":"Former Model Exclusive Male Actor Young Man Ah Bin's Betel Nut Stand Part-Time Girl 3P Full Record","lastmod":"2026-07-11","duration":"55:24","url":"/play/19163326.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MTEvMjIzN2NlN2MxYzQ3OWViMDhjODZmYmUzZTg3MWEwOTguanBn.cache","vod_id":19037945,"title":"The live streamer, nicknamed \"Little Fairy,\" showed off the school beauty Duo Duo's incredibly pink and tender breasts.","lastmod":"2025-06-11","duration":"21:08","url":"/play/19037945.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA5MjYvNzA1Yzg0MzQyODBiNTdjZmM0YjkyZTZmZGQ4NGJjY2UuanBn.cache","vod_id":19054195,"title":"Busty, slutty housewife engages in a passionate encounter.","lastmod":"2025-09-25","duration":"19:31","url":"/play/19054195.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjIxOTNkNjI2MzI4NTUzNmY3NjQyYjIxZjMzMDNjMzkuanBn.cache","vod_id":18988227,"title":"MIDE-726 Infinite Piston Jet Screaming Climax: An ordinary-looking girl with large breasts applies for a part-time job at an imported goods store—she is forced to wear obscene clothing that exposes her breasts, and the store clerk won't let her leave! Miura Sakura.","lastmod":"2025-12-14","duration":"01:57:32","url":"/play/18988227.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYWU2YmM0NjRkZWJlOGFkZmZkODQzMGY1NDE1YTI2M2UuanBn.cache","vod_id":18935002,"title":"Clean, fair-skinned, big-breasted Lulu, a young woman, has a 4P session with three men in a hotel. One man takes pictures of two of them, and after they're done, they switch to another young woman. She's not old, but she's very durable. 1080P original version.","lastmod":"2025-12-14","duration":"00:14:05","url":"/play/18935002.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEwMTAvZGQ3OTgxZWMwMWY0YWNjNDZhZDM3NmMyMjNmYmE4N2QuanBn.cache","vod_id":19057027,"title":"Model - Part-time Housekeeper - I'll Clean Up My Employer's Huge Penis Again - Xu Yiran","lastmod":"2025-10-09","duration":"29:28","url":"/play/19057027.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MTQvNzVlNmE0NjNmYzQ2MmRhMWZjNzg3MzVjNThmZTQ0ZTYuanBn.cache","vod_id":19038194,"title":"MIDV600, a busty new office lady hired through a pillow relationship, is my sexual harassment urinal. I am teaching her to experience the pleasure of having her penis sucked by a perverted old male client.","lastmod":"2025-06-14","duration":"02:16:28","url":"/play/19038194.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2QwMGJjNDY5ZjE1YmU4YzNhYjkzZGExODMzNjE3M2IuanBn.cache","vod_id":18943298,"title":"OYC-214_B A timid part-time employee suffers daily sexual harassment, too afraid to speak up even when touched! Eventually, she senses it but cannot refuse the assault! Worse still, she pretends not to feel anything, reaching orgasm again and again! Part Two","lastmod":"2025-12-14","duration":"01:26:27","url":"/play/18943298.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNDZmZmFmMjY3NjQ4ZWI4YTc4NGI5ODQwMjE0ZWUwYmIuanBn.cache","vod_id":19157102,"title":"Xin Xin, a female student who eats bananas, works part-time as a live streamer, and uses sex toys for masturbation.","lastmod":"2026-05-08","duration":"01:04:05","url":"/play/19157102.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMDM5YjljZjVhZWY4OWUyNGQ1Y2VmMGQ5ZWVkMDFjNWMuanBn.cache","vod_id":18990552,"title":"A beautiful, busty girl masturbates with a vibrator, her large breasts exposed as she inserts the vibrator into her vagina, pulling and vibrating. Her thick, pink pubic hair is incredibly alluring!","lastmod":"2025-03-23","duration":"02:17:01","url":"/play/18990552.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNjEwOTY5ZGJjOWIzYzQyMTgzZjE0YTRlMGI3MDUzNGMuanBn.cache","vod_id":18966634,"title":"SERO-356_B [Beautiful Breasts Summary] ~Godly Breast JK Hunt~ Disappointing! Serious Sex Falls into the Sky★Godly Breasts","lastmod":"2025-12-14","duration":"01:55:07","url":"/play/18966634.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOWM5ZDA4OTdkNzg2N2MzOGI3ZjEwNzRhYzNjMGRhMzkuanBn.cache","vod_id":19012098,"title":"Beautiful breasts and tender vagina, slutty little sister, extracting semen from her warm vagina in the early morning.","lastmod":"2025-03-24","duration":"13:04","url":"/play/19012098.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZGZmOGVmYTlmYTJkMWQxYmUxZWVkOWY3ZGFjNGUxMmQuanBn.cache","vod_id":19027036,"title":"A horny, busty housewife engages in intense sex—even after she can't get hard anymore, she still wants more.","lastmod":"2025-03-29","duration":"19:31","url":"/play/19027036.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjlmZGRkNDY3Y2I4MDg1NGUxODA1YjFiYWVlMzRlOTYuanBn.cache","vod_id":19025181,"title":"Massaging beautiful breasts and vulva with burning desire","lastmod":"2025-03-24","duration":"28:15","url":"/play/19025181.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvODc0YjUzYWE2OGM5ZWNhOWJhOGI4ZDQxMTg1MzU0NzYuanBn.cache","vod_id":18989553,"title":"300MIUM-599 [I want to treat a super innocent female college student as my younger sister] I spent a lot of money to hire a super cute girl as a rental girlfriend → She changed clothes immediately → An ambiguous tent date → Secret uniform sex!! I thought she was just after money, but I didn't expect her to be a complete slut! Her innocent little hole was soaking wet! I tried my best to suppress my voice, but I couldn't help it... I screamed with orgasm again and again. : Paco Paco Women's University: A report on a trip with female college students for part-time work and impromptu sex in a truck tent. 117","lastmod":"2025-12-14","duration":"01:18:56","url":"/play/18989553.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MjkvMDY4YmE4MDRmYTkwZTljZmJmODJlMThkNjc2NGJlODUuanBn.cache","vod_id":19040652,"title":"A stunningly beautiful woman with fair skin and firm, perky breasts.","lastmod":"2025-06-28","duration":"34:59","url":"/play/19040652.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MDUvZTk0MzkxNTdhMTU0NTEzZTJmZjg2Y2U2YTNmYzgzNGUuanBn.cache","vod_id":19166771,"title":"HEYZO 3392 Big-breasted female college student, doesn't mind internal ejaculation - her bouncy H-cup breasts - Yoko Hosokawa","lastmod":"2026-07-11","duration":"47:50","url":"/play/19166771.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMzFmMDUwZTdmOTgwYTc0NjdjN2M1MmFiOTUxZDI4Y2IuanBn.cache","vod_id":19143703,"title":"Li Xunhuan, a campus beauty-level goddess with fair skin, exquisite breasts, and a truly stunning figure.","lastmod":"2026-02-16","duration":"30:18","url":"/play/19143703.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZjU3YjIxZmVjYmFmOGZlMzk2OWFkNTI4OGFkMTRlMTIuanBn.cache","vod_id":18981665,"title":"A girl with twin ponytails, beautiful breasts, and a tender vulva! Her bodice is lifted, and her breasts are kneaded! Her fair, shapely buttocks are raised, and her vulva is spread open from below, her clitoris rubbed as she moans and gasps.","lastmod":"2025-12-14","duration":"00:50:17","url":"/play/18981665.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvY2E0YzEyYjcyMzJlZWNjYmEyYzRjYWI1MzhhYjE1MzIuanBn.cache","vod_id":18939304,"title":"[First Release Online] College sophomore Yun'er in a gray bodysuit, suspender lingerie, black stockings, handjob, and breast play; her exquisite breasts are incredibly alluring. 720P HD.","lastmod":"2025-03-22","duration":"00:08:07","url":"/play/18939304.html"}]},
videoTitle: 'War Goddess Little Leo, 168cm tall, busty part-time girl',
language: 'en',
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('Link copied!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Link copied!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Link copied!');
}
}
},
// 切换布局
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=/`;
}
};
}