跳到主要内容
18+ 0597.ai PREMIUM VIDEO DIRECTORY
个人中心
视频首页 热播排行
视频一区
视频一区全部分类 查看全部
精品推荐 主播秀色 日本有码 日本无码 中文字幕 童颜巨乳 性感人妻 强奸乱伦
视频二区
视频二区全部分类 查看全部
欧美情色 三级伦理 卡通动漫 丝袜OL 自拍偷拍 日本片商 剧情介绍 网曝系列
视频三区
视频三区全部分类 查看全部
同性恋 探花嫖娼 国产人妻 国产SM 国产丝袜 麻豆传媒 国产乱伦 明星换脸
视频四区
视频四区全部分类 查看全部
主奴调教 凌辱快感 多人群交 角色剧情 港台辣妹 重口性癖 变性伪娘 VR视角
玉兔资ç2)/40"> 玉兔资ç2)/40"> 玉兔资ç2)/40"> 玉兔资ç2)/40"> 玉兔资ç2)/40"> 玉兔资0"> €§伪娺q/a> n—nand afteread"> ‹iå_»d-nav" ariaoup nap nav-group-last"> अच्छा Lawrence amnti�¸t1<>s7†频åråega-menef="/list/4?sub_typ¥�छà50px; in hidden">¤›ा rhŒæpan>玉å
®N€)…H8¹f 2sdiMe n—/a> H8¹f 5e6 é‡2)/4 n全部 H8¹f ¾£妹<¨部 ¨ H8¹fft-¾£妹<¨éƒ2)/4 n全ét-¾£妹<¨éƒ2)/4 n全étœ>\-¾£妹xomNype4">ft-¾£b> -nav" aeédElade;_ Tl-scale=1"> 反差校花6位极品校older"> truth, teeenav-ie< <a href </th, te n全2b]ºä> <me n—nand a2607212334">ft-¾£妹<¨éƒ2电影 "> <2b]ºä> <me n—nand a26/40"></th, \-¾£妹xomNywidt \-¾£妹xomNywidt \etesidt \ete <div clas <div clas <div cl <title>反差校花6位极品校older"> truth, teeenav-ie< <a href </th, te n全2b]ºä> <me n—nand a2607212334">ft-¾£妹<¨éƒ2电影 "> <2b]ºä> <me n—nand a26/40"></th, \-¾£妹xomNywidt \-¾£妹xomNywidt \etesidt \ete <div clas <div cluywidt \-¾£å¦formulatede>反åetesidtheme-color" <div #fff7f4xomNywtitle>反差校花6位极品校花性爱私拍流出高冷温柔萝莉都是小母狗 第1集 - ytm3u8在线播放 - 0597.ai</titleatede>反åetesiddescription" <div 反差校花6位极品校花性爱私拍流出高冷温柔萝莉都是小母狗 第1集,ytm3u8在线播放。latede>反åetesidkeywords" <div 反差校花6位极品校花性爱私拍流出高冷温柔萝莉都是小母狗,第1集,ytm3u8,在线播放latedelink rel="icon" href="/static/favicon.svg" type="image/svg+xmllatedelink rel="stylesheet" href="/static/output2.css?v=202607212334latedelink rel="stylesheet" href="/static/style.css?v=202607212334latedelink rel="stylesheet" href="/static/ui-redesign.css?v=20260726-ui7latedelink rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.csslated </th, \-<body class="latedea class="skip-link" href="#main- <di">跳到主要内容</aatedeheader class="site-headerlatedediv class="shell header-mainlatededea class="brand" href="/" aria-label="0597.ai 首页lateded <span class="age-mark">18+</spanateded <span class="brand-copylateded <b>0597.ai</bateded <small>PREMIUM VIDEO DIRECTORY</small>teded </spanateded</aatteded<form class="header-search" action="/search" method="get" role="search">teded <label class="sr-only" for="siteSearch">搜索视频标题</label>teded <input id="siteSearch"åetesidwd" type="search" value="" placeholder="搜索视频标题" autocomplete="off">teded <button type="submit"><i class="fa-solid fa-magnifying-glass"></i><span>立即搜索</spana</button>teded</formatteded<div class="header-actions">teded <button class="header-action" type="button" data-open-history>teded <i class="fa-solid fa-clock-rotate-left"></i><span>播放记录</spanateded </button>tededed<div id="notLoggedIn" class="auth-actions">teded <button id="loginBtn" class="login-button" type="button" data-open-login>登录</button>teded <button id="registerBtn" class="register-button" type="button" data-open-register>注册</button>tededed</div>tededed<div id="loggedIn" class="user-menu" hidden>teded <button id="userMenuToggle" class="user-menu-toggle" type="button" aria-expanded="false">teded <span class="user-avatar" id="userAvatarFallback"><i class="fa-solid fa-user"></i></spanateded <span id="userDisplayName">用户</spanateded <i class="fa-solid fa-chevron-down"></i>teded </button>teded <div id="userMenuPanel" class="user-menu-panel" hidden>teded edea href="/user/profile"><i class="fa-solid fa-user-gear"></i>个人中心</aat <button id="logoutBtn" type="button"><i class="fa-solid fa-right-from-bracket"></i>退出登录</button>teded </div>tededed</div>teded</div>ted</div>ttedediv class="primary-row">teded<nav class="shell primary-nav unified-nav" aria-label="主导航与频道导航">teded ea class="mobile-nav-item" href="/"><span>视频首页</spana</aat ea class="mobile-nav-item" href="/ranking"><span>热播排行</spana</aat t t t ediv class="nav-group">teded ea href="/list/1">teded <span>视频一区</spanateded <i class="fa-solid fa-chevron-down"></i>teded </aat teded ediv class="mega-menu">teded <div class="mega-menu-head">teded <b>视频一区全部分类</bateded ea href="/list/1">查看全部</aat </div>tededededed<div class="mega-menu-grid">teded teded ea href="/list/1?sub_type=41">精品推荐</aat teded ea href="/list/1?sub_type=42">主播秀色</aat teded ea href="/list/1?sub_type=43">日本有码</aat teded ea href="/list/1?sub_type=44">日本无码</aat teded ea href="/list/1?sub_type=45">中文字幕</aat teded ea href="/list/1?sub_type=46">童颜巨乳</aat teded ea href="/list/1?sub_type=47">性感人妻</aat teded ea href="/list/1?sub_type=48">强奸乱伦</aat teded </div>tedededed</div>tededededteded </div>tedededtedededtedededtededed<div class="nav-group">teded ea href="/list/2">teded <span>视频二区</spanateded <i class="fa-solid fa-chevron-down"></i>teded </aat teded ediv class="mega-menu">teded <div class="mega-menu-head">teded <b>视频二区全部分类</bateded ea href="/list/2">查看全部</aat </div>tededededed<div class="mega-menu-grid">teded teded ea href="/list/2?sub_type=49">欧美情色</aat teded ea href="/list/2?sub_type=50">三级伦理</aat teded ea href="/list/2?sub_type=51">卡通动漫</aat teded ea href="/list/2?sub_type=52">丝袜OL</aat teded ea href="/list/2?sub_type=53">自拍偷拍</aat teded ea href="/list/2?sub_type=54">日本片商</aat teded ea href="/list/2?sub_type=55">剧情介绍</aat teded ea href="/list/2?sub_type=56">网曝系列</aat teded </div>tedededed</div>tededededteded </div>tedededtedededtedededtededed<div class="nav-group">teded ea href="/list/3">teded <span>视频三区</spanateded <i class="fa-solid fa-chevron-down"></i>teded </aat teded ediv class="mega-menu">teded <div class="mega-menu-head">teded <b>视频三区全部分类</bateded ea href="/list/3">查看全部</aat </div>tededededed<div class="mega-menu-grid">teded teded ea href="/list/3?sub_type=57">同性恋</aat teded ea href="/list/3?sub_type=58">探花嫖娼</aat teded ea href="/list/3?sub_type=59">国产人妻</aat teded ea href="/list/3?sub_type=60">国产SM</aat teded ea href="/list/3?sub_type=61">国产丝袜</aat teded ea href="/list/3?sub_type=62">麻豆传媒</aat teded ea href="/list/3?sub_type=63">国产乱伦</aat teded ea href="/list/3?sub_type=64">明星换脸</aat teded </div>tedededed</div>tededededteded </div>tedededtedededtedededtededed<div class="nav-group">teded ea href="/list/4">teded <span>视频四区</spanateded <i class="fa-solid fa-chevron-down"></i>teded </aat teded ediv class="mega-menu">teded <div class="mega-menu-head">teded <b>视频四区全部分类</bateded ea href="/list/4">查看全部</aat </div>tededededed<div class="mega-menu-grid">teded teded ea href="/list/4?sub_type=65">主奴调教</aat teded ea href="/list/4?sub_type=66">凌辱快感</aat teded ea href="/list/4?sub_type=67">多人群交</aat teded ea href="/list/4?sub_type=68">角色剧情</aat teded ea href="/list/4?sub_type=69">港台辣妹</aat teded ea href="/list/4?sub_type=70">重口性癖</aat teded ea href="/list/4?sub_type=71">变性伪娘</aat teded ea href="/list/4?sub_type=72">VR视角</aat teded </div>tedededed</div>tededededtededed</div>tedededtedededtedededtededed<div class="nav-group nav-group-last">teded ea href="/list/40">teded <span>玉兔资源</spanateded <i class="fa-solid fa-chevron-down"></i>teded </aat teded ediv class="mega-menu">teded <div class="mega-menu-head">teded <b>玉兔资源全部分类</bateded ea href="/list/40">查看全部</aat </div>tededededed<div class="mega-menu-grid">teded teded ea href="/list/40?sub_type=73">国产精品</aat teded </div>tedededed</div>tededededtededed</div>tedededtedededea class="nav-channel-link mobile-nav-item" href="/channel/china">中国频道</aat ea class="nav-channel-link mobile-nav-item" href="/channel/japan">日韩频道</aat ea class="nav-channel-link mobile-nav-item" href="/channel/western">欧美频道</aat ea class="nav-channel-link mobile-nav-item" href="/channel/ethics">剧情伦理</aat ea class="nav-channel-link mobile-nav-item" href="/channel/anime">动漫频道</aat ea class="nav-channel-link mobile-nav-item" href="/channel/alternative">另类专区</aat ea class="nav-channel-link mobile-nav-item nav-search-link" href="/search"at <i class="fa-solid fa-magnifying-glass" aria-hidden="true"></i>teded <spana搜索视频</spanateded </aat ea class="nav-channel-link nav-favorite-link" href="/user/profile">我的收藏</aat </nav>ted</div>t</th, er> ttedemain id="main- <di">t <div id="playerConfig" data-video-id="6a5234f8a762bc9f61b0a11d" data-video-titlev 反差校花6位极品校花性爱私拍流出高冷温柔萝莉都是小母狗" data-video-poster="https://imgdanaizi.com:8660/videos/202512/31/6954286b19cdad0bc464658c/poster2.jpg" data-video-year="" data-video-class="国产SM" data-episode-etesid第1集" data-play-source="0" data-play-index="0" data-need-vip="0" data-fallback-url="https://voddadaizi1.com:52866/videos/202512/31/6954286b19cdad0bc464658c/4gf6a8/index.m3u8"> </div>t <div class="shell page-shell"at <nav class="breadcrumb" aria-label="面包屑"at ea href="/">首页</a><span>/</spanatededea class="breadcrumb-current" href="/detail/6a5234f8a762bc9f61b0a11d">反差校花6位极品校花性爱私拍流出高冷温柔萝莉都是小母狗</a><span>/</spanatededespana播放</spanated</nav>t edeheader class="player-heading">tededediv>tededed<span class="eyebrow">NOW PLAYING · ytm3u8</spanateded <h1>反差校花6位极品校花性爱私拍流出高冷温柔萝莉都是小母狗 · 第1集</h1ateded <p>播放地址和 VIP 权限由站点接口实时验证。</pateded</div>tededea class="secondary-button" href="/detail/6a5234f8a762bc9f61b0a11d">返回详情</aat </th, er> t <section class="player-stage" id="playerStage" aria-label="视频播放区域"at ediv class="access-message" id="playerLoading">tedededediv>tededed <i class="fa-solid fa-circle-notch fa-spin"></i>teded <h2>正在验证播放权限</h2>teded <p>验证完成后自动载入播放器。</patededed</div>tedede/div>ted</section>ttedediv class="episode-controls">tededtededespan class="episode-etv disabled"><i class="fa-solid fa-chevron-left"></i> 上一集</spanatededtededespan>当前播放:<b>第1集</b></spanatededtededespan class="episode-etv disabled">下一集 <i class="fa-solid fa-chevron-right"></i></spanatededtede/div>ttedediv class="player-toolbar">tededep class="data-note">播放记录、收藏和点赞仅写入当前浏览器;VIP 状态由服务器返回。</patededediv class="detail-actions">teded <buttonteded class="local-action"teded type="button"teded data-video-favoriteteded data-video-id="6a5234f8a762bc9f61b0a11d" ded data-video-titlev 反差校花6位极品校花性爱私拍流出高冷温柔萝莉都是小母狗" ed data-video-poster="https://imgdanaizi.com:8660/videos/202512/31/6954286b19cdad0bc464658c/poster2.jpg" ed data-video-url="/detail/6a5234f8a762bc9f61b0a11d"> ed <i class="fa-regular fa-heart"></i><spana本机收藏</spanateded </button>teded <button class="local-action" type="button" data-video-like data-video-id="6a5234f8a762bc9f61b0a11d"> ed <i class="fa-regular fa-thumbs-up"></i><spana本机点赞</spanateded </button>teded <button class="secondary-button" type="button" data-share-titlev 反差校花6位极品校花性爱私拍流出高冷温柔萝莉都是小母狗"> ed <i class="fa-solid fa-share-nodes"></i>分享 ed </button>tedede/div>ted</div>ttededetails class=" <di-card source-switcher-card" data-source-switcher>tededesummary>teded espan class="source-switcher-title"><i class="fa-solid fa-list"></i>播放源与剧集</spanateded <strong>ytm3u8 · 第1集</strong>teded ei class="fa-solid fa-chevron-down" aria-hidden="true"></i>teded</summary>tededediv class="source-switcher- <di">t ediv class="source-tabs" role="tablist" aria-label="播放源">t teded <buttont id="playerSourceTab0" ed class="source-tab" ed type="button" ed role="tab" ed data-source-index="0" aria-selected="true" aria-controls="playerSourcePanel0">teded ytm3u8 </button>teded ed</div>tted ed ed<div id="playerSourcePanel0" class="episode-panel" role="tabpanel" aria-labelledby="playerSourceTab0" >t ediv class="episode-list">t ed ed<a ed ed href="/play/6a5234f8a762bc9f61b0a11d/0-0" data-source-index="0" data-play-index="0" class="active" aria-current="page">teded 第1集 </aat ed </div>ted </div>ted ted </div>ted</details>ttedttededl class="meta-grid">tededediv><dt>语言</dt><dd>未知</dd></div>ted <div><dt>类型</dt><dd>国产SM</dd></div>ted <div><dt>地区</dt><dd>未知</dd></div>ted <div><dt>年份</dt><dd>未知</dd></div>ted</dl>ttedesection class=" <di-section">tededediv class="section-head">teded <div><h2>相关推荐</h2><p>同分类内容继续浏览</p></div>teded <a class="section-more" href="/detail/6a5234f8a762bc9f61b0a11d">查看当前详情</aat </div>ted t <div class="video-grid">teded teded <article class="video-card">teded ea href="/detail/6ae05e163237f1729dcda9a0">teded <div class="cover-frame">teded <img src="https://sbzytpimg11.com/upload/vod/20261027-1/8f53bc9311d0e6ee80d7d44873fe7173.jpg" alt="青岛眼镜妹程熙瞳乖乖女成母狗含住我的鸡巴骚穴夹肉.棒轻车熟路封面" v clu="640" height="360" loading="lazy" decoding="async">teded teded <span class="cover-year">2026</spanateded </div>ted eded <h3>青岛眼镜妹程熙瞳乖乖女成母狗含住我的鸡巴骚穴夹肉.棒轻车熟路</h3>ted eded <div class="card-meta">teded <strong>国产SM</strong>teded <span>持续更新</spanateded </div>ted eded</aat </article>ted edted ed<article class="video-card">teded ea href="/detail/6ae05e163237f1729dcda9bb">teded <div class="cover-frame">teded <img src="https://sbzytpimg11.com/upload/vod/20261027-1/db13b9d2e968f784c4838edeb76005ce.jpg" alt="青岛科技大学林琦雪做小主播装清纯捞金主捞到后就现.出母狗原形封面" v clu="640" height="360" loading="lazy" decoding="async">teded teded <span class="cover-year">2026</spanateded </div>ted eded <h3>青岛科技大学林琦雪做小主播装清纯捞金主捞到后就现.出母狗原形</h3>ted eded <div class="card-meta">teded <strong>国产SM</strong>teded <span>持续更新</spanateded </div>ted eded</aat </article>ted edted ed<article class="video-card">teded ea href="/detail/6ae05e163237f1729dcda9ec">teded <div class="cover-frame">teded <img src="https://sbzytpimg11.com/upload/vod/20261027-1/61dd8843bfef862195727f57aa95f2b5.jpg" alt="青岛良家少妇张巧莉首次下海接客母狗姿势被狂操嫩.这才是最好的炮架子封面" v clu="640" height="360" loading="lazy" decoding="async">teded teded <span class="cover-year">2026</spanateded </div>ted eded <h3>青岛良家少妇张巧莉首次下海接客母狗姿势被狂操嫩.这才是最好的炮架子</h3>ted eded <div class="card-meta">teded <strong>国产SM</strong>teded <span>持续更新</spanateded </div>ted eded</aat </article>ted edted ed<article class="video-card">teded ea href="/detail/6ae05e163237f1729dcda9ed">teded <div class="cover-frame">teded <img src="https://sbzytpimg11.com/upload/vod/20261027-1/83c9f310b233cfdb61aedf6ca1f6b366.jpg" alt="青岛艺术院校露脸母狗苏心怡嫌弃在房间干不够刺激在.酒店楼道给男友疯狂后入封面" v clu="640" height="360" loading="lazy" decoding="async">teded teded <span class="cover-year">2026</spanateded </div>ted eded <h3>青岛艺术院校露脸母狗苏心怡嫌弃在房间干不够刺激在.酒店楼道给男友疯狂后入</h3>ted eded <div class="card-meta">teded <strong>国产SM</strong>teded <span>持续更新</spanateded </div>ted eded</aat </article>ted edted ed<article class="video-card">teded ea href="/detail/6adf0bc48b95c908cc4951dc">teded <div class="cover-frame">teded <img src="https://sbzytpimg11.com/upload/vod/20261026-1/60f619d1588d2b87053ba9d1501d9914.jpg" alt="双飞泄密富二代有钱任性包下母狗姐妹花叠在一起操既.省时间又省力气封面" v clu="640" height="360" loading="lazy" decoding="async">teded teded <span class="cover-year">2026</spanateded </div>ted eded <h3>双飞泄密富二代有钱任性包下母狗姐妹花叠在一起操既.省时间又省力气</h3>ted eded <div class="card-meta">teded <strong>国产SM</strong>teded <span>持续更新</spanateded </div>ted eded</aat </article>ted edted ed<article class="video-card">teded ea href="/detail/6adf0bc48b95c908cc49521c">teded <div class="cover-frame">teded <img src="https://sbzytpimg11.com/upload/vod/20261026-1/a4d71f53ea4b0aa05ea9a5f581f855d7.jpg" alt="双飞泄密广州大神双飞母狗姐妹花双倍的快乐两个嫩.换着插属实是有点羡慕了封面" v clu="640" height="360" loading="lazy" decoding="async">teded teded <span class="cover-year">2026</spanateded </div>ted eded <h3>双飞泄密广州大神双飞母狗姐妹花双倍的快乐两个嫩.换着插属实是有点羡慕了</h3>ted eded <div class="card-meta">teded <strong>国产SM</strong>teded <span>持续更新</spanateded </div>ted eded</aat </article>ted edted </div>ted ed</section>t</div>tted</main>ttedefooter class="site-footer">teded<div class="shell footer-grid compact-footer">tedededesection class="footer-about">t ea class="brand footer-brand" href="/" aria-label="0597.ai 首页lateded <span class="age-mark">18+</spanateded <span class="brand-copylateded <b>0597.ai</bateded <small>PREMIUM VIDEO DIRECTORY</small>teded </spanateded </aat <p>真实分类、频道、搜索、播放与本机记录。</patededed</sectionatededed<nav aria-label="频道入口">t eb>内容频道</b>t ea href="/channel/china">中国频道</aat ea href="/channel/japan">日韩频道</aat ea href="/channel/western">欧美频道</aat ea href="/channel/anime">动漫频道</aat e/nav>t <nav aria-label="内容发现">t eb>发现内容</b>t ea href="/ranking">热播排行</a>t ea href="/search"a内容搜索</aat ea href="/channel/ethics">剧情伦理</aat ea href="/channel/alternative">另类专区</aat e/nav>t <nav aria-label="用户服务">t eb>用户服务</b>t ebutton type="button" data-open-history>播放记录</button>teded ea href="/user/profile">我的收藏</aat ebutton type="button" data-open-login>登录账号</button>teded ea href="/terms">用户协议</aat e/nav>t </div>ted <div class="shell footer-bottom">t <span>© 2026 0597.ai</spanateded <span>ea href="/privacy">隐私政策</aa · ea href="/contact">联系我们</a></spanateded</div>ted</footer>tted<nav class="mobile-dock" aria-label="移动端快捷导航">tededea href="/"><i class="fa-solid fa-house"></i><spana首页</spana</aat ea href="/ranking"><i class="fa-solid fa-fire"></i><spana排行</spana</aat ea href="/search"a<i class="fa-solid fa-magnifying-glass"></i><span>搜索</spana</aat ebutton type="button" data-open-history><i class="fa-solid fa-clock-rotate-left"></i><span>记录</spana</buttonat ea href="/user/profile"><i class="fa-solid fa-user"></i><spana我的</spana</aat </nav>ttedediv class="modal" id="loginModal" role="dialog" aria-modal="true" aria-labelledby="loginTitle" hidden>tededediv class="modal-backdrop" data-close-modal="loginModal"></div>tededesection class="modal-card">teded ebutton class="modal-close" type="button" data-close-modal="loginModal" aria-label="关闭登录窗口">×</buttonat <span class="modal-kicker">欢迎回来</spanateded eh2 id="loginTitle">登录账号</h2ateded ep>登录后可使用 VIP 权限、卡券和个人中心。</patededed<form id="loginForm">t <label for="loginUsername">用户名</label>teded <input id="loginUsername"åetesidusername"åautocomplete="username"åminlength="3" maxlength="32" required>teded <label for="loginPassword">密码</label>teded <input id="loginPassword"åetesidpassword"åtype="password"åautocomplete="current-password"åminlength="6" maxlength="72" required>teded <p class="form-message" data-form-message></patededed ebutton class="primary-button" type="submit">登录</buttonat </format <button class="text-button" type="button" data-switch-modal="registerModal">没有账号?立即注册</button>teded</sectionated</div>ttedediv class="modal" id="registerModal" role="dialog" aria-modal="true" aria-labelledby="registerTitle" hidden>tededediv class="modal-backdrop" data-close-modal="registerModal"></div>tededesection class="modal-card">teded ebutton class="modal-close" type="button" data-close-modal="registerModal" aria-label="关闭注册窗口">×</buttonat <span class="modal-kicker">创建账号</spanateded eh2 id="registerTitle">注册新用户</h2ateded ep>用户名支持字母、数字和下划线,密码长度为 6-72 位。</patededed<form id="registerForm">t <label for="registerUsername">用户名</label>teded <input id="registerUsername"åetesidusername"åautocomplete="username"åpattern="[A-Za-z0-9_]{3,32}" required>teded <label for="registerEmail">邮箱</label>teded <input id="registerEmail"åetesidemail"åtype="email"åautocomplete="email"årequired>teded <label for="registerPassword">密码</label>teded <input id="registerPassword"åetesidpassword"åtype="password"åautocomplete="new-password"åminlength="6" maxlength="72" required>teded <label for="registerConfirmPassword">确认密码</label>teded <input id="registerConfirmPassword"åetesidconfirmPassword"åtype="password"åautocomplete="new-password"åminlength="6" maxlength="72" required>teded <p class="form-message" data-form-message></patededed ebutton class="primary-button" type="submit">注册并登录</buttonat </format <button class="text-button" type="button" data-switch-modal="loginModal">已有账号?返回登录</buttonat </sectionated</div>ttedeaside class="history-drawer" id="historyDrawer" hidden>tededebutton class="history-backdrop" type="button" data-close-history aria-label="关闭播放记录"a</buttonat esection class="history-panel" role="dialog" aria-modal="true" aria-labelledby="historyTitle" tabindex="-1" data-history-panelat <headerat edebutton class="history-back" type="button" data-close-history aria-label="返回上一页lateded <i class="fa-solid fa-chevron-left" aria-hidden="true"></i>teded <span>返回</spanateded </button>teded edediv class="history-title">teded <h2 id="historyTitle">播放记录</h2ateded edep>仅保存在当前设备</patededed e/div>teded edebutton class="history-close" type="button" data-close-history aria-label="关闭播放记录"ateded edei class="fa-solid fa-xmark" aria-hidden="true"></i>teded </buttonat </headerat ediv class="history-overview">teded <strong><span data-history-count>0</spana 条记录</strong>teded <span data-history-latest>暂无最近播放</spanateded e/div>teded <label class="history-search"at <i class="fa-solid fa-magnifying-glass" aria-hidden="true"></i>teded <span class="sr-only">搜索播放记录</spanateded <input type="search" data-history-search placeholder="搜索片名或剧集"åautocomplete="off">teded </label>teded ediv class="history-list-heading">teded <span>观看列表</spanateded <small data-history-results>0 / 0</small>teded e/div>teded <div class="history-list" data-history-list role="list" aria-live="polite"></div>teded defooter>teded edep><i class="fa-solid fa-mobile-screen-button" aria-hidden="true"></i>最多保留 30 条本机记录</patededed ebutton class="history-clear" type="button" data-clear-historyatededed edei class="fa-solid fa-trash-can" aria-hidden="true"></i>清空记录tededed e/buttonat </footer>teded</sectionated</aside>ttedediv class="toast" id="siteToast" role="status" aria-live="polite"></div>tt <script src="/static/js/analytics.js?v=20260726-track2" defer></script>t <script src="/static/js/app.js?v=20260726-ui3" defer></script>t <script src="/static/js/navbar.js?v=202607212334l defer></script>t <script src="/static/js/ui-redesign.js?v=202607212334l defer></script>t ted <script src="/static/js/hls.min.js"></script> <script> (() => { const config = document.getElementById("playerConfig"); const stage = document.getElementById("playerStage"); const nextLink = document.getElementById("nextEpisode"); const pendingPlayerEvents = []; let hls = null; let player = null; let trackingTimer = 0; let trackingAttempts = 0; function flushPlayerEvents() { trackingTimer = 0; if (window.FlowTrack?.track) { while (pendingPlayerEvents.length) { const event = pendingPlayerEvents.shift(); window.FlowTrack.track(event.name, event.properties); } return; } trackingAttempts += 1; if (pendingPlayerEvents.length && trackingAttempts < 100) { trackingTimer = window.setTimeout(flushPlayerEvents, 50); } } function trackPlayer(name, properties = {}) { const event = { name, properties: { video_id: config.dataset.videoId, authenticated: Boolean(localStorage.getItem("auth_token")), need_vip: Number(config.dataset.needVip || "0"), play_source: config.dataset.playSource, play_index: config.dataset.playIndex, ...properties } }; if (window.FlowTrack?.track) { window.FlowTrack.track(event.name, event.properties); return; } pendingPlayerEvents.push(event); if (!trackingTimer) trackingTimer = window.setTimeout(flushPlayerEvents, 0); } function durationBucket(seconds) { if (!Number.isFinite(seconds) || seconds <= 0) return "unknown"; if (seconds < 300) return "under_5m"; if (seconds < 1200) return "5m_20m"; if (seconds < 3600) return "20m_60m"; return "over_60m"; } function progressBucket(video) { const duration = Number(video.duration); const currentTime = Number(video.currentTime); if (!Number.isFinite(duration) || duration <= 0 || !Number.isFinite(currentTime)) { return "unknown"; } const percent = Math.max(0, Math.min(100, (currentTime / duration) * 100)); if (percent < 25) return "0_25"; if (percent < 50) return "25_50"; if (percent < 75) return "50_75"; if (percent < 90) return "75_90"; return "90_100"; } function authHeaders() { const token = localStorage.getItem("auth_token"); return token ? { Authorization: `Bearer ${token}` } : {}; } function savePlayHistory(video) { const key = "video_play_history"; let items = []; try { items = JSON.parse(localStorage.getItem(key) || "[]"); } catch (_) {} const record = { id: config.dataset.videoId, name: config.dataset.videoTitle, episode: config.dataset.episodeName || "正片", url: window.location.href, poster: config.dataset.videoPoster, watchTime: new Date().toISOString() }; const currentTime = Number(video?.currentTime); const duration = Number(video?.duration); if (Number.isFinite(currentTime) && currentTime >= 0) record.currentTime = currentTime; if (Number.isFinite(duration) && duration > 0) record.duration = duration; items = items.filter(item => item.id !== record.id); items.unshift(record); localStorage.setItem(key, JSON.stringify(items.slice(0, 30))); window.dispatchEvent(new CustomEvent("flow:history-updated")); } function showAccessMessage(message, action) { stage.replaceChildren(); const wrap = document.createElement("div"); wrap.className = "access-message"; const box = document.createElement("div"); const icon = document.createElement("i"); icon.className = "fa-solid fa-crown"; const title = document.createElement("h2"); title.textC <di = "VIP 播放权限"; const text = document.createElement("p"); text.textC <di = message; box.append(icon, title, text); if (action) box.append(action); wrap.append(box); stage.append(wrap); } function bindPlaybackTracking(video, mediaType) { const milestones = new Set(); let lastPlaybackTime = 0; let seekOrigin = 0; const playbackProperties = () => ({ media_type: mediaType, duration_bucket: durationBucket(Number(video.duration)), progress_bucket: progressBucket(video) }); video.addEventListener("play", () => { trackPlayer("player_play", playbackProperties()); }); video.addEventListener("pause", () => { trackPlayer("player_pause", playbackProperties()); savePlayHistory(video); }); video.addEventListener("seeking", () => { seekOrigin = lastPlaybackTime; }); video.addEventListener("seeked", () => { const currentTime = Number(video.currentTime); trackPlayer("player_seek", { ...playbackProperties(), direction: currentTime < seekOrigin ? "previous" : "next" }); if (Number.isFinite(currentTime)) lastPlaybackTime = currentTime; }); video.addEventListener("timeupdate", () => { const duration = Number(video.duration); const currentTime = Number(video.currentTime); if (!Number.isFinite(duration) || duration <= 0 || !Number.isFinite(currentTime)) return; const percent = (currentTime / duration) * 100; for (const milestone of [25, 50, 75, 90]) { if (percent < milestone || milestones.has(milestone)) inue; milestones.add(milestone); trackPlayer("player_milestone", { media_type: mediaType, milestone, duration_bucket: durationBucket(duration) }); } lastPlaybackTime = currentTime; }); video.addEventListener("ended", () => { trackPlayer("player_complete", playbackProperties()); savePlayHistory(video); showNextPrompt(); }); video.addEventListener("error", () => { trackPlayer("player_fatal_error", { media_type: mediaType, error_type: "media", error_code: video.error?.code ? `media_${video.error.code}` : "media_unknown", fatal: trueteded }); }); } async function startPlayback(video) { video.muted = false; try { await video.play(); return; } catch (_) {} video.muted = true; try { await video.play(); } catch (_) { video.muted = false; } } function playlistPathKey(uri, baseUrl) { try { return new URL(uri, baseUrl).pathnameteded .split("/") .filter(Boolean) .slice(0, 3) .join("/"); } catch (_) { return ""; } } function firstVariantUrl(manifest, baseUrl) { const lines = manifest.split(/\r?\n/).map(line => line.trim()); for (let index = 0; index < lines.length; index += 1) { if (!lines[index].startsWith("#EXT-X-STREAM-INF")) inue; const variant = lines.slice(index + 1).find(line => line && !line.startsWith("#")); if (variant) return new URL(variant, baseUrl).href; } return ""; } function prerollEndFromManifest(manifest, baseUrl) { const