From 38b605bedaf67eaf2ea0cd64fd52e8d98df7b82e Mon Sep 17 00:00:00 2001 From: Cerlancism Date: Thu, 22 Feb 2024 15:35:18 +0000 Subject: [PATCH] deploy: 43208360d542679d9ab0d44a04da95b56f431eb5 --- 404.html | 2 +- .../_buildManifest.js | 0 .../_ssgManifest.js | 0 .../{703-254b73a254ac49f4.js => 703-8f5e4a39e2d70863.js} | 2 +- _next/static/chunks/app/page-a8c9653d14a7a5b4.js | 1 + _next/static/chunks/app/page-fdb01c0c30697658.js | 1 - index.html | 2 +- index.txt | 6 +++--- 8 files changed, 7 insertions(+), 7 deletions(-) rename _next/static/{7tmJpvtoIQV0Aui_BJIpO => aANXYn-Y2in6xNhs3W--n}/_buildManifest.js (100%) rename _next/static/{7tmJpvtoIQV0Aui_BJIpO => aANXYn-Y2in6xNhs3W--n}/_ssgManifest.js (100%) rename _next/static/chunks/{703-254b73a254ac49f4.js => 703-8f5e4a39e2d70863.js} (98%) create mode 100644 _next/static/chunks/app/page-a8c9653d14a7a5b4.js delete mode 100644 _next/static/chunks/app/page-fdb01c0c30697658.js diff --git a/404.html b/404.html index 08ea083..7742983 100644 --- a/404.html +++ b/404.html @@ -1 +1 @@ -404: This page could not be found.ChatGPT Subtitle Translator

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.ChatGPT Subtitle Translator

404

This page could not be found.

