PageSourceSearch

https://souju4.ai/assets/player-page-ChZZ__u-.js

js souju4.ai collected 2026-10-05 14:39:17 UTC 14,146 bytes, 1 lines download raw bytes

1import{j as r,r as i}from"./react-vendor-P5XnYvWb.js";import{p as fe,r as Se,F as Ce}from"./feedback-panel-tYxiLPwY.js";import{b as Ue}from"./comment-panel-BqfcXEe5.js";import{aj as Ne,n as O,a9 as Ie,ak as Ee,al as le,am as Le,an as Fe,P as ue}from"./main-CtyeVlnq.js";import{A as De}from"./icons-C3gyKvVD.js";import{P as Me}from"./player-page-header-XlmURt7f.js";import{o as Q,H as $e,b as ze,n as Ge,c as pe,Z as ye,_ as he,u as Te,$ as He,a0 as qe,a1 as Be,a as Ke}from"./movie-card-runtime-BsWugIRi.js";import{c as ge}from"./assistant-ui-primitives-Bn9nn9-n.js";import{q as Oe}from"./quota-guidance-Dq0Fpbvy.js";import{p as xe,a as Qe}from"./player-detail-request-context-BLstN2p4.js";import{b as Ve}from"./player-episode-pagination-DI8VSyOE.js";import{w as We}from"./playback-resume-store-DM7tJaWt.js";import{f as Ze}from"./library-status-CIsSTVyL.js";import{d as Je,e as Xe,f as Ye}from"./navigation-runtime-Dw-8DVQD.js";import"./share-link-BkclFdqY.js";import"./playback-client-runtime-Cwx4nSwi.js";import"./vite-runtime-mxn4OsD4.js";import"./PlaylistPickerDialog-BUF5Enjm.js";import"./overlay-portal-Be0vfSM5.js";import"./useCollectionViewport-CqEKC_dM.js";/* empty css                  */import"./use-modal-history-dismiss-DgaUApWa.js";import"./radix-ui-BXT0dNmF.js";import"./user-avatar-BDwbhArf.js";import"./native-environment-ChodKNAD.js";import"./PlaylistActionSlot-CGve8RB-.js";import"./local-movie-library-CjOGUmLj.js";import"./library-owner-scope-BKVKiF-_.js";import"./library-sync-shared-outbox-D4igz3zk.js";import"./guest-access-store-Hbdjrrgl.js";function et({onBack:e}){return r.jsxs("header",{className:"movie-app-header movie-player-page-header movie-player-access-gate-header mx-auto grid w-full grid-cols-[6.5rem_minmax(0,1fr)_6.5rem] items-center gap-3 px-4 sm:grid-cols-[7rem_minmax(0,1fr)_7rem] sm:px-5",children:[r.jsx("button",{type:"button",onClick:e,className:"movie-player-header-action flex size-11 shrink-0 items-center justify-center rounded-full border transition sm:size-12","aria-label":"返回",title:"返回",children:r.jsx(De,{className:"size-5"})}),r.jsx("h1",{className:"truncate text-center text-base font-semibold text-[var(--movie-text)] sm:text-lg",children:"登录后继续"}),r.jsx("span",{"aria-hidden":!0})]})}function tt({adultLoginRequired:e,adultAccessState:t,homeOverlay:a,movie:s,onBack:n,onRetryAuthorization:d}){if(e)return r.jsxs(ce,{homeOverlay:a,children:[r.jsx(et,{onBack:n}),r.jsx(me,{title:"该内容需要登录才能查看,请先登录。",description:"登录后继续播放。",actions:r.jsxs(r.Fragment,{children:[r.jsx(de,{onClick:n}),r.jsx("button",{type:"button",className:"movie-button-primary inline-flex min-h-11 touch-manipulation items-center justify-center rounded-md border px-4 text-sm font-semibold",onClick:()=>Q({intent:"adult_playback"}),children:"立即登录"})]})})]});if(t==="token_insufficient"){const l=Oe("playback");return r.jsxs(ce,{homeOverlay:a,children:[r.jsx(Me,{movie:s,onBack:n,backLabel:"返回"}),r.jsx(me,{title:l.title,description:l.description,actions:r.jsxs(r.Fragment,{children:[r.jsx(de,{onClick:n}),r.jsx("button",{type:"button",className:"movie-button-primary inline-flex min-h-11 touch-manipulation items-center justify-center rounded-md border px-4 text-sm font-semibold",onClick:()=>$e("quota"),children:"获取更多额度"})]})})]})}return r.jsx("main",{className:ge("flex min-h-[70vh] items-center justify-center px-4 py-10",a&&"global-player-host global-player-host-expanded global-player-host-page movie-app-bg movie-main-shell"),children:r.jsxs("section",{className:"movie-surface w-full max-w-md rounded-lg border p-6 text-center shadow-2xl shadow-black/30",children:[r.jsx("h1",{className:"text-xl font-bold text-[var(--movie-text)]",children:"播放授权服务暂时不可用"}),r.jsx("p",{className:"mt-2 text-sm leading-6 text-[var(--movie-text-muted)]",children:"本次没有扣除词元,请稍后重试。"}),r.jsx("button",{type:"button",className:"movie-button-primary mt-5 inline-flex h-10 items-center justify-center rounded-md border px-5 text-sm font-semibold",onClick:d,children:"重新授权"})]})})}function ce({children:e,homeOverlay:t}){return r.jsxs("main",{className:ge("global-player-host-page movie-app-bg movie-main-shell relative flex min-h-dvh w-full max-w-[100vw] flex-col overflow-hidden",t&&"global-player-host global-player-host-expanded"),children:[r.jsx("div",{className:"movie-atmosphere"}),e]})}function me({actions:e,description:t,title:a}){return r.jsx("div",{className:"relative flex min-h-0 flex-1 items-center justify-center px-4 py-10",children:r.jsxs("section",{className:"movie-surface w-full max-w-md rounded-lg border p-6 text-center shadow-2xl shadow-black/30",children:[r.jsx("h1",{className:"text-xl font-bold text-[var(--movie-text)]",children:a}),r.jsx("p",{className:"mt-2 text-sm leading-6 text-[var(--movie-text-muted)]",children:t}),r.jsx("div",{className:"mx-auto mt-5 grid w-full max-w-sm grid-cols-2 gap-2",children:e})]})})}function de({onClick:e}){return r.jsx("button",{type:"button",className:"movie-button-secondary inline-flex min-h-11 touch-manipulation items-center justify-center rounded-md border px-4 text-sm font-semibold",onClick:e,children:"返回上一页"})}function nt(e,t=!1){return(e==null?void 0:e.is_adult)===!0||(e==null?void 0:e.content_kind)==="adult"?!0:(e==null?void 0:e.is_adult)===!1?!1:t}const at=[{id:"feature_suggestion",label:"功能建议"},{id:"bug_report",label:"BUG反馈"},{id:"playback_unavailable",label:"播放不了"},{id:"stutter",label:"卡顿"},{id:"update_slow",label:"更新慢"},{id:"resource_missing",label:"资源缺少"}];function D(e,t,a){var y,c;const s=((y=S(t))==null?void 0:y.data)??t,n=S(s),d=M(n==null?void 0:n.genres),l=(c=S(s))==null?void 0:c.episodes,g=Array.isArray(l)?l.length:void 0,h=it(n==null?void 0:n.playback_groups,g),x=rt(ze(n==null?void 0:n.recent_update),p(n==null?void 0:n.updated_at));return{...a,id:e,title:p(n==null?void 0:n.title)??a.title,originalTitle:p(n==null?void 0:n.normalized_title)??p(n==null?void 0:n.title)??a.originalTitle,year:be(n==null?void 0:n.year)??a.year,type:(n==null?void 0:n.content_kind)==="series"||(n==null?void 0:n.content_kind)==="tv"||g!==void 0&&g>1?"series":a.type,isAdult:nt(n,a.isAdult),genres:d.length?d:a.genres,platforms:h.length?["网页播放器"]:a.platforms,posterUrl:p(n==null?void 0:n.poster_url)??a.posterUrl,backdropUrl:p(n==null?void 0:n.backdrop_url)??a.backdropUrl,overview:p(n==null?void 0:n.description)??p(n==null?void 0:n.overview)??p(n==null?void 0:n.remarks)??a.overview,area:p(n==null?void 0:n.area)??a.area,language:p(n==null?void 0:n.language)??a.language,remarks:p(n==null?void 0:n.remarks)??a.remarks,detailUrl:pe(e),playerUrl:void 0,playbackGroups:h.length?h:a.playbackGroups,facts:ot(n==null?void 0:n.facts)??a.facts,recentUpdate:x??a.recentUpdate,watchCalendarForecast:Ge(n==null?void 0:n.watch_calendar_forecast)}}function st(e){const t=e==null?void 0:e.trim();if(!(!t||t==="/favicon.ico"))return t}function rt(e,t){return t?e?e.lastUpdatedAt?e:{...e,lastUpdatedAt:t}:{lastUpdatedAt:t}:e}function it(e,t){return Array.isArray(e)?e.flatMap(a=>{const s=S(a),n=p(s==null?void 0:s.id),d=p(s==null?void 0:s.label)??n;return!n||!d?[]:[{id:n,label:d,type:p(s==null?void 0:s.type)??n,episodeCount:be(s==null?void 0:s.episode_
1count)??t}]}):t?[{id:"yjplayer",label:"网页播放器",type:"player",episodeCount:t}]:[]}function S(e){return e&&typeof e=="object"?e:void 0}function p(e){return typeof e=="string"&&e.trim()?e:void 0}function be(e){return typeof e=="number"?e:void 0}function M(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function ot(e){const t=S(e);if(!t)return;const a=M(t.theme_terms).map(l=>l.trim()).filter(Boolean),s=M(t.embedding_terms).map(l=>l.trim()).filter(Boolean),n=M(t.intent_phrases).map(l=>l.trim()).filter(Boolean),d=p(t.generated_at);return a.length||s.length||n.length?{themeTerms:a,embeddingTerms:s,intentPhrases:n,...d?{generatedAt:d}:{}}:void 0}function lt(e,t){O(e,{router:t,replace:!0,scroll:!1,traceLabel:"player-return"})}function ut(e){try{const t=typeof window>"u"?new URL(e,"http://localhost"):new URL(e,window.location.origin);return t.pathname==="/"&&!t.search}catch{return e==="/"}}function ct(e){const t=Number(V(e));return Number.isInteger(t)&&t>=0?t:void 0}function mt(e,t){const a=new URLSearchParams;for(const s of Object.keys(t).sort())k(a,s,t[s]);return`${e}?${a.toString()}`}function V(e){return Array.isArray(e)?e[0]:e}function Pe(e){return Ne(V(e.from))}function B(e,t){const a=new URLSearchParams;k(a,"episode",t.episode),k(a,"line",ye(t)),k(a,"adult",t.adult),k(a,"from",Pe(t)),he(t)&&a.set("resume","1");const s=a.toString();return`/player/${encodeURIComponent(e)}${s?`?${s}`:""}`}function dt(e){const t={};return e.forEach((a,s)=>{t[s]=a}),t}function k(e,t,a){const s=Array.isArray(a)?a[0]:a;s&&e.set(t,s)}function ft(e,t){const a=i.useMemo(()=>Ve(pe(e)),[e]),s=i.useMemo(()=>pt(e,a,t),[a,t,e]),[n,d]=i.useState(s.movie),[l,g]=i.useState(s.resolved);return i.useEffect(()=>{let h=!1;const x=new AbortController,y=xe(),c=fe(a,{cacheScope:y.cacheScope});return d(c?D(e,c,t):t),g(!!c||t.isAdult===!0),Se(a,{cacheScope:y.cacheScope,onRevalidated:f=>{!h&&f&&d(D(e,f,t))},request:{signal:x.signal,timeoutMs:Qe,...y.headers?{headers:y.headers}:{}}}).then(f=>{!h&&f&&d(D(e,f,t))}).catch(()=>{}).finally(()=>{h||g(!0)}),()=>{h=!0,x.abort()}},[a,t,e]),{detailAccessResolved:l,movie:n,setMovie:d}}function pt(e,t,a){const s=xe(),n=fe(t,{cacheScope:s.cacheScope});return{movie:n?D(e,n,a):a,resolved:!!n||a.isAdult===!0}}function K(e){return Array.isArray(e)?e[0]:e}function yt(e){const t=K(e.hide_episode)??K(e.hide_episodes)??K(e.episodes);return!(t==null||String(t).trim()===""||["0","false","no","off"].includes(String(t).toLowerCase()))}function Ot({id:e,query:t,presentation:a}){const s=Je(),n=Xe(),d=Ye(),{closePlayer:l,openPlayer:g,updatePlayerUi:h}=Ie(),x=Te(),y=i.useRef(!1),c=(a==null?void 0:a.kind)==="home-overlay",f=i.useMemo(()=>`${c?"home-player-page":"player-page"}:${e}`,[c,e]),P=i.useMemo(()=>`/player/${encodeURIComponent(e)}`,[e]),C=i.useMemo(()=>{const m=B(e,t),u=m.indexOf("?");return u>=0?m.slice(u):""},[e,t]),ve=i.useMemo(()=>Ee(P,C),[P,C]),W=c?a.sourceRouteKey:ve,A=c?a.active:n===P,U=i.useMemo(()=>He(e,t),[e,t]),Z=i.useMemo(()=>mt(e,t),[e,t]),{detailAccessResolved:j,movie:o,setMovie:Re}=ft(e,U),[N,v]=i.useState("idle"),[Ae,je]=i.useState(0),$=qe(t),z=ye(t),J=he(t),w=V(t.responseId),I=ct(t.rankPosition),E=Pe(t),X=yt(t),[Y,ee]=i.useState(0),G=i.useRef(o.id),[we,te]=i.useState(null),[_e,T]=i.useState(!0),ne=we===e,_=j&&o.isAdult===!0&&!x.signedIn,L=j&&o.contentKind==="short_drama",ke=j&&o.isAdult===!0,R=j&&!L&&!_&&(!ke||N==="authorized"),ae=i.useCallback(()=>{te(e)},[e]),se=i.useCallback(({movie:m})=>{G.current!==m.id&&(G.current=m.id,ee(0),Re(m))},[]);i.useEffect(()=>{G.current=U.id,te(null),T(!0),v("idle")},[U.id,U.isAdult,e]),i.useEffect(()=>{if(!ne){T(!0);return}const m=window.setTimeout(()=>T(!1),180);return()=>window.clearTimeout(m)},[ne]),i.useEffect(()=>{if(y.current||c||!(n===P))return;const u=B(e,t);B(e,dt(d))!==u&&O(u,{router:s,replace:!0,scroll:!1,traceLabel:"player-url-canonicalize"})},[c,e,n,P,t,s,d]);const H=i.useCallback(()=>{if(y.current=!0,l(f),c){a.onClose();return}if(E){if(ut(E)){le(s);return}lt(E,s);return}le(s)},[l,c,f,a,E,s]);i.useEffect(()=>()=>{l(f)},[l,f]);const re=i.useMemo(()=>r.jsx(Ue,{variantId:o.id,title:o.title,posterUrl:o.posterUrl,onCountChange:ee}),[o.id,o.posterUrl,o.title]),ie=i.useMemo(()=>r.jsx(Ce,{surface:"player_page",title:"播放体验反馈",description:"选择类型后填写说明并提交",...w===void 0?{}:{responseId:w},query:o.title,variantId:o.id,...I===void 0?{}:{rankPosition:I},issuePresets:at,formOnly:!0,density:"comfortable",className:"movie-player-feedback-tab-panel"}),[o.id,o.title,I,w]);return i.useEffect(()=>{!L||!A||(l(f),O(`${Be("short_drama",e)}${C}`,{router:s,replace:!0,scroll:!1,traceLabel:"short-drama-route"}))},[l,e,f,A,P,C,s,L]),i.useEffect(()=>{_&&(l(f),Q({intent:"adult_playback"}))},[_,l,f]),i.useEffect(()=>{if(!j||o.isAdult!==!0||!x.signedIn){v("idle");return}const m=new AbortController;v("authorizing");const u=Le(),q=new URL(`/v1/playback/adult-access/${encodeURIComponent(e)}`,window.location.href);return u&&q.searchParams.set("quota_debug",u),Ke(q.toString(),{method:"POST",auth:"session",cache:"no-store",signal:m.signal,timeoutMs:8e3}).then(async b=>{var oe;if(!m.signal.aborted){if(b.ok){const F=await b.json().catch(()=>{});(oe=F==null?void 0:F.quota_delta)!=null&&oe.used_tokens&&window.dispatchEvent(new CustomEvent(Fe,{detail:{response:F}})),v("authorized");return}if(b.status===401){v("idle"),Q({intent:"adult_playback"});return}v(b.status===402?"token_insufficient":"unavailable")}}).catch(b=>{m.signal.aborted||(b==null?void 0:b.name)==="AbortError"||v("unavailable")}),()=>m.abort()},[x.signedIn,Ae,j,e,o.isAdult]),i.useEffect(()=>{const m=st(o.posterUrl);if(!m)return;const u=Ze(e);
1!u||u.posterUrl||We({...u,title:u.title||o.title,posterUrl:m,detailUrl:u.detailUrl??o.detailUrl,playerUrl:u.playerUrl??o.playerUrl,responseId:u.responseId??o.responseId,kind:u.kind??o.contentKind??o.type,year:u.year??o.year,area:u.area??o.area,language:u.language??o.language,genres:u.genres??o.genres},{flush:!0})},[e,o]),i.useLayoutEffect(()=>{y.current||A&&R&&g({ownerId:f,sourceRouteKey:W,revision:Z,...w===void 0?{}:{responseId:w},movie:o,mode:"page",...$===void 0?{}:{initialEpisode:$},...z===void 0?{}:{initialLine:z},resumePlayback:J,hideEpisodeSwitch:X,onClose:H,onPlayerReady:ae,onPlaybackContextChange:se,discussionCount:0,discussionPanel:re,feedbackPanel:ie})},[re,$,ie,X,z,o,g,f,Z,A,W,R,ae,I,w,J,H,se]),i.useEffect(()=>{y.current||!A||!R||h(f,{discussionCount:Y})},[Y,f,A,R,P,h]),L?r.jsx(ue,{overlay:c}):_||N==="token_insufficient"||N==="unavailable"?r.jsx(tt,{adultLoginRequired:_,adultAccessState:N==="token_insufficient"?"token_insufficient":"unavailable",homeOverlay:c,movie:o,onBack:H,onRetryAuthorization:()=>je(m=>m+1)}):c&&R||!_e?null:r.jsx(ue,{exiting:R,overlay:c,trackGlobalLoading:!R,title:o.title})}export{Ot as PlayerPage};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.