PageSourceSearch

https://videotranscription.ai/_nuxt/CeCaDWWB.js

js videotranscription.ai collected 2026-10-05 00:47:20 UTC 12,483 bytes, 1 lines download raw bytes

1import{_ as t,a,G as e,Y as l,r as i,e as s,i as r}from"./CaBbSBvl.js";import{P as o,n}from"./CrbYghme.js";import{u,a as d,G as c,H as p,b as y,o as v}from"./DjcxI8QT.js";import{D as m}from"./COoA_SH5.js";import{S as f}from"./DBt5xQI5.js";import{u as h,b as k}from"./jn0-kUZ3.js";import{r as b,l as T}from"./CMFFcUYv.js";import{b as g,a as S,t as _}from"./BWkiYbo0.js";import{B as w,u as U,S as I}from"#entry";import{p as x,l as P}from"./DTf9wq2O.js";import{y as Y,b as j,k as B,w as O,v as $,u as R,q as A,F as K,$ as E,a3 as H,af as V,Q as L,z as C,P as D,ag as N,aa as q,a0 as z,a2 as G,c as M,Y as F,an as Q,n as W}from"./zJQOa3Li.js";import{_ as X}from"./BCo6x5W8.js";const J={class:"max-w-6xl m-auto px-10 max-sm:px-3 flex flex-col items-start relative"},Z={key:0,class:"w-full mb-5"},tt={key:1,class:"generation-panel__youtube-mode-tabs"},at=["onClick"],et={class:"w-full"},lt={class:"media-generation-panel__library mt-4"},it={class:"media-generation-panel__library-tabs"},st={key:0,class:"w-full h-full"},rt=Y({__name:"GenerationPanel",props:{defaultType:{default:"video"},actionText:{},detailType:{default:"transcript"},sourcePlatform:{},showSourceTabs:{type:Boolean,default:!0}},setup(Y){const X=Y,rt=j("video"),ot=j(""),nt=j(""),ut=j(!1),dt=j(!1),ct=j(!1),pt=j(!0),yt=j(0),vt=j(""),mt=j({playlistId:"",playlistUrl:"",totalResults:0,items:[]}),ft=[{key:"templates",label:"Templates",icon:"bi:grid-1x2"},{key:"history",label:"History",icon:"bi:clock-history"}],ht=[{key:"video",label:"YouTube Video"},{key:"playlist",label:"YouTube Playlist"}],kt=w("youtube-transcript-generator-history-covers",()=>({})),bt=new Map,{checkStatus:Tt,cancelCheckStatus:gt}=h(),St=U(),_t=()=>{const t="string"==typeof(a=St.query.link)?a.trim():Array.isArray(a)&&"string"==typeof a[0]?a[0].trim():"";var a;t&&ot.value!==t&&(ot.value=t,nt.value=t,"youtube"===wt.value&&(rt.value="video"))},wt=B(()=>X.sourcePlatform?X.sourcePlatform:"string"==typeof St.path&&St.path.includes("/instagram-")?"instagram":"string"==typeof St.path&&St.path.includes("/tiktok-")?"tiktok":"youtube"),Ut=B(()=>"youtube"===wt.value),It=B(()=>"instagram"===wt.value?{platforms:[o.INS],historyPlatforms:[String(o.INS)],placeholder:"Paste the Instagram Reel or post link",invalidUrlTitle:"Invalid Instagram URL",invalidUrlText:"Please paste a valid Instagram Reel or post link."}:"tiktok"===wt.value?{platforms:[o.TIKTOK],historyPlatforms:[String(o.TIKTOK)],placeholder:"Paste the TikTok video link",invalidUrlTitle:"Invalid TikTok URL",invalidUrlText:"Please paste a valid TikTok video link."}:{platforms:[o.YOUTUBE],historyPlatforms:[String(o.YOUTUBE)],placeholder:"playlist"===rt.value?"Paste the YouTube playlist link":"Paste the YouTube video link",invalidUrlTitle:"Invalid YouTube URL",invalidUrlText:"playlist"===rt.value?"Please paste a valid YouTube playlist link.":"Please paste a valid YouTube video link."}),xt=B(()=>It.value.historyPlatforms),Pt=B(()=>n(St.path)),Yt=B(()=>"summary"!==X.detailType||"/"===Pt.value?[]:["/"]),{items:jt,isLoading:Bt,refresh:Ot}=u({platforms:xt,historyScope:Pt,historyLimit:10}),$t=B(()=>[Pt.value,xt.value.join(","),wt.value,X.detailType].join("|")),{activeLibraryTab:Rt,handleLibraryTabChange:At}=d({templateKey:"templates",historyKey:"history",hasHistory:()=>Boolean(jt.value?.length),contextKey:()=>$t.value}),{formatHistoryTime:Kt,handleDeleteHistory:Et}=y(Ot),Ht=t=>{const a=Array.isArray(t.thumbnail)?t.thumbnail:[];return a.at(-1)?.url||a[0]?.url||""},Vt=(t,a)=>a.map(a=>({id:`${t}-${a.index}-${a.videoId}`,videoId:a.videoId,title:a.title||"Untitled video",cover:Ht(a),channelTitle:a.channelTitle||a.videoOwnerChannelTitle||"",playlistId:t,position:Math.max(Number(a.index||1)-1,0),publishedAt:a.publishedAt||""})),Lt=async({sourceUrl:t})=>{if(dt.value)return;const a=s(t);if(t&&a&&r(t))try{dt.value=!0;const e=await g({platform:o.YOUTUBE,url:t}),l=e?.data,i=Array.isArray(l?.playlist)?l.playlist:[];if(!i.length)return void Q.warning("No videos were found in this playlist.");mt.value={playlistId:l?.list_id||a,playlistUrl:t,totalResults:i.length,items:Vt(l?.list_id||a,i)},ut.value=!0}catch(e){Q.error(e?.message||"Failed to parse this YouTube playlist.")}finally{dt.value=!1}else await I.fire({icon:"warning",title:"Invalid YouTube URL",text:"Please paste a valid YouTube playlist link.",confirmButtonText:"Ok, got it!",buttonsStyling:!1,customClass:{confirmButton:"custom-btn"}})},Ct=t=>{const a=t.playlistId?.trim()||mt.value.playlistId.trim(),e=t.videoId?.trim()||"";if(!e)return"";const l=new URLSearchParams({v:e});return a&&l.set("list",a),`https://www.youtube.com/watch?${l.toString()}`},Dt=t=>`${Pt.value}:playlist:${t.id}`,Nt=t=>t.id.startsWith(`${Pt.value}:playlist:`),qt=async(t,a)=>{const e=Ct(t);await x({recordId:Dt(t),historyScope:Pt.value,platform:String(o.YOUTUBE),speakerDiarization:b(X.detailType,T().speakerDiarization),title:t.title,task_id:a.task_id,url:e,actual_url:e,cover:t.cover,content:a.content,subtitles:a.subtitles,transcript:a.transcript,playlistTaskStatus:a.playlistTaskStatus})}
1,zt=async(t,a)=>{const e=await k(a.data,void 0,{requestTranscript:!1});await x({recordId:t.id,historyScope:t.historyScope,platform:t.platform,title:a.title||t.title,task_id:t.task_id,url:a.url||t.url,actual_url:a.actual_url||t.actual_url,video_url:a.video_url||t.video_url,cover:a.cover||t.cover,content:e.content||a.content||"",subtitles:e.subtitles,transcript:e.transcript,playlistTaskStatus:null})},Gt=async()=>(await P({platforms:[String(o.YOUTUBE)],historyScope:Pt.value})).filter(Nt).sort((t,a)=>t.createdAt-a.createdAt),Mt=B(()=>pt.value&&"history"===Rt.value),Ft=async()=>{if(!Mt.value||ct.value)return;const t=++yt.value;ct.value=!0;try{for(;Mt.value&&t===yt.value;){const e=(await Gt()).find(t=>"processing"===t.playlistTaskStatus||"creating"===t.playlistTaskStatus);if(!e)break;try{let a="string"==typeof e.task_id?e.task_id.trim():"";if(!a){const l=await S({platform:o.YOUTUBE,url:e.actual_url||e.url,speaker_recognition:Boolean(e.speakerDiarization)}),i=l?.data?.task_id??l?.data;if(a="string"==typeof i?i:String(i||""),!a)throw new Error("task_id is required");if(await x({recordId:e.id,historyScope:e.historyScope,platform:e.platform,title:e.title,task_id:a,url:e.url,actual_url:e.actual_url,video_url:e.video_url,cover:e.cover,content:e.content,playlistTaskStatus:"processing"}),await Ot(),!Mt.value||t!==yt.value)break}vt.value=e.id;const l=await Tt(a,{resolveResult:t=>t});if(vt.value="",!Mt.value||t!==yt.value)break;await zt({...e,task_id:a},l||{}),await Ot()}catch(a){if(vt.value="",a instanceof Error&&"Polling cancelled"===a.message)break;await x({recordId:e.id,historyScope:e.historyScope,platform:e.platform,title:e.title,task_id:e.task_id,url:e.url,actual_url:e.actual_url,video_url:e.video_url,cover:e.cover,content:e.content,playlistTaskStatus:"failed"}),await Ot()}}}finally{t===yt.value&&(ct.value=!1)}},Qt=()=>{yt.value+=1,ct.value=!1,vt.value="",gt()},Wt=async t=>{if(t.length){Rt.value="history";try{await W();const a=await P({platforms:[String(o.YOUTUBE)],historyScope:Pt.value}),e=new Set(a.map(t=>Xt(t.actual_url||t.url||"")).filter(Boolean)),l=new Set,i=[],s=[];for(const r of t){const t=r.videoId?.trim()||Xt(Ct(r));t?e.has(t)||l.has(t)?s.push(r):(l.add(t),i.push(r)):i.push(r)}if(!i.length)return void Q.warning("Selected videos already exist in History.");for(const t of i)await qt(t,{playlistTaskStatus:"creating"});await Ot(),Ft(),s.length&&Q.warning(`${s.length} video${s.length>1?"s were":" was"} skipped because ${s.length>1?"they already exist":"it already exists"} in History.`),Q.success(`${i.length} video${i.length>1?"s were":" was"} added to History.`)}finally{}}};O(()=>rt.value,()=>{mt.value={playlistId:"",playlistUrl:"",totalResults:0,items:[]}}),O(()=>ot.value,t=>{(t=>{if("youtube"!==wt.value)return;const a=i(t);"youtube"===a?.platform&&(rt.value=a.youtubeMode||"video")})(t)}),O(()=>wt.value,()=>{mt.value={playlistId:"",playlistUrl:"",totalResults:0,items:[]}}),O(()=>St.query.link,()=>{_t()},{immediate:!0});const Xt=t=>{if(!t)return"";const a=[/[?&]v=([^&]+)/,/youtu\.be\/([^?&/]+)/,/youtube\.com\/shorts\/([^?&/]+)/,/youtube\.com\/embed\/([^?&/]+)/];for(const e of a){const a=t.match(e)?.[1];if(a)return a}return""},Jt=t=>{const a=kt.value[t.id];if(void 0!==a)return a;const e="string"==typeof t.cover?t.cover.trim():"";if(e)return kt.value[t.id]=e,e;const l=t.actual_url||t.url||"";if(String(t.platform)===String(o.YOUTUBE)){const a=Xt(l);if(!a)return kt.value[t.id]="","";const e=`https://img.youtube.com/vi/${a}/hqdefault.jpg`;return kt.value[t.id]=e,e}return[String(o.TIKTOK),String(o.INS)].includes(String(t.platform))?(Zt(t),""):(kt.value[t.id]="","")},Zt=async t=>{if(void 0!==kt.value[t.id]||bt.has(t.id))return;const a=t.actual_url||t.url||"";if(!a)return void(kt.value[t.id]="");const e=(async()=>{try{const e=await _({platform:t.platform,url:a}),l="string"==typeof e?.data?.cover?e.data.cover.trim():"";kt.value[t.id]=l,l&&"local"===t.source&&await x({historyScope:t.historyScope,platform:t.platform,title:t.title,task_id:t.task_id,url:t.url,actual_url:t.actual_url,video_url:t.video_url,cover:l,content:t.content})}catch{kt.value[t.id]=""}finally{bt.delete(t.id)}})();
1bt.set(t.id,e),await e};O(()=>Pt.value,()=>{kt.value={},bt.clear()});const ta=t=>t.title||"Untitled media",aa=t=>String(t.platform)===String(o.TIKTOK)?"fa6-brands:tiktok":String(t.platform)===String(o.INS)?"fa6-brands:instagram":"fa6-brands:youtube";return $(()=>{pt.value=!0,Ft()}),R(()=>{pt.value=!1,Qt()}),A(()=>{pt.value=!1,Qt()}),O(()=>Rt.value,t=>{"history"!==t?Qt():Ft()}),(i,s)=>{const r=t,o=a;return E(),K("div",J,[X.showSourceTabs?(E(),K("div",Z,[L(f,{"active-key":C(wt),"detail-type":X.detailType??"transcript"},null,8,["active-key","detail-type"])])):H("",!0),C(Ut)?(E(),K("div",tt,[(E(),K(D,null,N(ht,t=>V("button",{key:t.key,type:"button",class:z(["generation-panel__youtube-mode-tab",{"is-active":C(rt)===t.key}]),onClick:a=>{return e=t.key,void(rt.value=e);var e}},q(t.label),11,at)),64))])):H("",!0),V("div",et,[L(r,{modelValue:C(ot),"onUpdate:modelValue":s[0]||(s[0]=t=>M(ot)?ot.value=t:null),platform:C(It).platforms,"footer-placement":"separate","history-scope":C(Pt),"mirror-history-scopes":C(Yt),"place-holder":C(It).placeholder,"platform-hint-text":C(Ut)&&"playlist"===C(rt)?"YouTube playlist link only":"","invalid-url-title":C(It).invalidUrlTitle,"invalid-url-text":C(It).invalidUrlText,"action-text":C(Ut)&&"playlist"===C(rt)?"Select Video":X.actionText,"submit-loading":!(!C(Ut)||"playlist"!==C(rt))&&C(dt),"detail-type":X.detailType,"custom-submit":C(Ut)&&"playlist"===C(rt)?Lt:null},{footer:G(()=>[L(c,{platform:String(C(It).platforms[0]),"show-summary-template":"summary"===X.detailType,"show-speaker-diarization":"transcript"===X.detailType},null,8,["platform","show-summary-template","show-speaker-diarization"])]),_:1},8,["modelValue","platform","history-scope","mirror-history-scopes","place-holder","platform-hint-text","invalid-url-title","invalid-url-text","action-text","submit-loading","detail-type","custom-submit"])]),V("div",lt,[V("div",it,[L(m,{items:ft,"model-value":C(Rt),compact:"","hide-icons":"","onUpdate:modelValue":C(At)},null,8,["model-value","onUpdate:modelValue"])]),"templates"===C(Rt)?(E(),K("div",st,[L(o,{"detail-type":X.detailType},null,8,["detail-type"])])):(E(),F(p,{key:1,items:C(jt),loading:C(Bt),columns:4,description:"History is kept for 48 hours.","empty-text":"No history yet.",class:"w-full"},{item:G(({item:t})=>[L(e,{title:ta(t),time:C(Kt)(t.updatedAt),cover:Jt(t),"fallback-icon":aa(t),"playlist-task-status":t.playlistTaskStatus,onSelect:a=>(t=>{"failed"!==t.playlistTaskStatus?t.playlistTaskStatus?Q.info("This playlist item is still being transcribed."):v(t,{detailType:X.detailType,historyScope:Pt.value,mirrorHistoryScopes:Yt.value}):Q.warning("Transcription failed. Please transcribe it again.")})(t),onDelete:a=>(async t=>{await Et(t)&&t.id===vt.value&&(Qt(),Mt.value&&Ft())})(t)},null,8,["title","time","cover","fallback-icon","playlist-task-status","onSelect","onDelete"])]),_:1},8,["items","loading"]))]),L(l,{modelValue:C(ut),"onUpdate:modelValue":s[1]||(s[1]=t=>M(ut)?ut.value=t:null),"playlist-id":C(mt).playlistId,"playlist-url":C(mt).playlistUrl,"total-results":C(mt).totalResults,items:C(mt).items,onConfirm:Wt},null,8,["modelValue","playlist-id","playlist-url","total-results","items"])])}}}),ot=Object.assign(X(rt,[["__scopeId","data-v-b75f4c95"]]),{__name:"PagesYoutubeTranscriptGeneratorGenerationPanel"});export{ot as G};

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.