\ No newline at end of file diff --git a/_next/static/7tmJpvtoIQV0Aui_BJIpO/_buildManifest.js b/_next/static/aANXYn-Y2in6xNhs3W--n/_buildManifest.js similarity index 100% rename from _next/static/7tmJpvtoIQV0Aui_BJIpO/_buildManifest.js rename to _next/static/aANXYn-Y2in6xNhs3W--n/_buildManifest.js diff --git a/_next/static/7tmJpvtoIQV0Aui_BJIpO/_ssgManifest.js b/_next/static/aANXYn-Y2in6xNhs3W--n/_ssgManifest.js similarity index 100% rename from _next/static/7tmJpvtoIQV0Aui_BJIpO/_ssgManifest.js rename to _next/static/aANXYn-Y2in6xNhs3W--n/_ssgManifest.js diff --git a/_next/static/chunks/703-254b73a254ac49f4.js b/_next/static/chunks/703-8f5e4a39e2d70863.js similarity index 98% rename from _next/static/chunks/703-254b73a254ac49f4.js rename to _next/static/chunks/703-8f5e4a39e2d70863.js index 00101e2..77b7c67 100644 --- a/_next/static/chunks/703-254b73a254ac49f4.js +++ b/_next/static/chunks/703-8f5e4a39e2d70863.js @@ -26,7 +26,7 @@ ${tI(e)}`);if(null==a)throw new ee(`missing choices[${n}].tool_calls[${r}].type ${tI(e)}`);if(null==l)throw new ee(`missing choices[${n}].tool_calls[${r}].function.name ${tI(e)}`);if(null==s)throw new ee(`missing choices[${n}].tool_calls[${r}].function.arguments -${tI(e)}`);return{id:i,type:a,function:{name:l,arguments:s}}})}}:{message:{content:a,role:l},finish_reason:r,index:n,logprobs:o}}),created:n,model:o,object:"chat.completion"}}(e)},q=function(e){var t,r,n;let o=tT(this,V,"f"),{choices:a,...i}=e;for(let{delta:a,finish_reason:s,index:l,logprobs:u=null,...c}of(o?Object.assign(o,i):o=tM(this,V,{...i,choices:[]},"f"),e.choices)){let e=o.choices[l];if(!e){o.choices[l]={finish_reason:s,index:l,message:a,logprobs:u,...c};continue}if(u&&(e.logprobs?u.content&&((t=e.logprobs).content??(t.content=[]),e.logprobs.content.push(...u.content)):e.logprobs=u),s&&(e.finish_reason=s),Object.assign(e,c),!a)continue;let{content:i,function_call:d,role:p,tool_calls:f}=a;if(i&&(e.message.content=(e.message.content||"")+i),p&&(e.message.role=p),d&&(e.message.function_call?(d.name&&(e.message.function_call.name=d.name),d.arguments&&((r=e.message.function_call).arguments??(r.arguments=""),e.message.function_call.arguments+=d.arguments)):e.message.function_call=d),f)for(let{index:t,id:r,type:o,function:a}of(e.message.tool_calls||(e.message.tool_calls=[]),f)){let i=(n=e.message.tool_calls)[t]??(n[t]={});r&&(i.id=r),o&&(i.type=o),a&&(i.function??(i.function={arguments:""})),a?.name&&(i.function.name=a.name),a?.arguments&&(i.function.arguments+=a.arguments)}}return o},Symbol.asyncIterator)](){let e=[],t=[],r=!1;return this.on("chunk",r=>{let n=t.shift();n?n(r):e.push(r)}),this.on("end",()=>{for(let e of(r=!0,t))e(void 0);t.length=0}),{next:async()=>e.length?{value:e.shift(),done:!1}:r?{value:void 0,done:!0}:new Promise(e=>t.push(e)).then(e=>e?{value:e,done:!1}:{value:void 0,done:!0})}}toReadableStream(){return new eh(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}}function tI(e){return JSON.stringify(e)}class tj extends tN{static fromReadableStream(e){let t=new tj;return t._run(()=>t._fromReadableStream(e)),t}static runFunctions(e,t,r){let n=new tj,o={...r,headers:{...r?.headers,"X-Stainless-Helper-Method":"runFunctions"}};return n._run(()=>n._runFunctions(e,t,o)),n}static runTools(e,t,r){let n=new tj,o={...r,headers:{...r?.headers,"X-Stainless-Helper-Method":"runTools"}};return n._run(()=>n._runTools(e,t,o)),n}}class t$ extends e7{runFunctions(e,t){return e.stream?tj.runFunctions(this._client.chat.completions,e,t):tB.runFunctions(this._client.chat.completions,e,t)}runTools(e,t){return e.stream?tj.runTools(this._client.chat.completions,e,t):tB.runTools(this._client.chat.completions,e,t)}stream(e,t){return tN.createChatCompletion(this._client.chat.completions,e,t)}}class tR extends e7{constructor(){super(...arguments),this.completions=new t$(this._client)}}(tR||(tR={})).Completions=t$;class tF extends e7{retrieve(e,t,r,n){return this._client.get(`/threads/${e}/messages/${t}/files/${r}`,{...n,headers:{"OpenAI-Beta":"assistants=v1",...n?.headers}})}list(e,t,r={},n){return eW(r)?this.list(e,t,{},r):this._client.getAPIList(`/threads/${e}/messages/${t}/files`,tz,{query:r,...n,headers:{"OpenAI-Beta":"assistants=v1",...n?.headers}})}}class tz extends e9{}(tF||(tF={})).MessageFilesPage=tz;class tK extends e7{constructor(){super(...arguments),this.files=new tF(this._client)}create(e,t,r){return this._client.post(`/threads/${e}/messages`,{body:t,...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}retrieve(e,t,r){return this._client.get(`/threads/${e}/messages/${t}`,{...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}update(e,t,r,n){return this._client.post(`/threads/${e}/messages/${t}`,{body:r,...n,headers:{"OpenAI-Beta":"assistants=v1",...n?.headers}})}list(e,t={},r){return eW(t)?this.list(e,{},t):this._client.getAPIList(`/threads/${e}/messages`,tL,{query:t,...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}}class tL extends e9{}(v=tK||(tK={})).ThreadMessagesPage=tL,v.Files=tF,v.MessageFilesPage=tz;class tO extends e7{retrieve(e,t,r,n){return this._client.get(`/threads/${e}/runs/${t}/steps/${r}`,{...n,headers:{"OpenAI-Beta":"assistants=v1",...n?.headers}})}list(e,t,r={},n){return eW(r)?this.list(e,t,{},r):this._client.getAPIList(`/threads/${e}/runs/${t}/steps`,t_,{query:r,...n,headers:{"OpenAI-Beta":"assistants=v1",...n?.headers}})}}class t_ extends e9{}(tO||(tO={})).RunStepsPage=t_;class tW extends e7{constructor(){super(...arguments),this.steps=new tO(this._client)}create(e,t,r){return this._client.post(`/threads/${e}/runs`,{body:t,...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}retrieve(e,t,r){return this._client.get(`/threads/${e}/runs/${t}`,{...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}update(e,t,r,n){return this._client.post(`/threads/${e}/runs/${t}`,{body:r,...n,headers:{"OpenAI-Beta":"assistants=v1",...n?.headers}})}list(e,t={},r){return eW(t)?this.list(e,{},t):this._client.getAPIList(`/threads/${e}/runs`,tV,{query:t,...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}cancel(e,t,r){return this._client.post(`/threads/${e}/runs/${t}/cancel`,{...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}submitToolOutputs(e,t,r,n){return this._client.post(`/threads/${e}/runs/${t}/submit_tool_outputs`,{body:r,...n,headers:{"OpenAI-Beta":"assistants=v1",...n?.headers}})}}class tV extends e9{}(b=tW||(tW={})).RunsPage=tV,b.Steps=tO,b.RunStepsPage=t_;class tG extends e7{constructor(){super(...arguments),this.runs=new tW(this._client),this.messages=new tK(this._client)}create(e={},t){return eW(e)?this.create({},e):this._client.post("/threads",{body:e,...t,headers:{"OpenAI-Beta":"assistants=v1",...t?.headers}})}retrieve(e,t){return this._client.get(`/threads/${e}`,{...t,headers:{"OpenAI-Beta":"assistants=v1",...t?.headers}})}update(e,t,r){return this._client.post(`/threads/${e}`,{body:t,...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}del(e,t){return this._client.delete(`/threads/${e}`,{...t,headers:{"OpenAI-Beta":"assistants=v1",...t?.headers}})}createAndRun(e,t){return this._client.post("/threads/runs",{body:e,...t,headers:{"OpenAI-Beta":"assistants=v1",...t?.headers}})}}(y=tG||(tG={})).Runs=tW,y.RunsPage=tV,y.Messages=tK,y.ThreadMessagesPage=tL;class tU extends e7{constructor(){super(...arguments),this.chat=new tR(this._client),this.assistants=new tx(this._client),this.threads=new tG(this._client)}}(x=tU||(tU={})).Chat=tR,x.Assistants=tx,x.AssistantsPage=tw,x.Threads=tG;class tH extends ez{constructor({baseURL:e=e0("OPENAI_BASE_URL"),apiKey:t=e0("OPENAI_API_KEY"),organization:r=e0("OPENAI_ORG_ID")??null,...n}={}){if(void 0===t)throw new ee("The OPENAI_API_KEY environment variable is missing or empty; either provide it, or instantiate the OpenAI client with an apiKey option, like new OpenAI({ apiKey: 'My API Key' }).");let o={apiKey:t,organization:r,...n,baseURL:e||"https://api.openai.com/v1"};if(!o.dangerouslyAllowBrowser&&e6())throw new ee("It looks like you're running in a browser-like environment.\n\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\nIf you understand the risks and have appropriate mitigations in place,\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\n\nnew OpenAI({ apiKey, dangerouslyAllowBrowser: true });\n\nhttps://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety\n");super({baseURL:o.baseURL,timeout:o.timeout??6e5,httpAgent:o.httpAgent,maxRetries:o.maxRetries,fetch:o.fetch}),this.completions=new te(this),this.chat=new tr(this),this.embeddings=new tn(this),this.files=new to(this),this.images=new ti(this),this.audio=new tc(this),this.moderations=new td(this),this.models=new tp(this),this.fineTuning=new tv(this),this.beta=new tU(this),this._options=o,this.apiKey=t,this.organization=r}defaultQuery(){return this._options.defaultQuery}defaultHeaders(e){return{...super.defaultHeaders(e),"OpenAI-Organization":this.organization,...this._options.defaultHeaders}}authHeaders(e){return{Authorization:`Bearer ${this.apiKey}`}}}J=tH,tH.OpenAI=J,tH.OpenAIError=ee,tH.APIError=et,tH.APIConnectionError=en,tH.APIConnectionTimeoutError=eo,tH.APIUserAbortError=er,tH.NotFoundError=el,tH.ConflictError=eu,tH.RateLimitError=ed,tH.BadRequestError=ea,tH.AuthenticationError=ei,tH.InternalServerError=ep,tH.PermissionDeniedError=es,tH.UnprocessableEntityError=ec;let{OpenAIError:tq,APIError:tJ,APIConnectionError:tX,APIConnectionTimeoutError:tY,APIUserAbortError:tZ,NotFoundError:tQ,ConflictError:t0,RateLimitError:t1,BadRequestError:t4,AuthenticationError:t3,InternalServerError:t2,PermissionDeniedError:t5,UnprocessableEntityError:t6}=X;(w=tH||(tH={})).toFile=eP,w.fileFromPath=d,w.Page=e8,w.CursorPage=e9,w.Completions=te,w.Chat=tr,w.Embeddings=tn,w.Files=to,w.FileObjectsPage=ta,w.Images=ti,w.Audio=tc,w.Moderations=td,w.Models=tp,w.ModelsPage=tf,w.FineTuning=tv,w.Beta=tU;var t8=r(2259),t9=r(2525);let t7={"gpt-3.5-turbo":{prompt:.002,completion:.002},"gpt-3.5-turbo-1106":{prompt:.001,completion:.002},"gpt-4":{prompt:.03,completion:.06},"gpt-4-32k":{prompt:.06,completion:.12},"gpt-4-1106-preview":{prompt:.01,completion:.03}},re={"gpt-3.5-turbo-0301":"gpt-3.5-turbo","gpt-3.5-turbo-0613":"gpt-3.5-turbo","gpt-3.5-turbo-16k":"gpt-3.5-turbo-1106","gpt-3.5-turbo-16k-0613":"gpt-3.5-turbo-1106","gpt-4-0613":"gpt-4"};function rt(e){let t=t7[e];if(!t){let r=re[e];r&&(t=t7[r])}return t}function rr(e,t){return new tH({apiKey:e,dangerouslyAllowBrowser:t,maxRetries:3})}class rn extends SyntaxError{constructor(e,t){super(e,t)}}async function ro(e,t,r){return await (0,t8.aW)(e,t,async e=>{let t=e.error,n=1e3*e.currentTry*e.currentTry;if(t instanceof tH.APIError){if(console.error(`[Error_${r}]`,new Date,"Status",t.status,t.name,t.message,t.error),429===t.status||t.status>=500&&t.status<=599)n*=e.currentTry;else throw`[Error_${r}] ${new Date} ${t.message}`;console.error(`[Error_${r}]`,"Retries",e.currentTry,"Delay",n),await (0,t8._v)(n)}else if(t instanceof rn)console.error(`[Error_${r}] ${t.message}`,"Retries",e.currentTry,"Delay",n),await (0,t8._v)(n);else throw`[Error_${r}] [openaiRetryWrapper] ${new Date} unknown error ${t}`},async e=>{throw console.error(`[Error_${r}] [openaiRetryWrapper] Max Retries Reached`,new Date,e),`[Error_${r}] [openaiRetryWrapper] Max Retries Reached, Error: ${e.error?.message??e.error}`})}async function ra(e,t=e=>{},r=()=>{}){let n="";return await new Promise(async(o,a)=>{try{for await(let r of e){let e=r.choices[0].delta.content;e&&(n+=e,t(e))}r(),o(n)}catch(e){a(new rn(`Could not JSON parse stream message: ${e.message}`,e))}})}},2993:function(e,t,r){"use strict";r.d(t,{E2:function(){return o},SB:function(){return a}});class n{seperator=",";timestampToSeconds(e){let[t,r]=e.split(","),n=parseInt(r),[o,a,i]=t.split(":").map(e=>parseInt(e));return Math.round(1e3*(.001*n+i+60*a+3600*o))/1e3}correctFormat(e){let t=e.replace(".",",");var r=null,n=null,o=null,a=null,[i,s]=t.split(",");a=this.fixed_str_digit(3,s);var[l,u,c]=i.split(":");return r=this.fixed_str_digit(2,l,!1),n=this.fixed_str_digit(2,u,!1),o=this.fixed_str_digit(2,c,!1),`${r}:${n}:${o},${a}`}fixed_str_digit(e,t,r=!0){return t.length==e?t:t.length>e?t.slice(0,e):t.length (\d{1,2}:\d{2}:\d{2},\d{1,3})/g);return t.shift(),t}tryDot(e){let t=(e=e.replace(/\r/g,"")).split(/(\d+)\n(\d{1,2}:\d{2}:\d{2}\.\d{1,3}) --> (\d{1,2}:\d{2}:\d{2}\.\d{1,3})/g);return t.shift(),this.seperator=".",t}fromSrt(e){var t=this.tryComma(e);0==t.length&&(t=this.tryDot(e));for(var r=[],n=0;n ")+n.endTime+"\r\n"+n.text.replace("\n","\r\n")+"\r\n\r\n"}return t}}let o=new n;function a(e){let t=e.match(/^(\d+\.)?\s*(.*)/);return{number:t[1]?parseInt(t[1]):void 0,text:t[2].trim()}}},8651:function(e,t,r){"use strict";r.d(t,{$H:function(){return l}});var n=r(7849);async function o(e,t){return await (0,n.Xr)(async()=>{await t.cooler?.cool();let r=(await t.openai.moderations.create({input:e})).results[0];return r.flagged&&console.error("[CheckModeration]","flagged",Object.keys(r.categories).filter(e=>r.categories[e]).map(e=>({catergory:e,value:Number(r.category_scores[e])}))),r},3,"CheckModeration")}var a=r(2993),i=r(2259);let s={createChatCompletionRequest:{model:"gpt-3.5-turbo"},initialPrompts:[],useModerator:!0,prefixNumber:!0,lineMatching:!0,historyPromptLength:10,batchSizes:[10,100]};class l{constructor(e,t,r){r.createChatCompletionRequest={...s.createChatCompletionRequest,...r.createChatCompletionRequest},this.language=e,this.services=t,this.options={...s,...r},this.systemInstruction=`Translate ${this.language.from?this.language.from+" ":""}to ${this.language.to}`,this.promptContext=[],this.workingProgress=[],this.promptTokensUsed=0,this.promptTokensWasted=0,this.completionTokensUsed=0,this.completionTokensWasted=0,this.tokensProcessTimeMs=0,this.offset=0,this.end=void 0,this.workingBatchSizes=[...this.options.batchSizes],this.currentBatchSize=this.workingBatchSizes[this.workingBatchSizes.length-1],this.moderatorFlags=new Map,this.pricingModel=(0,n.KF)(this.options.createChatCompletionRequest.model),this.aborted=!1}async translatePrompt(e){let t={role:"user",content:`${e}`},r=[...this.systemInstruction?[{role:"system",content:`${this.systemInstruction}`}]:[],...this.options.initialPrompts,...this.promptContext,t],o=0,a=0,i=await (0,n.Xr)(async()=>{if(await this.services.cooler?.cool(),o=Date.now(),this.options.createChatCompletionRequest.stream){let e=await this.services.openai.chat.completions.create({messages:r,...this.options.createChatCompletionRequest,stream:!0});this.streamController=e.controller;let t="",o=await (0,n.vp)(e,e=>{let r=e.includes("\n");0!==t.length||r?r?(t+=e,t=t.replaceAll("\n\n","\n")):(t+=e,this.services.onStreamChunk?.(t),t=""):this.services.onStreamChunk?.(e)},()=>{a=Date.now(),this.services.onStreamEnd?.()}),i=(0,n.xE)(r),s=(0,n.xE)([{content:o}]);return new u(o,i,s)}{let e=await this.services.openai.chat.completions.create({messages:r,...this.options.createChatCompletionRequest,stream:!1});return a=Date.now(),new u(e.choices[0].message.content,e.usage?.prompt_tokens,e.usage?.completion_tokens,e.usage?.total_tokens)}},3,"TranslationPrompt");return this.promptTokensUsed+=i.promptTokens,this.completionTokensUsed+=i.completionTokens,this.tokensProcessTimeMs+=a-o,i}async *translateSingle(e){console.error("[Translator]","Single line mode"),e=e.slice(-this.currentBatchSize);for(let t=0;tthis.preprocessLine(e,t,r)),a=t.join("\n\n");if(this.options.useModerator&&!this.services.moderationService&&console.warn("[Translator]","Moderation service requested but not configured, no moderation applied"),this.options.useModerator&&this.services.moderationService&&(await o(a,this.services.moderationService)).flagged){this.changeBatchSize("decrease")?r-=this.currentBatchSize:yield*this.translateSingle(t);continue}this.buildContext();let i=await this.translatePrompt(a);if(this.aborted){console.error("[Translator]","Aborted");return}let s=i.content.split("\n").filter(e=>e.length>0);if(this.options.lineMatching&&t.length!==s.length?(this.promptTokensWasted+=i.promptTokens,this.completionTokensWasted+=i.completionTokens,console.error("[Translator]","Lines count mismatch",t.length,s.length),console.error("[Translator]","batch",t),console.error("[Translator]","transformed",s),this.changeBatchSize("decrease")?r-=this.currentBatchSize:yield*this.translateSingle(t)):yield*this.yieldOutput(t,s),this.printUsage(),this.batchSizeThreshold&&n++>=this.batchSizeThreshold){n=0;let e=this.currentBatchSize;this.changeBatchSize("increase"),r-=this.currentBatchSize-e}}}*yieldOutput(e,t){for(let r=0;r ${l} `;else if(this.options.prefixNumber){let e=(0,a.SB)(l);l=e.text,u=e.text;let t=i+1;t!==e.number&&(console.warn("[Translator]","Label mismatch",t,e.number),this.moderatorFlags.set(i,{remarks:"Label Mismatch",outIndex:e.number}),l=`[Flagged][Model] ${s} -> ${l}`)}this.workingProgress.push({source:n,transform:o});let c={index:this.workingProgress.length,source:s,transform:u,finalTransform:l};yield c}}preprocessLine(e,t,r){return e=e.replaceAll("\n"," \\N "),this.options.prefixNumber&&(e=`${r+t+1}. ${e}`),e}changeBatchSize(e){let t=this.currentBatchSize;if("decrease"===e){if(this.currentBatchSize===this.options.batchSizes[0])return!1;this.workingBatchSizes.unshift(this.workingBatchSizes.pop())}else if("increase"===e){if(this.currentBatchSize===this.options.batchSizes[this.options.batchSizes.length-1])return!1;this.workingBatchSizes.push(this.workingBatchSizes.shift())}return this.currentBatchSize=this.workingBatchSizes[this.workingBatchSizes.length-1],this.currentBatchSize===this.options.batchSizes[this.options.batchSizes.length-1]?this.batchSizeThreshold=void 0:this.batchSizeThreshold=Math.floor(Math.max(t,this.currentBatchSize)/Math.min(t,this.currentBatchSize)),console.error("[Translator]","BatchSize",e,t,"->",this.currentBatchSize,"SizeThreshold",this.batchSizeThreshold),!0}buildContext(){if(0===this.workingProgress.length||0===this.options.historyPromptLength)return;let e=this.workingProgress.slice(-this.options.historyPromptLength),t=this.workingProgress.length-this.options.historyPromptLength,r=(e,r)=>{let n=r+(t<0?0:t);return this.moderatorFlags.has(n)?this.preprocessLine("-",n,0):e};this.promptContext=[{role:"user",content:e.map((e,t)=>r(e.source,t)).join("\n\n")},{role:"assistant",content:e.map((e,t)=>r(e.transform,t)).join("\n\n")}]}get usage(){if(!this.pricingModel)return null;let e=this.promptTokensUsed+this.completionTokensUsed,t=this.promptTokensWasted+this.completionTokensWasted,r=(0,i.JI)(this.pricingModel.prompt*(this.promptTokensUsed/1e3)+this.pricingModel.completion*(this.completionTokensUsed/1e3),3),n=(0,i.JI)(this.pricingModel.prompt*(this.promptTokensWasted/1e3)+this.pricingModel.completion*(this.completionTokensWasted/1e3),3),o=(0,i.JI)(e/(this.tokensProcessTimeMs/1e3/60),2),a=(t/e).toLocaleString(void 0,{style:"percent",minimumFractionDigits:0});return{usedTokens:e,wastedTokens:t,usedTokensPricing:r,wastedTokensPricing:n,wastedPercent:a,rate:o}}async printUsage(){let e=this.usage;if(!e){console.warn("[Translator]",`Cost computation not supported yet for ${this.options.createChatCompletionRequest.model}`);return}await (0,i._v)(10);let{usedTokens:t,wastedTokens:r,usedTokensPricing:n,wastedTokensPricing:o,wastedPercent:a,rate:s}=e;console.error("[Translator] Estimated Usage -","Tokens:",t,"$",n,"Wasted:",r,"$",o,a,"Rate:",s,"TPM",this.services.cooler?.rate,"RPM")}abort(){console.error("[Translator]","Aborting"),this.streamController?.abort(),this.aborted=!0}}class u{constructor(e,t,r,n){this.content=e,this.promptTokens=t??0,this.completionTokens=r??0,this.totalTokens=n??this.promptTokens+this.completionTokens}}},2403:function(e,t,r){"use strict";r.d(t,{M:function(){return g}});var n=r(2265),o=r(5621),a=r(452),i=r(8243),s=r(961);class l extends n.Component{getSnapshotBeforeUpdate(e){let t=this.props.childRef.current;if(t&&e.isPresent&&!this.props.isPresent){let e=this.props.sizeRef.current;e.height=t.offsetHeight||0,e.width=t.offsetWidth||0,e.top=t.offsetTop,e.left=t.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function u({children:e,isPresent:t}){let r=(0,n.useId)(),o=(0,n.useRef)(null),a=(0,n.useRef)({width:0,height:0,top:0,left:0});return(0,n.useInsertionEffect)(()=>{let{width:e,height:n,top:i,left:s}=a.current;if(t||!o.current||!e||!n)return;o.current.dataset.motionPopId=r;let l=document.createElement("style");return document.head.appendChild(l),l.sheet&&l.sheet.insertRule(` +${tI(e)}`);return{id:i,type:a,function:{name:l,arguments:s}}})}}:{message:{content:a,role:l},finish_reason:r,index:n,logprobs:o}}),created:n,model:o,object:"chat.completion"}}(e)},q=function(e){var t,r,n;let o=tT(this,V,"f"),{choices:a,...i}=e;for(let{delta:a,finish_reason:s,index:l,logprobs:u=null,...c}of(o?Object.assign(o,i):o=tM(this,V,{...i,choices:[]},"f"),e.choices)){let e=o.choices[l];if(!e){o.choices[l]={finish_reason:s,index:l,message:a,logprobs:u,...c};continue}if(u&&(e.logprobs?u.content&&((t=e.logprobs).content??(t.content=[]),e.logprobs.content.push(...u.content)):e.logprobs=u),s&&(e.finish_reason=s),Object.assign(e,c),!a)continue;let{content:i,function_call:d,role:p,tool_calls:f}=a;if(i&&(e.message.content=(e.message.content||"")+i),p&&(e.message.role=p),d&&(e.message.function_call?(d.name&&(e.message.function_call.name=d.name),d.arguments&&((r=e.message.function_call).arguments??(r.arguments=""),e.message.function_call.arguments+=d.arguments)):e.message.function_call=d),f)for(let{index:t,id:r,type:o,function:a}of(e.message.tool_calls||(e.message.tool_calls=[]),f)){let i=(n=e.message.tool_calls)[t]??(n[t]={});r&&(i.id=r),o&&(i.type=o),a&&(i.function??(i.function={arguments:""})),a?.name&&(i.function.name=a.name),a?.arguments&&(i.function.arguments+=a.arguments)}}return o},Symbol.asyncIterator)](){let e=[],t=[],r=!1;return this.on("chunk",r=>{let n=t.shift();n?n(r):e.push(r)}),this.on("end",()=>{for(let e of(r=!0,t))e(void 0);t.length=0}),{next:async()=>e.length?{value:e.shift(),done:!1}:r?{value:void 0,done:!0}:new Promise(e=>t.push(e)).then(e=>e?{value:e,done:!1}:{value:void 0,done:!0})}}toReadableStream(){return new eh(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}}function tI(e){return JSON.stringify(e)}class tj extends tN{static fromReadableStream(e){let t=new tj;return t._run(()=>t._fromReadableStream(e)),t}static runFunctions(e,t,r){let n=new tj,o={...r,headers:{...r?.headers,"X-Stainless-Helper-Method":"runFunctions"}};return n._run(()=>n._runFunctions(e,t,o)),n}static runTools(e,t,r){let n=new tj,o={...r,headers:{...r?.headers,"X-Stainless-Helper-Method":"runTools"}};return n._run(()=>n._runTools(e,t,o)),n}}class t$ extends e7{runFunctions(e,t){return e.stream?tj.runFunctions(this._client.chat.completions,e,t):tB.runFunctions(this._client.chat.completions,e,t)}runTools(e,t){return e.stream?tj.runTools(this._client.chat.completions,e,t):tB.runTools(this._client.chat.completions,e,t)}stream(e,t){return tN.createChatCompletion(this._client.chat.completions,e,t)}}class tR extends e7{constructor(){super(...arguments),this.completions=new t$(this._client)}}(tR||(tR={})).Completions=t$;class tF extends e7{retrieve(e,t,r,n){return this._client.get(`/threads/${e}/messages/${t}/files/${r}`,{...n,headers:{"OpenAI-Beta":"assistants=v1",...n?.headers}})}list(e,t,r={},n){return eW(r)?this.list(e,t,{},r):this._client.getAPIList(`/threads/${e}/messages/${t}/files`,tz,{query:r,...n,headers:{"OpenAI-Beta":"assistants=v1",...n?.headers}})}}class tz extends e9{}(tF||(tF={})).MessageFilesPage=tz;class tK extends e7{constructor(){super(...arguments),this.files=new tF(this._client)}create(e,t,r){return this._client.post(`/threads/${e}/messages`,{body:t,...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}retrieve(e,t,r){return this._client.get(`/threads/${e}/messages/${t}`,{...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}update(e,t,r,n){return this._client.post(`/threads/${e}/messages/${t}`,{body:r,...n,headers:{"OpenAI-Beta":"assistants=v1",...n?.headers}})}list(e,t={},r){return eW(t)?this.list(e,{},t):this._client.getAPIList(`/threads/${e}/messages`,tL,{query:t,...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}}class tL extends e9{}(v=tK||(tK={})).ThreadMessagesPage=tL,v.Files=tF,v.MessageFilesPage=tz;class tO extends e7{retrieve(e,t,r,n){return this._client.get(`/threads/${e}/runs/${t}/steps/${r}`,{...n,headers:{"OpenAI-Beta":"assistants=v1",...n?.headers}})}list(e,t,r={},n){return eW(r)?this.list(e,t,{},r):this._client.getAPIList(`/threads/${e}/runs/${t}/steps`,t_,{query:r,...n,headers:{"OpenAI-Beta":"assistants=v1",...n?.headers}})}}class t_ extends e9{}(tO||(tO={})).RunStepsPage=t_;class tW extends e7{constructor(){super(...arguments),this.steps=new tO(this._client)}create(e,t,r){return this._client.post(`/threads/${e}/runs`,{body:t,...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}retrieve(e,t,r){return this._client.get(`/threads/${e}/runs/${t}`,{...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}update(e,t,r,n){return this._client.post(`/threads/${e}/runs/${t}`,{body:r,...n,headers:{"OpenAI-Beta":"assistants=v1",...n?.headers}})}list(e,t={},r){return eW(t)?this.list(e,{},t):this._client.getAPIList(`/threads/${e}/runs`,tV,{query:t,...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}cancel(e,t,r){return this._client.post(`/threads/${e}/runs/${t}/cancel`,{...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}submitToolOutputs(e,t,r,n){return this._client.post(`/threads/${e}/runs/${t}/submit_tool_outputs`,{body:r,...n,headers:{"OpenAI-Beta":"assistants=v1",...n?.headers}})}}class tV extends e9{}(b=tW||(tW={})).RunsPage=tV,b.Steps=tO,b.RunStepsPage=t_;class tG extends e7{constructor(){super(...arguments),this.runs=new tW(this._client),this.messages=new tK(this._client)}create(e={},t){return eW(e)?this.create({},e):this._client.post("/threads",{body:e,...t,headers:{"OpenAI-Beta":"assistants=v1",...t?.headers}})}retrieve(e,t){return this._client.get(`/threads/${e}`,{...t,headers:{"OpenAI-Beta":"assistants=v1",...t?.headers}})}update(e,t,r){return this._client.post(`/threads/${e}`,{body:t,...r,headers:{"OpenAI-Beta":"assistants=v1",...r?.headers}})}del(e,t){return this._client.delete(`/threads/${e}`,{...t,headers:{"OpenAI-Beta":"assistants=v1",...t?.headers}})}createAndRun(e,t){return this._client.post("/threads/runs",{body:e,...t,headers:{"OpenAI-Beta":"assistants=v1",...t?.headers}})}}(y=tG||(tG={})).Runs=tW,y.RunsPage=tV,y.Messages=tK,y.ThreadMessagesPage=tL;class tU extends e7{constructor(){super(...arguments),this.chat=new tR(this._client),this.assistants=new tx(this._client),this.threads=new tG(this._client)}}(x=tU||(tU={})).Chat=tR,x.Assistants=tx,x.AssistantsPage=tw,x.Threads=tG;class tH extends ez{constructor({baseURL:e=e0("OPENAI_BASE_URL"),apiKey:t=e0("OPENAI_API_KEY"),organization:r=e0("OPENAI_ORG_ID")??null,...n}={}){if(void 0===t)throw new ee("The OPENAI_API_KEY environment variable is missing or empty; either provide it, or instantiate the OpenAI client with an apiKey option, like new OpenAI({ apiKey: 'My API Key' }).");let o={apiKey:t,organization:r,...n,baseURL:e||"https://api.openai.com/v1"};if(!o.dangerouslyAllowBrowser&&e6())throw new ee("It looks like you're running in a browser-like environment.\n\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\nIf you understand the risks and have appropriate mitigations in place,\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\n\nnew OpenAI({ apiKey, dangerouslyAllowBrowser: true });\n\nhttps://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety\n");super({baseURL:o.baseURL,timeout:o.timeout??6e5,httpAgent:o.httpAgent,maxRetries:o.maxRetries,fetch:o.fetch}),this.completions=new te(this),this.chat=new tr(this),this.embeddings=new tn(this),this.files=new to(this),this.images=new ti(this),this.audio=new tc(this),this.moderations=new td(this),this.models=new tp(this),this.fineTuning=new tv(this),this.beta=new tU(this),this._options=o,this.apiKey=t,this.organization=r}defaultQuery(){return this._options.defaultQuery}defaultHeaders(e){return{...super.defaultHeaders(e),"OpenAI-Organization":this.organization,...this._options.defaultHeaders}}authHeaders(e){return{Authorization:`Bearer ${this.apiKey}`}}}J=tH,tH.OpenAI=J,tH.OpenAIError=ee,tH.APIError=et,tH.APIConnectionError=en,tH.APIConnectionTimeoutError=eo,tH.APIUserAbortError=er,tH.NotFoundError=el,tH.ConflictError=eu,tH.RateLimitError=ed,tH.BadRequestError=ea,tH.AuthenticationError=ei,tH.InternalServerError=ep,tH.PermissionDeniedError=es,tH.UnprocessableEntityError=ec;let{OpenAIError:tq,APIError:tJ,APIConnectionError:tX,APIConnectionTimeoutError:tY,APIUserAbortError:tZ,NotFoundError:tQ,ConflictError:t0,RateLimitError:t1,BadRequestError:t4,AuthenticationError:t3,InternalServerError:t2,PermissionDeniedError:t5,UnprocessableEntityError:t6}=X;(w=tH||(tH={})).toFile=eP,w.fileFromPath=d,w.Page=e8,w.CursorPage=e9,w.Completions=te,w.Chat=tr,w.Embeddings=tn,w.Files=to,w.FileObjectsPage=ta,w.Images=ti,w.Audio=tc,w.Moderations=td,w.Models=tp,w.ModelsPage=tf,w.FineTuning=tv,w.Beta=tU;var t8=r(2259),t9=r(2525);let t7={"gpt-3.5-turbo":{prompt:.002,completion:.002},"gpt-3.5-turbo-1106":{prompt:.001,completion:.002},"gpt-4":{prompt:.03,completion:.06},"gpt-4-32k":{prompt:.06,completion:.12},"gpt-4-1106-preview":{prompt:.01,completion:.03}},re={"gpt-3.5-turbo-0301":"gpt-3.5-turbo","gpt-3.5-turbo-0613":"gpt-3.5-turbo","gpt-3.5-turbo-16k":"gpt-3.5-turbo-1106","gpt-3.5-turbo-16k-0613":"gpt-3.5-turbo-1106","gpt-4-0613":"gpt-4"};function rt(e){let t=t7[e];if(!t){let r=re[e];r&&(t=t7[r])}return t}function rr(e,t,r){return new tH({apiKey:e,baseURL:r,dangerouslyAllowBrowser:t,maxRetries:3})}class rn extends SyntaxError{constructor(e,t){super(e,t)}}async function ro(e,t,r){return await (0,t8.aW)(e,t,async e=>{let t=e.error,n=1e3*e.currentTry*e.currentTry;if(t instanceof tH.APIError){if(console.error(`[Error_${r}]`,new Date,"Status",t.status,t.name,t.message,t.error),429===t.status||t.status>=500&&t.status<=599)n*=e.currentTry;else throw`[Error_${r}] ${new Date} ${t.message}`;console.error(`[Error_${r}]`,"Retries",e.currentTry,"Delay",n),await (0,t8._v)(n)}else if(t instanceof rn)console.error(`[Error_${r}] ${t.message}`,"Retries",e.currentTry,"Delay",n),await (0,t8._v)(n);else throw`[Error_${r}] [openaiRetryWrapper] ${new Date} unknown error ${t}`},async e=>{throw console.error(`[Error_${r}] [openaiRetryWrapper] Max Retries Reached`,new Date,e),`[Error_${r}] [openaiRetryWrapper] Max Retries Reached, Error: ${e.error?.message??e.error}`})}async function ra(e,t=e=>{},r=()=>{}){let n="";return await new Promise(async(o,a)=>{try{for await(let r of e){let e=r.choices[0].delta.content;e&&(n+=e,t(e))}r(),o(n)}catch(e){a(new rn(`Could not JSON parse stream message: ${e.message}`,e))}})}},2993:function(e,t,r){"use strict";r.d(t,{E2:function(){return o},SB:function(){return a}});class n{seperator=",";timestampToSeconds(e){let[t,r]=e.split(","),n=parseInt(r),[o,a,i]=t.split(":").map(e=>parseInt(e));return Math.round(1e3*(.001*n+i+60*a+3600*o))/1e3}correctFormat(e){let t=e.replace(".",",");var r=null,n=null,o=null,a=null,[i,s]=t.split(",");a=this.fixed_str_digit(3,s);var[l,u,c]=i.split(":");return r=this.fixed_str_digit(2,l,!1),n=this.fixed_str_digit(2,u,!1),o=this.fixed_str_digit(2,c,!1),`${r}:${n}:${o},${a}`}fixed_str_digit(e,t,r=!0){return t.length==e?t:t.length>e?t.slice(0,e):t.length (\d{1,2}:\d{2}:\d{2},\d{1,3})/g);return t.shift(),t}tryDot(e){let t=(e=e.replace(/\r/g,"")).split(/(\d+)\n(\d{1,2}:\d{2}:\d{2}\.\d{1,3}) --> (\d{1,2}:\d{2}:\d{2}\.\d{1,3})/g);return t.shift(),this.seperator=".",t}fromSrt(e){var t=this.tryComma(e);0==t.length&&(t=this.tryDot(e));for(var r=[],n=0;n ")+n.endTime+"\r\n"+n.text.replace("\n","\r\n")+"\r\n\r\n"}return t}}let o=new n;function a(e){let t=e.match(/^(\d+\.)?\s*(.*)/);return{number:t[1]?parseInt(t[1]):void 0,text:t[2].trim()}}},8651:function(e,t,r){"use strict";r.d(t,{$H:function(){return l}});var n=r(7849);async function o(e,t){return await (0,n.Xr)(async()=>{await t.cooler?.cool();let r=(await t.openai.moderations.create({input:e})).results[0];return r.flagged&&console.error("[CheckModeration]","flagged",Object.keys(r.categories).filter(e=>r.categories[e]).map(e=>({catergory:e,value:Number(r.category_scores[e])}))),r},3,"CheckModeration")}var a=r(2993),i=r(2259);let s={createChatCompletionRequest:{model:"gpt-3.5-turbo"},initialPrompts:[],useModerator:!0,prefixNumber:!0,lineMatching:!0,historyPromptLength:10,batchSizes:[10,100]};class l{constructor(e,t,r){r.createChatCompletionRequest={...s.createChatCompletionRequest,...r.createChatCompletionRequest},this.language=e,this.services=t,this.options={...s,...r},this.systemInstruction=`Translate ${this.language.from?this.language.from+" ":""}to ${this.language.to}`,this.promptContext=[],this.workingProgress=[],this.promptTokensUsed=0,this.promptTokensWasted=0,this.completionTokensUsed=0,this.completionTokensWasted=0,this.tokensProcessTimeMs=0,this.offset=0,this.end=void 0,this.workingBatchSizes=[...this.options.batchSizes],this.currentBatchSize=this.workingBatchSizes[this.workingBatchSizes.length-1],this.moderatorFlags=new Map,this.pricingModel=(0,n.KF)(this.options.createChatCompletionRequest.model),this.aborted=!1}async translatePrompt(e){let t={role:"user",content:`${e}`},r=[...this.systemInstruction?[{role:"system",content:`${this.systemInstruction}`}]:[],...this.options.initialPrompts,...this.promptContext,t],o=0,a=0,i=await (0,n.Xr)(async()=>{if(await this.services.cooler?.cool(),o=Date.now(),this.options.createChatCompletionRequest.stream){let e=await this.services.openai.chat.completions.create({messages:r,...this.options.createChatCompletionRequest,stream:!0});this.streamController=e.controller;let t="",o=await (0,n.vp)(e,e=>{let r=e.includes("\n");0!==t.length||r?r?(t+=e,t=t.replaceAll("\n\n","\n")):(t+=e,this.services.onStreamChunk?.(t),t=""):this.services.onStreamChunk?.(e)},()=>{a=Date.now(),this.services.onStreamEnd?.()}),i=(0,n.xE)(r),s=(0,n.xE)([{content:o}]);return new u(o,i,s)}{let e=await this.services.openai.chat.completions.create({messages:r,...this.options.createChatCompletionRequest,stream:!1});return a=Date.now(),new u(e.choices[0].message.content,e.usage?.prompt_tokens,e.usage?.completion_tokens,e.usage?.total_tokens)}},3,"TranslationPrompt");return this.promptTokensUsed+=i.promptTokens,this.completionTokensUsed+=i.completionTokens,this.tokensProcessTimeMs+=a-o,i}async *translateSingle(e){console.error("[Translator]","Single line mode"),e=e.slice(-this.currentBatchSize);for(let t=0;tthis.preprocessLine(e,t,r)),a=t.join("\n\n");if(this.options.useModerator&&!this.services.moderationService&&console.warn("[Translator]","Moderation service requested but not configured, no moderation applied"),this.options.useModerator&&this.services.moderationService&&(await o(a,this.services.moderationService)).flagged){this.changeBatchSize("decrease")?r-=this.currentBatchSize:yield*this.translateSingle(t);continue}this.buildContext();let i=await this.translatePrompt(a);if(this.aborted){console.error("[Translator]","Aborted");return}let s=i.content.split("\n").filter(e=>e.length>0);if(this.options.lineMatching&&t.length!==s.length?(this.promptTokensWasted+=i.promptTokens,this.completionTokensWasted+=i.completionTokens,console.error("[Translator]","Lines count mismatch",t.length,s.length),console.error("[Translator]","batch",t),console.error("[Translator]","transformed",s),this.changeBatchSize("decrease")?r-=this.currentBatchSize:yield*this.translateSingle(t)):yield*this.yieldOutput(t,s),this.printUsage(),this.batchSizeThreshold&&n++>=this.batchSizeThreshold){n=0;let e=this.currentBatchSize;this.changeBatchSize("increase"),r-=this.currentBatchSize-e}}}*yieldOutput(e,t){for(let r=0;r ${l} `;else if(this.options.prefixNumber){let e=(0,a.SB)(l);l=e.text,u=e.text;let t=i+1;t!==e.number&&(console.warn("[Translator]","Label mismatch",t,e.number),this.moderatorFlags.set(i,{remarks:"Label Mismatch",outIndex:e.number}),l=`[Flagged][Model] ${s} -> ${l}`)}this.workingProgress.push({source:n,transform:o});let c={index:this.workingProgress.length,source:s,transform:u,finalTransform:l};yield c}}preprocessLine(e,t,r){return e=e.replaceAll("\n"," \\N "),this.options.prefixNumber&&(e=`${r+t+1}. ${e}`),e}changeBatchSize(e){let t=this.currentBatchSize;if("decrease"===e){if(this.currentBatchSize===this.options.batchSizes[0])return!1;this.workingBatchSizes.unshift(this.workingBatchSizes.pop())}else if("increase"===e){if(this.currentBatchSize===this.options.batchSizes[this.options.batchSizes.length-1])return!1;this.workingBatchSizes.push(this.workingBatchSizes.shift())}return this.currentBatchSize=this.workingBatchSizes[this.workingBatchSizes.length-1],this.currentBatchSize===this.options.batchSizes[this.options.batchSizes.length-1]?this.batchSizeThreshold=void 0:this.batchSizeThreshold=Math.floor(Math.max(t,this.currentBatchSize)/Math.min(t,this.currentBatchSize)),console.error("[Translator]","BatchSize",e,t,"->",this.currentBatchSize,"SizeThreshold",this.batchSizeThreshold),!0}buildContext(){if(0===this.workingProgress.length||0===this.options.historyPromptLength)return;let e=this.workingProgress.slice(-this.options.historyPromptLength),t=this.workingProgress.length-this.options.historyPromptLength,r=(e,r)=>{let n=r+(t<0?0:t);return this.moderatorFlags.has(n)?this.preprocessLine("-",n,0):e};this.promptContext=[{role:"user",content:e.map((e,t)=>r(e.source,t)).join("\n\n")},{role:"assistant",content:e.map((e,t)=>r(e.transform,t)).join("\n\n")}]}get usage(){if(!this.pricingModel)return null;let e=this.promptTokensUsed+this.completionTokensUsed,t=this.promptTokensWasted+this.completionTokensWasted,r=(0,i.JI)(this.pricingModel.prompt*(this.promptTokensUsed/1e3)+this.pricingModel.completion*(this.completionTokensUsed/1e3),3),n=(0,i.JI)(this.pricingModel.prompt*(this.promptTokensWasted/1e3)+this.pricingModel.completion*(this.completionTokensWasted/1e3),3),o=(0,i.JI)(e/(this.tokensProcessTimeMs/1e3/60),2),a=(t/e).toLocaleString(void 0,{style:"percent",minimumFractionDigits:0});return{usedTokens:e,wastedTokens:t,usedTokensPricing:r,wastedTokensPricing:n,wastedPercent:a,rate:o}}async printUsage(){let e=this.usage;if(!e){console.warn("[Translator]",`Cost computation not supported yet for ${this.options.createChatCompletionRequest.model}`);return}await (0,i._v)(10);let{usedTokens:t,wastedTokens:r,usedTokensPricing:n,wastedTokensPricing:o,wastedPercent:a,rate:s}=e;console.error("[Translator] Estimated Usage -","Tokens:",t,"$",n,"Wasted:",r,"$",o,a,"Rate:",s,"TPM",this.services.cooler?.rate,"RPM")}abort(){console.error("[Translator]","Aborting"),this.streamController?.abort(),this.aborted=!0}}class u{constructor(e,t,r,n){this.content=e,this.promptTokens=t??0,this.completionTokens=r??0,this.totalTokens=n??this.promptTokens+this.completionTokens}}},2403:function(e,t,r){"use strict";r.d(t,{M:function(){return g}});var n=r(2265),o=r(5621),a=r(452),i=r(8243),s=r(961);class l extends n.Component{getSnapshotBeforeUpdate(e){let t=this.props.childRef.current;if(t&&e.isPresent&&!this.props.isPresent){let e=this.props.sizeRef.current;e.height=t.offsetHeight||0,e.width=t.offsetWidth||0,e.top=t.offsetTop,e.left=t.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function u({children:e,isPresent:t}){let r=(0,n.useId)(),o=(0,n.useRef)(null),a=(0,n.useRef)({width:0,height:0,top:0,left:0});return(0,n.useInsertionEffect)(()=>{let{width:e,height:n,top:i,left:s}=a.current;if(t||!o.current||!e||!n)return;o.current.dataset.motionPopId=r;let l=document.createElement("style");return document.head.appendChild(l),l.sheet&&l.sheet.insertRule(` [data-motion-pop-id="${r}"] { position: absolute !important; width: ${e}px !important; diff --git a/_next/static/chunks/app/page-a8c9653d14a7a5b4.js b/_next/static/chunks/app/page-a8c9653d14a7a5b4.js new file mode 100644 index 0000000..9c85148 --- /dev/null +++ b/_next/static/chunks/app/page-a8c9653d14a7a5b4.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{8189:function(e,l,n){Promise.resolve().then(n.bind(n,3643)),Promise.resolve().then(n.bind(n,7418)),Promise.resolve().then(n.bind(n,8049)),Promise.resolve().then(n.bind(n,855)),Promise.resolve().then(n.bind(n,8452)),Promise.resolve().then(n.bind(n,3202)),Promise.resolve().then(n.bind(n,8890)),Promise.resolve().then(n.bind(n,9616)),Promise.resolve().then(n.bind(n,456)),Promise.resolve().then(n.bind(n,727)),Promise.resolve().then(n.bind(n,4081)),Promise.resolve().then(n.bind(n,1047)),Promise.resolve().then(n.bind(n,5555)),Promise.resolve().then(n.bind(n,7030)),Promise.resolve().then(n.bind(n,1256)),Promise.resolve().then(n.bind(n,2410)),Promise.resolve().then(n.bind(n,6996)),Promise.resolve().then(n.bind(n,3435)),Promise.resolve().then(n.bind(n,5615)),Promise.resolve().then(n.bind(n,4975)),Promise.resolve().then(n.bind(n,214)),Promise.resolve().then(n.bind(n,9773)),Promise.resolve().then(n.bind(n,3227)),Promise.resolve().then(n.bind(n,1680)),Promise.resolve().then(n.bind(n,1593)),Promise.resolve().then(n.bind(n,5360)),Promise.resolve().then(n.bind(n,4169)),Promise.resolve().then(n.bind(n,878)),Promise.resolve().then(n.bind(n,5439)),Promise.resolve().then(n.bind(n,3443)),Promise.resolve().then(n.bind(n,4675))},4675:function(e,l,n){"use strict";n.r(l),n.d(l,{TranslatorApplication:function(){return y}});var s=n(7437),t=n(2265),r=n(4994),a=n(4042),o=n(1507),i=n(7655),d=n(7782),c=n(298),m=n(3975),u=n(3648),h=n(9571);let x=e=>(0,s.jsxs)("svg",{"aria-hidden":"true",fill:"none",focusable:"false",height:"1em",role:"presentation",viewBox:"0 0 24 24",width:"1em",...e,children:[(0,s.jsx)("path",{d:"M21.2714 9.17834C20.9814 8.71834 20.6714 8.28834 20.3514 7.88834C19.9814 7.41834 19.2814 7.37834 18.8614 7.79834L15.8614 10.7983C16.0814 11.4583 16.1214 12.2183 15.9214 13.0083C15.5714 14.4183 14.4314 15.5583 13.0214 15.9083C12.2314 16.1083 11.4714 16.0683 10.8114 15.8483C10.8114 15.8483 9.38141 17.2783 8.35141 18.3083C7.85141 18.8083 8.01141 19.6883 8.68141 19.9483C9.75141 20.3583 10.8614 20.5683 12.0014 20.5683C13.7814 20.5683 15.5114 20.0483 17.0914 19.0783C18.7014 18.0783 20.1514 16.6083 21.3214 14.7383C22.2714 13.2283 22.2214 10.6883 21.2714 9.17834Z",fill:"currentColor"}),(0,s.jsx)("path",{d:"M14.0206 9.98062L9.98062 14.0206C9.47062 13.5006 9.14062 12.7806 9.14062 12.0006C9.14062 10.4306 10.4206 9.14062 12.0006 9.14062C12.7806 9.14062 13.5006 9.47062 14.0206 9.98062Z",fill:"currentColor"}),(0,s.jsx)("path",{d:"M18.25 5.74969L14.86 9.13969C14.13 8.39969 13.12 7.95969 12 7.95969C9.76 7.95969 7.96 9.76969 7.96 11.9997C7.96 13.1197 8.41 14.1297 9.14 14.8597L5.76 18.2497H5.75C4.64 17.3497 3.62 16.1997 2.75 14.8397C1.75 13.2697 1.75 10.7197 2.75 9.14969C3.91 7.32969 5.33 5.89969 6.91 4.91969C8.49 3.95969 10.22 3.42969 12 3.42969C14.23 3.42969 16.39 4.24969 18.25 5.74969Z",fill:"currentColor"}),(0,s.jsx)("path",{d:"M14.8581 11.9981C14.8581 13.5681 13.5781 14.8581 11.9981 14.8581C11.9381 14.8581 11.8881 14.8581 11.8281 14.8381L14.8381 11.8281C14.8581 11.8881 14.8581 11.9381 14.8581 11.9981Z",fill:"currentColor"}),(0,s.jsx)("path",{d:"M21.7689 2.22891C21.4689 1.92891 20.9789 1.92891 20.6789 2.22891L2.22891 20.6889C1.92891 20.9889 1.92891 21.4789 2.22891 21.7789C2.37891 21.9189 2.56891 21.9989 2.76891 21.9989C2.96891 21.9989 3.15891 21.9189 3.30891 21.7689L21.7689 3.30891C22.0789 3.00891 22.0789 2.52891 21.7689 2.22891Z",fill:"currentColor"})]}),p=e=>(0,s.jsxs)("svg",{"aria-hidden":"true",fill:"none",focusable:"false",height:"1em",role:"presentation",viewBox:"0 0 24 24",width:"1em",...e,children:[(0,s.jsx)("path",{d:"M21.25 9.14969C18.94 5.51969 15.56 3.42969 12 3.42969C10.22 3.42969 8.49 3.94969 6.91 4.91969C5.33 5.89969 3.91 7.32969 2.75 9.14969C1.75 10.7197 1.75 13.2697 2.75 14.8397C5.06 18.4797 8.44 20.5597 12 20.5597C13.78 20.5597 15.51 20.0397 17.09 19.0697C18.67 18.0897 20.09 16.6597 21.25 14.8397C22.25 13.2797 22.25 10.7197 21.25 9.14969ZM12 16.0397C9.76 16.0397 7.96 14.2297 7.96 11.9997C7.96 9.76969 9.76 7.95969 12 7.95969C14.24 7.95969 16.04 9.76969 16.04 11.9997C16.04 14.2297 14.24 16.0397 12 16.0397Z",fill:"currentColor"}),(0,s.jsx)("path",{d:"M11.9984 9.14062C10.4284 9.14062 9.14844 10.4206 9.14844 12.0006C9.14844 13.5706 10.4284 14.8506 11.9984 14.8506C13.5684 14.8506 14.8584 13.5706 14.8584 12.0006C14.8584 10.4306 13.5684 9.14062 11.9984 9.14062Z",fill:"currentColor"})]}),f=e=>{let{label:l,onFileSelect:n}=e;return(0,s.jsxs)("div",{children:[(0,s.jsx)("input",{type:"file",id:"file-input",style:{display:"none"},onChange:e=>{n(e.target.files[0])}}),(0,s.jsx)("label",{htmlFor:"file-input",children:(0,s.jsx)(u.A,{as:"span",color:"primary",children:l})})]})};function v(e){let{children:l,label:n}=e;return(0,s.jsx)(s.Fragment,{children:(0,s.jsxs)("div",{className:"",children:[(0,s.jsx)("h2",{className:"text-lg font-medium",children:n}),(0,s.jsx)("div",{className:"rounded-lg pl-8 pr-3 py-3 mb-2 shadow-md border",children:(0,s.jsx)("div",{className:"ml-4 rounded-lg shadow-inner border bg-card text-card-foreground min-h-80 ",children:l})})]})})}let C="\n1\n00:00:00,000 --> 00:00:02,000\nおはようございます。\n\n2\n00:00:02,000 --> 00:00:05,000\nお元気ですか?\n\n3\n00:00:05,000 --> 00:00:07,000\nはい、元気です。\n\n4\n00:00:08,000 --> 00:00:12,000\n今日は天気がいいですね。\n\n5\n00:00:12,000 --> 00:00:16,000\nはい、とてもいい天気です。\n\n6\n00:00:17,000 --> 00:00:21,000\n今日は何をしますか?\n\n7\n00:00:21,000 --> 00:00:24,000\n午後から\n\n8\n00:00:24,000 --> 00:00:26,000\n友達と\n\n9\n00:00:26,000 --> 00:00:28,000\n映画を見ます。\n\n10\n00:00:28,000 --> 00:00:30,000\nいいですね。\n\n";var j=n(8651),b=n(2993),g=n(7849),w=n(6901);let N="OPENAI_API_KEY",P="OPENAI_BASE_URL",S="RATE_LIMIT";function y(){let[e,l]=(0,t.useState)(""),[n,y]=(0,t.useState)(void 0),[I,k]=(0,t.useState)(""),[A,E]=(0,t.useState)("English"),[L,T]=(0,t.useState)(""),[R,M]=(0,t.useState)("gpt-3.5-turbo"),[_,O]=(0,t.useState)(0),[U,V]=(0,t.useState)(!0),[z,Y]=(0,t.useState)(60);(0,t.useRef)();let[Z,B]=(0,t.useState)(!1),[F,D]=(0,t.useState)(C),[G,K]=(0,t.useState)(C),[$,q]=(0,t.useState)(b.E2.fromSrt(C).map(e=>e.text)),[H,W]=(0,t.useState)([]),[Q,J]=(0,t.useState)(""),[X,ee]=(0,t.useState)(!1),el=(0,t.useRef)(null),en=(0,t.useRef)(!1),[es,et]=(0,t.useState)(null),[er,ea]=(0,t.useState)(0);async function eo(l){var s,t;l.preventDefault(),ee(!0),console.log("[User Interface]","Begin Generation"),en.current=!0,W([]),et(null);let r="",a=b.E2.fromSrt(F),o=[];console.log("OPENAI_BASE_URL",n);let i=(0,g.QN)(e,!0,n),d=new w.h(z,6e4,"ChatGPTAPI"),c=new w.h(z,6e4,"OpenAIModerator");el.current=new j.$H({from:I,to:A},{openai:i,cooler:d,onStreamChunk:e=>{J(r+=e)},onStreamEnd:()=>{r="",J("")},moderationService:{openai:i,cooler:c}},{useModerator:U,createChatCompletionRequest:{model:R,temperature:_,stream:!0}}),L&&(el.current.systemInstruction=L);try{for await(let e of el.current.translateLines($)){if(!en.current){console.error("[User Interface]","Aborted"),J("");break}o.push(e.finalTransform),a[e.index-1].text=e.finalTransform,W([...o]),et(el.current.usage),ea(null===(s=el.current.services.cooler)||void 0===s?void 0:s.rate)}console.log({sourceInputWorkingCopy:a}),K(b.E2.toSrt(a))}catch(e){console.error(e),alert(null!==(t=null==e?void 0:e.message)&&void 0!==t?t:e)}en.current=!1,el.current=null,ee(!1)}async function ei(){console.error("[User Interface]","Aborting"),el.current&&(en.current=!1,el.current.abort())}return(0,t.useEffect)(()=>{var e,n,s;l(null!==(e=localStorage.getItem(N))&&void 0!==e?e:""),Y(Number(null!==(n=localStorage.getItem(S))&&void 0!==n?n:z)),y(null!==(s=localStorage.getItem(P))&&void 0!==s?s:void 0)},[]),(0,s.jsx)(s.Fragment,{children:(0,s.jsxs)("div",{className:"w-full",children:[(0,s.jsx)("form",{id:"translator-config-form",onSubmit:e=>eo(e),children:(0,s.jsx)("div",{className:"px-4 pt-4 flex flex-wrap justify-between w-full gap-4",children:(0,s.jsxs)(r.w,{className:"z-10 w-full shadow-md border",shadow:"none",children:[(0,s.jsx)(a.u,{className:"flex gap-3 pb-0",children:(0,s.jsx)("div",{className:"flex flex-col",children:(0,s.jsx)("p",{className:"text-md",children:"Configuration"})})}),(0,s.jsx)(o.G,{children:(0,s.jsxs)("div",{className:"flex flex-wrap justify-between w-full gap-4",children:[(0,s.jsxs)("div",{className:"flex flex-wrap md:flex-nowrap w-full gap-4",children:[(0,s.jsx)(i.Y,{className:"w-full md:w-6/12",size:"sm",value:e,onValueChange:e=>{localStorage.setItem(N,e),l(e)},isRequired:!0,autoComplete:"off",label:"OpenAI API Key",variant:"flat",description:"API Key is stored locally in browser",endContent:(0,s.jsx)("button",{className:"focus:outline-none",type:"button",onClick:()=>B(!Z),children:Z?(0,s.jsx)(x,{className:"text-2xl text-default-400 pointer-events-none"}):(0,s.jsx)(p,{className:"text-2xl text-default-400 pointer-events-none"})}),type:Z?"text":"password"}),(0,s.jsx)(i.Y,{className:"w-full md:w-6/12",size:"sm",type:"text",label:"OpenAI Base Url",placeholder:"Default",autoComplete:"on",value:null!=n?n:"",onValueChange:function(e){e||(e=void 0,localStorage.removeItem(P)),e&&localStorage.setItem(P,e),y(e)}})]}),(0,s.jsxs)("div",{className:"flex w-full gap-4",children:[(0,s.jsx)(i.Y,{className:"w-full md:w-6/12",size:"sm",type:"text",label:"From Language",placeholder:"Auto",autoComplete:"on",value:I,onValueChange:k}),(0,s.jsx)(i.Y,{className:"w-full md:w-6/12",size:"sm",type:"text",label:"To Language",autoComplete:"on",value:A,onValueChange:E})]}),(0,s.jsx)("div",{className:"w-full",children:(0,s.jsx)(d.Y,{label:"System Instruction",minRows:2,description:"Override preset system instruction",placeholder:"Translate ".concat(I?I+" ":"","to ").concat(A),value:L,onValueChange:T})}),(0,s.jsxs)("div",{className:"flex flex-wrap md:flex-nowrap w-full gap-4",children:[(0,s.jsx)("div",{className:"w-full md:w-4/12",children:(0,s.jsx)(i.Y,{size:"sm",type:"text",label:"Model",autoComplete:"on",value:R,onValueChange:M})}),(0,s.jsx)("div",{className:"w-full md:w-3/12",children:(0,s.jsx)(c.L,{label:"Temperature",size:"md",hideThumb:!0,step:.1,maxValue:2,minValue:0,value:_,onChange:e=>O(Number(e))})}),(0,s.jsxs)("div",{className:"w-full md:w-5/12 gap-4 flex flex-wrap md:flex-nowrap",children:[(0,s.jsx)("div",{className:"w-full md:w-6/12 flex",children:(0,s.jsx)(m.i,{size:"sm",isSelected:U,onValueChange:V,children:"Use Moderator"})}),(0,s.jsx)(i.Y,{className:"w-full md:w-6/12",size:"sm",type:"number",min:"1",label:"Rate Limit",value:z.toString(),onValueChange:e=>{localStorage.setItem(S,e),Y(Number(e))},autoComplete:"on",endContent:(0,s.jsx)("div",{className:"pointer-events-none flex items-center",children:(0,s.jsx)("span",{className:"text-default-400 text-small",children:"RPM"})})})]})]})]})})]})})}),(0,s.jsxs)("div",{className:"w-full justify-between md:justify-center flex flex-wrap gap-1 sm:gap-4 mt-auto sticky top-0 backdrop-blur px-4 pt-4",children:[(0,s.jsx)(f,{label:"Import SRT",onFileSelect:async e=>{try{let l=await e.text(),n=b.E2.fromSrt(l);D(l),q(n.map(e=>e.text))}catch(e){var l;alert(null!==(l=e.message)&&void 0!==l?l:e)}}}),!X&&(0,s.jsx)(u.A,{type:"submit",form:"translator-config-form",color:"primary",isDisabled:!e||X,children:"Start"}),X&&(0,s.jsx)(u.A,{color:"danger",onClick:()=>ei(),isLoading:!Q,children:"Stop"}),(0,s.jsx)(u.A,{color:"primary",onClick:()=>{var e,l,n;e="text/plain",l=new Blob([G],{type:e}),(n=document.createElement("a")).download="export.srt",n.href=URL.createObjectURL(l),n.dataset.downloadurl=[e,n.download,n.href].join(":"),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),setTimeout(function(){URL.revokeObjectURL(n.href)},1500)},children:"Export SRT"}),(0,s.jsx)(h.j,{className:"mt-3 sm:mt-0"})]}),(0,s.jsxs)("div",{className:"lg:flex lg:gap-4 px-4 mt-4",children:[(0,s.jsx)("div",{className:"lg:w-1/2",children:(0,s.jsx)(v,{label:"Input",children:(0,s.jsx)("ol",{className:"py-2 list-decimal line-marker ",children:$.map((e,l)=>(0,s.jsx)("li",{className:"",children:(0,s.jsx)("div",{className:"ml-4 truncate",children:e})},l))})})}),(0,s.jsxs)("div",{className:"lg:w-1/2",children:[(0,s.jsx)(v,{label:"Output",children:(0,s.jsxs)("ol",{className:"py-2 list-decimal line-marker ",children:[H.map((e,l)=>(0,s.jsx)("li",{className:"",children:(0,s.jsx)("div",{className:"ml-4 truncate",children:e})},l)),(0,s.jsx)("pre",{className:"px-2",children:Q})]})}),es&&(0,s.jsxs)(r.w,{shadow:"sm",className:"mt-4 p-4",children:[(0,s.jsx)("span",{children:(0,s.jsx)("b",{children:"Estimated Usage"})}),(0,s.jsxs)("span",{children:["Tokens: ",null==es?void 0:es.usedTokens," $",null==es?void 0:es.usedTokensPricing]}),(null==es?void 0:es.wastedTokens)>0&&(0,s.jsxs)("span",{className:"text-danger",children:["Wasted: ",null==es?void 0:es.wastedTokens," $",null==es?void 0:es.wastedTokensPricing," ",null==es?void 0:es.wastedPercent]}),(0,s.jsxs)("span",{children:[null==es?void 0:es.rate," TPM ",er," RPM"]})]})]})]})]})})}}},function(e){e.O(0,[683,439,703,971,938,744],function(){return e(e.s=8189)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/_next/static/chunks/app/page-fdb01c0c30697658.js b/_next/static/chunks/app/page-fdb01c0c30697658.js deleted file mode 100644 index fa2ed1e..0000000 --- a/_next/static/chunks/app/page-fdb01c0c30697658.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{8189:function(e,n,l){Promise.resolve().then(l.bind(l,3643)),Promise.resolve().then(l.bind(l,7418)),Promise.resolve().then(l.bind(l,8049)),Promise.resolve().then(l.bind(l,855)),Promise.resolve().then(l.bind(l,8452)),Promise.resolve().then(l.bind(l,3202)),Promise.resolve().then(l.bind(l,8890)),Promise.resolve().then(l.bind(l,9616)),Promise.resolve().then(l.bind(l,456)),Promise.resolve().then(l.bind(l,727)),Promise.resolve().then(l.bind(l,4081)),Promise.resolve().then(l.bind(l,1047)),Promise.resolve().then(l.bind(l,5555)),Promise.resolve().then(l.bind(l,7030)),Promise.resolve().then(l.bind(l,1256)),Promise.resolve().then(l.bind(l,2410)),Promise.resolve().then(l.bind(l,6996)),Promise.resolve().then(l.bind(l,3435)),Promise.resolve().then(l.bind(l,5615)),Promise.resolve().then(l.bind(l,4975)),Promise.resolve().then(l.bind(l,214)),Promise.resolve().then(l.bind(l,9773)),Promise.resolve().then(l.bind(l,3227)),Promise.resolve().then(l.bind(l,1680)),Promise.resolve().then(l.bind(l,1593)),Promise.resolve().then(l.bind(l,5360)),Promise.resolve().then(l.bind(l,4169)),Promise.resolve().then(l.bind(l,878)),Promise.resolve().then(l.bind(l,5439)),Promise.resolve().then(l.bind(l,3443)),Promise.resolve().then(l.bind(l,4675))},4675:function(e,n,l){"use strict";l.r(n),l.d(n,{TranslatorApplication:function(){return y}});var s=l(7437),t=l(2265),r=l(4994),a=l(4042),o=l(1507),i=l(7655),d=l(7782),c=l(298),m=l(3975),u=l(3648),h=l(9571);let x=e=>(0,s.jsxs)("svg",{"aria-hidden":"true",fill:"none",focusable:"false",height:"1em",role:"presentation",viewBox:"0 0 24 24",width:"1em",...e,children:[(0,s.jsx)("path",{d:"M21.2714 9.17834C20.9814 8.71834 20.6714 8.28834 20.3514 7.88834C19.9814 7.41834 19.2814 7.37834 18.8614 7.79834L15.8614 10.7983C16.0814 11.4583 16.1214 12.2183 15.9214 13.0083C15.5714 14.4183 14.4314 15.5583 13.0214 15.9083C12.2314 16.1083 11.4714 16.0683 10.8114 15.8483C10.8114 15.8483 9.38141 17.2783 8.35141 18.3083C7.85141 18.8083 8.01141 19.6883 8.68141 19.9483C9.75141 20.3583 10.8614 20.5683 12.0014 20.5683C13.7814 20.5683 15.5114 20.0483 17.0914 19.0783C18.7014 18.0783 20.1514 16.6083 21.3214 14.7383C22.2714 13.2283 22.2214 10.6883 21.2714 9.17834Z",fill:"currentColor"}),(0,s.jsx)("path",{d:"M14.0206 9.98062L9.98062 14.0206C9.47062 13.5006 9.14062 12.7806 9.14062 12.0006C9.14062 10.4306 10.4206 9.14062 12.0006 9.14062C12.7806 9.14062 13.5006 9.47062 14.0206 9.98062Z",fill:"currentColor"}),(0,s.jsx)("path",{d:"M18.25 5.74969L14.86 9.13969C14.13 8.39969 13.12 7.95969 12 7.95969C9.76 7.95969 7.96 9.76969 7.96 11.9997C7.96 13.1197 8.41 14.1297 9.14 14.8597L5.76 18.2497H5.75C4.64 17.3497 3.62 16.1997 2.75 14.8397C1.75 13.2697 1.75 10.7197 2.75 9.14969C3.91 7.32969 5.33 5.89969 6.91 4.91969C8.49 3.95969 10.22 3.42969 12 3.42969C14.23 3.42969 16.39 4.24969 18.25 5.74969Z",fill:"currentColor"}),(0,s.jsx)("path",{d:"M14.8581 11.9981C14.8581 13.5681 13.5781 14.8581 11.9981 14.8581C11.9381 14.8581 11.8881 14.8581 11.8281 14.8381L14.8381 11.8281C14.8581 11.8881 14.8581 11.9381 14.8581 11.9981Z",fill:"currentColor"}),(0,s.jsx)("path",{d:"M21.7689 2.22891C21.4689 1.92891 20.9789 1.92891 20.6789 2.22891L2.22891 20.6889C1.92891 20.9889 1.92891 21.4789 2.22891 21.7789C2.37891 21.9189 2.56891 21.9989 2.76891 21.9989C2.96891 21.9989 3.15891 21.9189 3.30891 21.7689L21.7689 3.30891C22.0789 3.00891 22.0789 2.52891 21.7689 2.22891Z",fill:"currentColor"})]}),p=e=>(0,s.jsxs)("svg",{"aria-hidden":"true",fill:"none",focusable:"false",height:"1em",role:"presentation",viewBox:"0 0 24 24",width:"1em",...e,children:[(0,s.jsx)("path",{d:"M21.25 9.14969C18.94 5.51969 15.56 3.42969 12 3.42969C10.22 3.42969 8.49 3.94969 6.91 4.91969C5.33 5.89969 3.91 7.32969 2.75 9.14969C1.75 10.7197 1.75 13.2697 2.75 14.8397C5.06 18.4797 8.44 20.5597 12 20.5597C13.78 20.5597 15.51 20.0397 17.09 19.0697C18.67 18.0897 20.09 16.6597 21.25 14.8397C22.25 13.2797 22.25 10.7197 21.25 9.14969ZM12 16.0397C9.76 16.0397 7.96 14.2297 7.96 11.9997C7.96 9.76969 9.76 7.95969 12 7.95969C14.24 7.95969 16.04 9.76969 16.04 11.9997C16.04 14.2297 14.24 16.0397 12 16.0397Z",fill:"currentColor"}),(0,s.jsx)("path",{d:"M11.9984 9.14062C10.4284 9.14062 9.14844 10.4206 9.14844 12.0006C9.14844 13.5706 10.4284 14.8506 11.9984 14.8506C13.5684 14.8506 14.8584 13.5706 14.8584 12.0006C14.8584 10.4306 13.5684 9.14062 11.9984 9.14062Z",fill:"currentColor"})]}),f=e=>{let{label:n,onFileSelect:l}=e;return(0,s.jsxs)("div",{children:[(0,s.jsx)("input",{type:"file",id:"file-input",style:{display:"none"},onChange:e=>{l(e.target.files[0])}}),(0,s.jsx)("label",{htmlFor:"file-input",children:(0,s.jsx)(u.A,{as:"span",color:"primary",children:n})})]})};function v(e){let{children:n,label:l}=e;return(0,s.jsx)(s.Fragment,{children:(0,s.jsxs)("div",{className:"",children:[(0,s.jsx)("h2",{className:"text-lg font-medium",children:l}),(0,s.jsx)("div",{className:"rounded-lg pl-8 pr-3 py-3 mb-2 shadow-md border",children:(0,s.jsx)("div",{className:"ml-4 rounded-lg shadow-inner border bg-card text-card-foreground min-h-80 ",children:n})})]})})}let C="\n1\n00:00:00,000 --> 00:00:02,000\nおはようございます。\n\n2\n00:00:02,000 --> 00:00:05,000\nお元気ですか?\n\n3\n00:00:05,000 --> 00:00:07,000\nはい、元気です。\n\n4\n00:00:08,000 --> 00:00:12,000\n今日は天気がいいですね。\n\n5\n00:00:12,000 --> 00:00:16,000\nはい、とてもいい天気です。\n\n6\n00:00:17,000 --> 00:00:21,000\n今日は何をしますか?\n\n7\n00:00:21,000 --> 00:00:24,000\n午後から\n\n8\n00:00:24,000 --> 00:00:26,000\n友達と\n\n9\n00:00:26,000 --> 00:00:28,000\n映画を見ます。\n\n10\n00:00:28,000 --> 00:00:30,000\nいいですね。\n\n";var j=l(8651),b=l(2993),g=l(7849),w=l(6901);let N="OPENAI_API_KEY",P="RATE_LIMIT";function y(){let[e,n]=(0,t.useState)(""),[l,y]=(0,t.useState)(""),[S,k]=(0,t.useState)("English"),[I,T]=(0,t.useState)(""),[L,A]=(0,t.useState)("gpt-3.5-turbo"),[E,M]=(0,t.useState)(0),[R,O]=(0,t.useState)(!0),[U,V]=(0,t.useState)(60);(0,t.useRef)();let[_,z]=(0,t.useState)(!1),[Z,Y]=(0,t.useState)(C),[F,B]=(0,t.useState)(C),[G,K]=(0,t.useState)(b.E2.fromSrt(C).map(e=>e.text)),[$,q]=(0,t.useState)([]),[D,H]=(0,t.useState)(""),[W,Q]=(0,t.useState)(!1),J=(0,t.useRef)(null),X=(0,t.useRef)(!1),[ee,en]=(0,t.useState)(null),[el,es]=(0,t.useState)(0);async function et(n){var s,t;n.preventDefault(),Q(!0),console.log("[User Interface]","Begin Generation"),X.current=!0,q([]),en(null);let r="",a=b.E2.fromSrt(Z),o=[],i=(0,g.QN)(e,!0),d=new w.h(U,6e4,"ChatGPTAPI"),c=new w.h(U,6e4,"OpenAIModerator");J.current=new j.$H({from:l,to:S},{openai:i,cooler:d,onStreamChunk:e=>{H(r+=e)},onStreamEnd:()=>{r="",H("")},moderationService:{openai:i,cooler:c}},{useModerator:R,createChatCompletionRequest:{model:L,temperature:E,stream:!0}}),I&&(J.current.systemInstruction=I);try{for await(let e of J.current.translateLines(G)){if(!X.current){console.error("[User Interface]","Aborted"),H("");break}o.push(e.finalTransform),a[e.index-1].text=e.finalTransform,q([...o]),en(J.current.usage),es(null===(s=J.current.services.cooler)||void 0===s?void 0:s.rate)}console.log({sourceInputWorkingCopy:a}),B(b.E2.toSrt(a))}catch(e){console.error(e),alert(null!==(t=null==e?void 0:e.message)&&void 0!==t?t:e)}X.current=!1,J.current=null,Q(!1)}async function er(){console.error("[User Interface]","Aborting"),J.current&&(X.current=!1,J.current.abort())}return(0,t.useEffect)(()=>{var e,l;n(null!==(e=localStorage.getItem(N))&&void 0!==e?e:""),V(Number(null!==(l=localStorage.getItem(P))&&void 0!==l?l:U))},[]),(0,s.jsx)(s.Fragment,{children:(0,s.jsxs)("div",{className:"w-full",children:[(0,s.jsx)("form",{id:"translator-config-form",onSubmit:e=>et(e),children:(0,s.jsx)("div",{className:"px-4 pt-4 flex flex-wrap justify-between w-full gap-4",children:(0,s.jsxs)(r.w,{className:"z-10 w-full shadow-md border",shadow:"none",children:[(0,s.jsx)(a.u,{className:"flex gap-3 pb-0",children:(0,s.jsx)("div",{className:"flex flex-col",children:(0,s.jsx)("p",{className:"text-md",children:"Configuration"})})}),(0,s.jsx)(o.G,{children:(0,s.jsxs)("div",{className:"flex flex-wrap justify-between w-full gap-4",children:[(0,s.jsx)(i.Y,{className:"w-full",size:"sm",value:e,onValueChange:e=>{localStorage.setItem(N,e),n(e)},isRequired:!0,autoComplete:"off",label:"OpenAI API Key",variant:"flat",description:"API Key is stored locally in browser",endContent:(0,s.jsx)("button",{className:"focus:outline-none",type:"button",onClick:()=>z(!_),children:_?(0,s.jsx)(x,{className:"text-2xl text-default-400 pointer-events-none"}):(0,s.jsx)(p,{className:"text-2xl text-default-400 pointer-events-none"})}),type:_?"text":"password"}),(0,s.jsxs)("div",{className:"flex w-full gap-4",children:[(0,s.jsx)(i.Y,{className:"w-full md:w-6/12",size:"sm",type:"text",label:"From Language",placeholder:"Auto",autoComplete:"on",value:l,onValueChange:y}),(0,s.jsx)(i.Y,{className:"w-full md:w-6/12",size:"sm",type:"text",label:"To Language",autoComplete:"on",value:S,onValueChange:k})]}),(0,s.jsx)("div",{className:"w-full",children:(0,s.jsx)(d.Y,{label:"System Instruction",minRows:2,description:"Override preset system instruction",placeholder:"Translate ".concat(l?l+" ":"","to ").concat(S),value:I,onValueChange:T})}),(0,s.jsxs)("div",{className:"flex flex-wrap md:flex-nowrap w-full gap-4",children:[(0,s.jsx)("div",{className:"w-full md:w-4/12",children:(0,s.jsx)(i.Y,{size:"sm",type:"text",label:"Model",autoComplete:"on",value:L,onValueChange:A})}),(0,s.jsx)("div",{className:"w-full md:w-3/12",children:(0,s.jsx)(c.L,{label:"Temperature",size:"md",hideThumb:!0,step:.1,maxValue:2,minValue:0,value:E,onChange:e=>M(Number(e))})}),(0,s.jsxs)("div",{className:"w-full md:w-5/12 gap-4 flex flex-wrap md:flex-nowrap",children:[(0,s.jsx)("div",{className:"w-full md:w-6/12 flex",children:(0,s.jsx)(m.i,{size:"sm",isSelected:R,onValueChange:O,children:"Use Moderator"})}),(0,s.jsx)(i.Y,{className:"w-full md:w-6/12",size:"sm",type:"number",min:"1",label:"Rate Limit",value:U.toString(),onValueChange:e=>{localStorage.setItem(P,e),V(Number(e))},autoComplete:"on",endContent:(0,s.jsx)("div",{className:"pointer-events-none flex items-center",children:(0,s.jsx)("span",{className:"text-default-400 text-small",children:"RPM"})})})]})]})]})})]})})}),(0,s.jsxs)("div",{className:"w-full justify-between md:justify-center flex flex-wrap gap-1 sm:gap-4 mt-auto sticky top-0 backdrop-blur px-4 pt-4",children:[(0,s.jsx)(f,{label:"Import SRT",onFileSelect:async e=>{try{let n=await e.text(),l=b.E2.fromSrt(n);Y(n),K(l.map(e=>e.text))}catch(e){var n;alert(null!==(n=e.message)&&void 0!==n?n:e)}}}),!W&&(0,s.jsx)(u.A,{type:"submit",form:"translator-config-form",color:"primary",isDisabled:!e||W,children:"Start"}),W&&(0,s.jsx)(u.A,{color:"danger",onClick:()=>er(),isLoading:!D,children:"Stop"}),(0,s.jsx)(u.A,{color:"primary",onClick:()=>{var e,n,l;e="text/plain",n=new Blob([F],{type:e}),(l=document.createElement("a")).download="export.srt",l.href=URL.createObjectURL(n),l.dataset.downloadurl=[e,l.download,l.href].join(":"),l.style.display="none",document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(function(){URL.revokeObjectURL(l.href)},1500)},children:"Export SRT"}),(0,s.jsx)(h.j,{className:"mt-3 sm:mt-0"})]}),(0,s.jsxs)("div",{className:"lg:flex lg:gap-4 px-4 mt-4",children:[(0,s.jsx)("div",{className:"lg:w-1/2",children:(0,s.jsx)(v,{label:"Input",children:(0,s.jsx)("ol",{className:"py-2 list-decimal line-marker ",children:G.map((e,n)=>(0,s.jsx)("li",{className:"",children:(0,s.jsx)("div",{className:"ml-4 truncate",children:e})},n))})})}),(0,s.jsxs)("div",{className:"lg:w-1/2",children:[(0,s.jsx)(v,{label:"Output",children:(0,s.jsxs)("ol",{className:"py-2 list-decimal line-marker ",children:[$.map((e,n)=>(0,s.jsx)("li",{className:"",children:(0,s.jsx)("div",{className:"ml-4 truncate",children:e})},n)),(0,s.jsx)("pre",{className:"px-2",children:D})]})}),ee&&(0,s.jsxs)(r.w,{shadow:"sm",className:"mt-4 p-4",children:[(0,s.jsx)("span",{children:(0,s.jsx)("b",{children:"Estimated Usage"})}),(0,s.jsxs)("span",{children:["Tokens: ",null==ee?void 0:ee.usedTokens," $",null==ee?void 0:ee.usedTokensPricing]}),(null==ee?void 0:ee.wastedTokens)>0&&(0,s.jsxs)("span",{className:"text-danger",children:["Wasted: ",null==ee?void 0:ee.wastedTokens," $",null==ee?void 0:ee.wastedTokensPricing," ",null==ee?void 0:ee.wastedPercent]}),(0,s.jsxs)("span",{children:[null==ee?void 0:ee.rate," TPM ",el," RPM"]})]})]})]})]})})}}},function(e){e.O(0,[683,439,703,971,938,744],function(){return e(e.s=8189)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/index.html b/index.html index b40c553..8b42170 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -ChatGPT Subtitle Translator

Configuration

0
RPM

Input

  1. おはようございます。
  2. お元気ですか?
  3. はい、元気です。
  4. 今日は天気がいいですね。
  5. はい、とてもいい天気です。
  6. 今日は何をしますか?
  7. 午後から
  8. 友達と
  9. 映画を見ます。
  10. いいですね。

Output

\ No newline at end of file +ChatGPT Subtitle Translator

Configuration

0
RPM

Input

  1. おはようございます。
  2. お元気ですか?
  3. はい、元気です。
  4. 今日は天気がいいですね。
  5. はい、とてもいい天気です。
  6. 今日は何をしますか?
  7. 午後から
  8. 友達と
  9. 映画を見ます。
  10. いいですね。

Output

\ No newline at end of file diff --git a/index.txt b/index.txt index ef4b195..b24ce0b 100644 --- a/index.txt +++ b/index.txt @@ -1,7 +1,7 @@ -2:I[4675,["683","static/chunks/86dd9725-5a1c4397c956d2a1.js","439","static/chunks/9e785ea6-a90cd1254dd0e315.js","703","static/chunks/703-254b73a254ac49f4.js","931","static/chunks/app/page-fdb01c0c30697658.js"],"TranslatorApplication"] -3:I[1047,["683","static/chunks/86dd9725-5a1c4397c956d2a1.js","439","static/chunks/9e785ea6-a90cd1254dd0e315.js","703","static/chunks/703-254b73a254ac49f4.js","931","static/chunks/app/page-fdb01c0c30697658.js"],"Link"] +2:I[4675,["683","static/chunks/86dd9725-5a1c4397c956d2a1.js","439","static/chunks/9e785ea6-a90cd1254dd0e315.js","703","static/chunks/703-8f5e4a39e2d70863.js","931","static/chunks/app/page-a8c9653d14a7a5b4.js"],"TranslatorApplication"] +3:I[1047,["683","static/chunks/86dd9725-5a1c4397c956d2a1.js","439","static/chunks/9e785ea6-a90cd1254dd0e315.js","703","static/chunks/703-8f5e4a39e2d70863.js","931","static/chunks/app/page-a8c9653d14a7a5b4.js"],"Link"] 4:I[5613,[],""] 5:I[1778,[],""] -0:["7tmJpvtoIQV0Aui_BJIpO",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},["$L1",["$","main",null,{"className":"min-h-screen flex flex-col justify-between","children":[["$","$L2",null,{}],["$","footer",null,{"className":"flex w-full my-4","children":["$","div",null,{"className":"mx-auto","children":[["$","b",null,{"className":"w-full","children":"ChatGPT Subtitle Translator"}],["$","div",null,{"className":"flex flex-wrap items-center justify-center","children":[["$","div",null,{"className":"sm:w-auto text-center","children":["$","$L3",null,{"isExternal":true,"className":"mr-2 text-blue-500","href":"https://github.com/Cerlancism","children":"@Cerlancism"}]}],["$","a",null,{"href":"https://github.com/Cerlancism/chatgpt-subtitle-translator","target":"_blank","rel":"noopener noreferrer","className":"flex items-center justify-center","children":["$","img",null,{"className":"w-8 h-8 mx-auto","src":"/chatgpt-subtitle-translator/github-mark.svg","alt":"GitHub"}]}]]}]]}]}]]}],null]]},[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_942d8e light","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"styles":null}]}]}],null]],[[["$","link","0",{"rel":"stylesheet","href":"/chatgpt-subtitle-translator/_next/static/css/ae76624b2868b1e3.css","precedence":"next","crossOrigin":""}]],"$L6"]]]] +0:["aANXYn-Y2in6xNhs3W--n",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},["$L1",["$","main",null,{"className":"min-h-screen flex flex-col justify-between","children":[["$","$L2",null,{}],["$","footer",null,{"className":"flex w-full my-4","children":["$","div",null,{"className":"mx-auto","children":[["$","b",null,{"className":"w-full","children":"ChatGPT Subtitle Translator"}],["$","div",null,{"className":"flex flex-wrap items-center justify-center","children":[["$","div",null,{"className":"sm:w-auto text-center","children":["$","$L3",null,{"isExternal":true,"className":"mr-2 text-blue-500","href":"https://github.com/Cerlancism","children":"@Cerlancism"}]}],["$","a",null,{"href":"https://github.com/Cerlancism/chatgpt-subtitle-translator","target":"_blank","rel":"noopener noreferrer","className":"flex items-center justify-center","children":["$","img",null,{"className":"w-8 h-8 mx-auto","src":"/chatgpt-subtitle-translator/github-mark.svg","alt":"GitHub"}]}]]}]]}]}]]}],null]]},[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_942d8e light","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"styles":null}]}]}],null]],[[["$","link","0",{"rel":"stylesheet","href":"/chatgpt-subtitle-translator/_next/static/css/ae76624b2868b1e3.css","precedence":"next","crossOrigin":""}]],"$L6"]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"ChatGPT Subtitle Translator"}],["$","meta","3",{"name":"description","content":"Translate SRT subtitles using OpenAI ChatGPT API"}],["$","link","4",{"rel":"icon","href":"/chatgpt-subtitle-translator/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","meta","5",{"name":"next-size-adjust"}]] 1:null