TelegramPWA/dist/2465.8006beefe86aadf4973a.js
Alexander Zinchuk 6fd1d0c598 [Build]
2025-09-19 14:39:00 +02:00

2 lines
7.7 KiB
JavaScript

"use strict";(self.webpackChunktelegram_t=self.webpackChunktelegram_t||[]).push([[2465],{9427:(e,t,a)=>{a.d(t,{J:()=>c});var s=a(4017),i=a(17833),r=a(61902),n=a(92304),o=a(63324);const h=i("music-metadata:parser:ogg:vorbis1");class l extends((0,o.fO)("Vorbis")){}class c{constructor(e,t){this.pageSegments=[],this.metadata=e,this.options=t}async parsePage(e,t){if(e.headerType.firstPage)this.parseFirstPage(e,t);else{if(e.headerType.continued){if(0===this.pageSegments.length)throw new l("Cannot continue on previous page");this.pageSegments.push(t)}if(e.headerType.lastPage||!e.headerType.continued){if(this.pageSegments.length>0){const e=c.mergeUint8Arrays(this.pageSegments);await this.parseFullPage(e)}this.pageSegments=e.headerType.lastPage?[]:[t]}}e.headerType.lastPage&&this.calculateDuration(e)}static mergeUint8Arrays(e){const t=e.reduce((e,t)=>e+t.length,0),a=new Uint8Array(t);return e.forEach((e,t,s)=>{const i=s.slice(0,t).reduce((e,t)=>e+t.length,0);a.set(e,i)}),a}async flush(){await this.parseFullPage(c.mergeUint8Arrays(this.pageSegments))}async parseUserComment(e,t){const a=new r.Y(e,t).parseUserComment();return await this.addTag(a.key,a.value),a.len}async addTag(e,t){if("METADATA_BLOCK_PICTURE"===e&&"string"==typeof t){if(this.options.skipCovers)return void h("Ignore picture");t=n.xu.fromBase64(t),h(`Push picture: id=${e}, format=${t.format}`)}else h(`Push tag: id=${e}, value=${t}`);await this.metadata.addTag("vorbis",e,t)}calculateDuration(e){this.metadata.format.sampleRate&&e.absoluteGranulePosition>=0&&(this.metadata.setFormat("numberOfSamples",e.absoluteGranulePosition),this.metadata.setFormat("duration",e.absoluteGranulePosition/this.metadata.format.sampleRate))}parseFirstPage(e,t){this.metadata.setFormat("codec","Vorbis I"),h("Parse first page");const a=n.Z.get(t,0);if("vorbis"!==a.vorbis)throw new l("Metadata does not look like Vorbis");if(1!==a.packetType)throw new l("First Ogg page should be type 1: the identification header");{const e=n.Sl.get(t,n.Z.len);this.metadata.setFormat("sampleRate",e.sampleRate),this.metadata.setFormat("bitrate",e.bitrateNominal),this.metadata.setFormat("numberOfChannels",e.channelMode),h("sample-rate=%s[hz], bitrate=%s[b/s], channel-mode=%s",e.sampleRate,e.bitrateNominal,e.channelMode)}}async parseFullPage(e){const t=n.Z.get(e,0);if(h("Parse full page: type=%s, byteLength=%s",t.packetType,e.byteLength),3===t.packetType)return this.parseUserCommentList(e,n.Z.len)}async parseUserCommentList(e,t){const a=s.UINT32_LE.get(e,t);t+=4,t+=a;let i=s.UINT32_LE.get(e,t);for(t+=4;i-- >0;)t+=await this.parseUserComment(e,t)}}},61902:(e,t,a)=>{a.d(t,{Y:()=>i});var s=a(4017);class i{constructor(e,t){this.data=e,this.offset=t}readInt32(){const e=s.UINT32_LE.get(this.data,this.offset);return this.offset+=4,e}readStringUtf8(){const e=this.readInt32(),t=new TextDecoder("utf-8").decode(this.data.subarray(this.offset,this.offset+e));return this.offset+=e,t}parseUserComment(){const e=this.offset,t=this.readStringUtf8(),a=t.indexOf("=");return{key:t.slice(0,a).toUpperCase(),value:t.slice(a+1),len:this.offset-e}}}},62465:(e,t,a)=>{a.r(t),a.d(t,{FlacParser:()=>g});var s=a(4017),i=a(17833),r=a(56185),n=a(92304),o=a(94481),h=a(5031),l=a(9427),c=a(61902),d=a(63324);const m=i("music-metadata:parser:FLAC");class p extends((0,d.fO)("FLAC")){}class g extends o.k{constructor(){super(...arguments),this.vorbisParser=new l.J(this.metadata,this.options),this.padding=0}async postId3v2Parse(){if("fLaC"!==(await this.tokenizer.readToken(h.e)).toString())throw new p("Invalid FLAC preamble");let e;do{e=await this.tokenizer.readToken(f),await this.parseDataBlock(e)}while(!e.lastBlock);if(this.tokenizer.fileInfo.size&&this.metadata.format.duration){const e=this.tokenizer.fileInfo.size-this.tokenizer.position;this.metadata.setFormat("bitrate",8*e/this.metadata.format.duration)}}async parseDataBlock(e){switch(m(`blockHeader type=${e.type}, length=${e.length}`),e.type){case 0:return this.parseBlockStreamInfo(e.length);case 1:this.padding+=e.length;break;case 2:case 3:case 5:break;case 4:return this.parseComment(e.length);case 6:return void await this.parsePicture(e.length);default:this.metadata.addWarning(`Unknown block type: ${e.type}`)}return this.tokenizer.ignore(e.length).then()}async parseBlockStreamInfo(e){if(e!==u.len)throw new p("Unexpected block-stream-info length");const t=await this.tokenizer.readToken(u);this.metadata.setFormat("container","FLAC"),this.metadata.setFormat("codec","FLAC"),this.metadata.setFormat("lossless",!0),this.metadata.setFormat("numberOfChannels",t.channels),this.metadata.setFormat("bitsPerSample",t.bitsPerSample),this.metadata.setFormat("sampleRate",t.sampleRate),t.totalSamples>0&&this.metadata.setFormat("duration",t.totalSamples/t.sampleRate)}async parseComment(e){const t=await this.tokenizer.readToken(new s.Uint8ArrayType(e)),a=new c.Y(t,0);a.readStringUtf8();const i=a.readInt32(),r=new Array(i);for(let e=0;e<i;e++)r[e]=a.parseUserComment();await Promise.all(r.map(e=>this.vorbisParser.addTag(e.key,e.value)))}async parsePicture(e){if(this.options.skipCovers)return this.tokenizer.ignore(e);const t=await this.tokenizer.readToken(new n.xu(e));this.vorbisParser.addTag("METADATA_BLOCK_PICTURE",t)}}const f={len:4,get:(e,t)=>({lastBlock:r.mh(e,t,7),type:r.f5(e,t,1,7),length:s.UINT24_BE.get(e,t+1)})},u={len:34,get:(e,t)=>({minimumBlockSize:s.UINT16_BE.get(e,t),maximumBlockSize:s.UINT16_BE.get(e,t+2)/1e3,minimumFrameSize:s.UINT24_BE.get(e,t+4),maximumFrameSize:s.UINT24_BE.get(e,t+7),sampleRate:s.UINT24_BE.get(e,t+10)>>4,channels:r.f5(e,t+12,4,3)+1,bitsPerSample:r.f5(e,t+12,7,5)+1,totalSamples:r.f5(e,t+13,4,36),fileMD5:new s.Uint8ArrayType(16).get(e,t+18)})}},92304:(e,t,a)=>{a.d(t,{Sl:()=>o,Z:()=>n,xu:()=>r});var s=a(4017),i=a(47675);class r{static fromBase64(e){return r.fromBuffer(Uint8Array.from(atob(e),e=>e.charCodeAt(0)))}static fromBuffer(e){return new r(e.length).get(e,0)}constructor(e){this.len=e}get(e,t){const a=i.n5[s.UINT32_BE.get(e,t)];t+=4;const r=s.UINT32_BE.get(e,t);t+=4;const n=new s.StringType(r,"utf-8").get(e,t);t+=r;const o=s.UINT32_BE.get(e,t);t+=4;const h=new s.StringType(o,"utf-8").get(e,t);t+=o;const l=s.UINT32_BE.get(e,t);t+=4;const c=s.UINT32_BE.get(e,t);t+=4;const d=s.UINT32_BE.get(e,t);t+=4;const m=s.UINT32_BE.get(e,t);t+=4;const p=s.UINT32_BE.get(e,t);return t+=4,{type:a,format:n,description:h,width:l,height:c,colour_depth:d,indexed_color:m,data:Uint8Array.from(e.slice(t,t+p))}}}const n={len:7,get:(e,t)=>({packetType:s.UINT8.get(e,t),vorbis:new s.StringType(6,"ascii").get(e,t+1)})},o={len:23,get:(e,t)=>({version:s.UINT32_LE.get(e,t+0),channelMode:s.UINT8.get(e,t+4),sampleRate:s.UINT32_LE.get(e,t+5),bitrateMax:s.UINT32_LE.get(e,t+9),bitrateNominal:s.UINT32_LE.get(e,t+13),bitrateMin:s.UINT32_LE.get(e,t+17)})}},94481:(e,t,a)=>{a.d(t,{k:()=>c});var s=a(10718),i=a(17833),r=a(47675),n=a(78621),o=a(68191),h=a(74604);const l=i("music-metadata:parser:ID3");class c extends h.s{constructor(){super(...arguments),this.id3parser=new n.S}static async startsWithID3v2Header(e){return"ID3"===(await e.peekToken(r.yW)).fileIdentifier}async parse(){try{await this.parseID3v2()}catch(e){if(!(e instanceof s.d1))throw e;l("End-of-stream")}}finalize(){}async parseID3v2(){if(await this.tryReadId3v2Headers(),l("End of ID3v2 header, go to MPEG-parser: pos=%s",this.tokenizer.position),await this.postId3v2Parse(),this.options.skipPostHeaders&&this.metadata.hasAny())this.finalize();else{const e=new o.Bn(this.metadata,this.tokenizer,this.options);await e.parse(),this.finalize()}}async tryReadId3v2Headers(){if("ID3"===(await this.tokenizer.peekToken(r.yW)).fileIdentifier)return l("Found ID3v2 header, pos=%s",this.tokenizer.position),await this.id3parser.parse(this.metadata,this.tokenizer,this.options),this.tryReadId3v2Headers()}}}}]);
//# sourceMappingURL=2465.8006beefe86aadf4973a.js.map