TelegramPWA/dist/8621.c9b9f0325b42da2e7cdf.js
Alexander Zinchuk aef5c08a38 [Build]
2025-11-17 12:33:29 +04:00

2 lines
8.2 KiB
JavaScript

"use strict";(self.webpackChunktelegram_t=self.webpackChunktelegram_t||[]).push([[8621],{78621:(e,a,t)=>{t.d(a,{S:()=>p});var r=t(4017),s=t(56185),i=t(17833),n=t(47675),c=t(68191),d=t(63324);const o=i("music-metadata:id3v2:frame-parser"),l="latin1";function h(e){return"RX"===e?"Remix":"CR"===e?"Cover":e.match(/^\d*$/)?c.jR[Number.parseInt(e,10)]:void 0}class u{constructor(e,a){this.major=e,this.warningCollector=a}readData(e,a,t){if(0===e.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${a}`);const{encoding:i,bom:c}=n.YF.get(e,0),d=e.length;let m=0,p=[];const y=u.getNullTerminatorLength(i);let f;switch(o(`Parsing tag type=${a}, encoding=${i}, bom=${c}`),"TXXX"!==a&&"T"===a[0]?"T*":a){case"T*":case"GRP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let t;try{t=s.sc(e.subarray(1),i).replace(/\x00+$/,"")}catch(e){if(e instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${a} header has invalid string value: ${e.message}`);break}throw e}switch(a){case"TMCL":case"TIPL":case"IPLS":p=u.functionList(this.splitValue(a,t));break;case"TRK":case"TRCK":case"TPOS":p=t;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":p=this.splitValue(a,t);break;case"TCO":case"TCON":p=this.splitValue(a,t).map(e=>function(e){const a=[];let t,r="";for(const s of e)if("string"==typeof t)if("("===s&&""===t)r+="(",t=void 0;else if(")"===s){""!==r&&(a.push(r),r="");const e=h(t);e&&a.push(e),t=void 0}else t+=s;else"("===s?t="":r+=s;return r&&(0===a.length&&r.match(/^\d*$/)&&(r=h(r)),r&&a.push(r)),a}(e)).reduce((e,a)=>e.concat(a),[]);break;case"PCS":case"PCST":p=this.major>=4?this.splitValue(a,t):[t],p=Array.isArray(p)&&""===p[0]?1:0;break;default:p=this.major>=4?this.splitValue(a,t):[t]}break}case"TXXX":{const t=u.readIdentifierAndData(e,m+1,d,i);p={description:t.id,text:this.splitValue(a,s.sc(t.data,i).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(t){const a={};switch(m+=1,this.major){case 2:a.format=s.sc(e.subarray(m,m+3),"latin1"),m+=3;break;case 3:case 4:f=s.sX(e,m,d,l),a.format=s.sc(e.subarray(m,f),l),m=f+1;break;default:throw function(e){throw new g(`Unexpected majorVer: ${e}`)}(this.major)}a.format=u.fixPictureMimeType(a.format),a.type=n.n5[e[m]],m+=1,f=s.sX(e,m,d,i),a.description=s.sc(e.subarray(m,f),i),m=f+y,a.data=e.subarray(m,d),p=a}break;case"CNT":case"PCNT":p=(0,s.ku)(e);break;case"SYLT":{const a=n.aY.get(e,0);m+=n.aY.len;const t={descriptor:"",language:a.language,contentType:a.contentType,timeStampFormat:a.timeStampFormat,syncText:[]};let s=!1;for(;m<d;){const i=u.readNullTerminatedString(e.subarray(m),a.encoding);if(m+=i.len,s){const a=r.UINT32_BE.get(e,m);m+=r.UINT32_BE.len,t.syncText.push({text:i.text,timestamp:a})}else t.descriptor=i.text,s=!0}p=t;break}case"ULT":case"USLT":case"COM":case"COMM":{const a=n.Jp.get(e,m);m+=n.Jp.len;const t=u.readNullTerminatedString(e.subarray(m),a.encoding);m+=t.len;const r=u.readNullTerminatedString(e.subarray(m),a.encoding);p={language:a.language,descriptor:t.text,text:r.text};break}case"UFID":{const a=u.readIdentifierAndData(e,m,d,l);p={owner_identifier:a.id,identifier:a.data};break}case"PRIV":{const a=u.readIdentifierAndData(e,m,d,l);p={owner_identifier:a.id,data:a.data};break}case"POPM":{f=s.sX(e,m,d,l);const a=s.sc(e.subarray(m,f),l);m=f+1;const t=d-m-1;p={email:a,rating:r.UINT8.get(e,m),counter:t>0?s.ku(e.subarray(m+1)):void 0};break}case"GEOB":{f=s.sX(e,m+1,d,i);const a=s.sc(e.subarray(m+1,f),l);m=f+1,f=s.sX(e,m,d,i);const t=s.sc(e.subarray(m,f),l);m=f+1,f=s.sX(e,m,d,i);const r=s.sc(e.subarray(m,f),l);m=f+1,p={type:a,filename:t,description:r,data:e.subarray(m,d)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":f=s.sX(e,m+1,d,i),p=s.sc(e.subarray(m,f),l);break;case"WXXX":{f=s.sX(e,m+1,d,i);const a=s.sc(e.subarray(m+1,f),i);m=f+("utf-16le"===i?2:1),p={description:a,url:s.sc(e.subarray(m,d),l)};break}case"WFD":case"WFED":p=s.sc(e.subarray(m+1,s.sX(e,m+1,d,i)),i);break;case"MCDI":p=e.subarray(0,d);break;default:o(`Warning: unsupported id3v2-tag-type: ${a}`)}return p}static readNullTerminatedString(e,a){let t=a.bom?2:0;const r=s.sX(e,t,e.length,a.encoding),i=e.subarray(t,r);return t="utf-16le"===a.encoding?r+2:r+1,{text:s.sc(i,a.encoding),len:t}}static fixPictureMimeType(e){switch(e=e.toLocaleLowerCase()){case"jpg":return"image/jpeg";case"png":return"image/png"}return e}static functionList(e){const a={};for(let t=0;t+1<e.length;t+=2){const r=e[t+1].split(",");a[e[t]]=a[e[t]]?a[e[t]].concat(r):r}return a}splitValue(e,a){let t;return this.major<4?(t=a.split(/\x00/g),t.length>1?this.warningCollector.addWarning(`ID3v2.${this.major} ${e} uses non standard null-separator.`):t=a.split(/\//g)):t=a.split(/\x00/g),u.trimArray(t)}static trimArray(e){return e.map(e=>e.replace(/\x00+$/,"").trim())}static readIdentifierAndData(e,a,t,r){const i=s.sX(e,a,t,r),n=s.sc(e.subarray(a,i),r);return a=i+u.getNullTerminatorLength(r),{id:n,data:e.subarray(a,t)}}static getNullTerminatorLength(e){return"utf-16le"===e?2:1}}class g extends((0,d.fO)("id3v2")){}var m=t(12971);class p{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(e){let a=0,t=0;for(;a<e.length-1;)a!==t&&(e[t]=e[a]),a+=255===e[a]&&0===e[a+1]?2:1,t++;return a<e.length&&(e[t++]=e[a]),e.subarray(0,t)}static getFrameHeaderLength(e){switch(e){case 2:return 6;case 3:case 4:return 10;default:throw y(e)}}static readFrameFlags(e){return{status:{tag_alter_preservation:s.mh(e,0,6),file_alter_preservation:s.mh(e,0,5),read_only:s.mh(e,0,4)},format:{grouping_identity:s.mh(e,1,7),compression:s.mh(e,1,3),encryption:s.mh(e,1,2),unsynchronisation:s.mh(e,1,1),data_length_indicator:s.mh(e,1,0)}}}static readFrameData(e,a,t,r,s){const i=new u(t,s);switch(t){case 2:return i.readData(e,a.id,r);case 3:case 4:return a.flags?.format.unsynchronisation&&(e=p.removeUnsyncBytes(e)),a.flags?.format.data_length_indicator&&(e=e.subarray(4,e.length)),i.readData(e,a.id,r);default:throw y(t)}}static makeDescriptionTagName(e,a){return e+(a?`:${a}`:"")}async parse(e,a,t){this.tokenizer=a,this.metadata=e,this.options=t;const r=await this.tokenizer.readToken(n.yW);if("ID3"!==r.fileIdentifier)throw new g("expected ID3-header file-identifier 'ID3' was not found");return this.id3Header=r,this.headerType=`ID3v2.${r.version.major}`,r.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(r.size)}async parseExtendedHeader(){const e=await this.tokenizer.readToken(n.nl),a=e.size-n.nl.len;return a>0?this.parseExtendedHeaderData(a,e.size):this.parseId3Data(this.id3Header.size-e.size)}async parseExtendedHeaderData(e,a){return await this.tokenizer.ignore(e),this.parseId3Data(this.id3Header.size-a)}async parseId3Data(e){const a=await this.tokenizer.readToken(new r.Uint8ArrayType(e));for(const e of this.parseMetadata(a))"TXXX"===e.id?e.value&&await this.handleTag(e,e.value.text,()=>e.value.description):await(Array.isArray(e.value)?Promise.all(e.value.map(a=>this.addTag(e.id,a))):this.addTag(e.id,e.value))}async handleTag(e,a,t,r=e=>e){await Promise.all(a.map(a=>this.addTag(p.makeDescriptionTagName(e.id,t(a)),r(a))))}async addTag(e,a){await this.metadata.addTag(this.headerType,e,a)}parseMetadata(e){let a=0;const t=[];for(;a!==e.length;){const r=p.getFrameHeaderLength(this.id3Header.version.major);if(a+r>e.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}const s=e.subarray(a,a+r);a+=r;const i=this.readFrameHeader(s,this.id3Header.version.major),n=e.subarray(a,a+i.length);a+=i.length;const c=p.readFrameData(n,i,this.id3Header.version.major,!this.options.skipCovers,this.metadata);c&&t.push({id:i.id,value:c})}return t}readFrameHeader(e,a){let t;switch(a){case 2:t={id:(0,m.c)(e.subarray(0,3),"ascii"),length:r.UINT24_BE.get(e,3)},t.id.match(/[A-Z0-9]{3}/g)||this.metadata.addWarning(`Invalid ID3v2.${this.id3Header.version.major} frame-header-ID: ${t.id}`);break;case 3:case 4:t={id:(0,m.c)(e.subarray(0,4),"ascii"),length:(4===a?n.St:r.UINT32_BE).get(e,4),flags:p.readFrameFlags(e.subarray(8,10))},t.id.match(/[A-Z0-9]{4}/g)||this.metadata.addWarning(`Invalid ID3v2.${this.id3Header.version.major} frame-header-ID: ${t.id}`);break;default:throw y(a)}return t}}function y(e){throw new g(`Unexpected majorVer: ${e}`)}}}]);
//# sourceMappingURL=8621.c9b9f0325b42da2e7cdf.js.map