Spaces:
Paused
Paused
Download packages/parser/src/parser.ts from f4b404/aiostreams: direct link, hf CLI and curl.
- Browser
- Download file 1.12 kB
-
https://huggingface.co/spaces/f4b404/aiostreams/resolve/main/packages/parser/src/parser.ts
- Command line
-
hf download hf://spaces/f4b404/aiostreams/packages/parser/src/parser.ts
-
curl -L -o parser.ts https://huggingface.co/spaces/f4b404/aiostreams/resolve/main/packages/parser/src/parser.ts
1.12 kB
| import { ParsedNameData } from '@aiostreams/types'; | |
| import { PARSE_REGEX } from './regex'; | |
| function matchPattern( | |
| filename: string, | |
| patterns: Record<string, RegExp> | |
| ): string { | |
| return ( | |
| Object.entries(patterns).find(([_, pattern]) => | |
| pattern.test(filename) | |
| )?.[0] ?? 'Unknown' | |
| ); | |
| } | |
| function matchMultiplePatterns( | |
| filename: string, | |
| patterns: Record<string, RegExp> | |
| ): string[] { | |
| return Object.entries(patterns) | |
| .filter(([_, pattern]) => pattern.test(filename)) | |
| .map(([tag]) => tag); | |
| } | |
| export function parseFilename(filename: string): ParsedNameData { | |
| const resolution = matchPattern(filename, PARSE_REGEX.resolutions); | |
| const quality = matchPattern(filename, PARSE_REGEX.qualities); | |
| const encode = matchPattern(filename, PARSE_REGEX.encodes); | |
| const visualTags = matchMultiplePatterns(filename, PARSE_REGEX.visualTags); | |
| const audioTags = matchMultiplePatterns(filename, PARSE_REGEX.audioTags); | |
| const languages = matchMultiplePatterns(filename, PARSE_REGEX.languages); | |
| return { | |
| resolution, | |
| quality, | |
| languages, | |
| encode, | |
| audioTags, | |
| visualTags, | |
| }; | |
| } | |