1
0
mirror of synced 2026-05-22 14:43:19 +00:00

565 Commits

Author SHA1 Message Date
Borewit 660432dc38 Prevent negative ignore when seeking APEv2 header in ID3v1Parser 2026-03-26 17:14:56 +01:00
Borewit 2beb45c9ab Fix TypeScript decleration inclusion 2026-03-12 19:34:22 +01:00
Borewit 318e963e21 Fix CWE-85 by avoiding infinite loop in ASF 2026-03-11 21:52:47 +01:00
Borewit 5b7e69c82e Simplify tsconfig.prod.json by removing unused options 2026-03-11 21:47:56 +01:00
Borewit 922ffabad7 Map .wma and .wmv. extension to AsfParser 2026-03-11 17:43:43 +01:00
Borewit a40b3296f6 Separate production and development build
Only the development includes source maps
2026-02-28 13:53:59 +01:00
Borewit 952ceae807 Fix miscalculation Ogg/Vorbis, duration miscalculation
Fix miscalculation occurring when Ogg/Vorbis files when the duration option is not explicitly enabled. In that case, the parser performs a partial read of the file and reports the duration based only on the processed portion, resulting in an incomplete value.

Resolves #2518
2026-02-16 19:30:57 +01:00
ma225tq 7c57bdcbdf refactor(MetadataCollector): add common types for SingularArtistId & PluralArtistId 2026-02-08 14:15:46 +01:00
ma225tq 86b5d9b7c7 refactor(MetaDataCollector): extract artist/albumartist handling into helper functions 2026-02-08 14:15:46 +01:00
ma225tq 17216a903a fix(type.ts): correct indentation in albumartist field description 2026-02-08 14:15:46 +01:00
ma225tq d1916dea39 test: add test for multiple album artists in FLAC files 2026-02-08 14:15:46 +01:00
ma225tq 2f35aacd29 fix(type.ts): correct albumartist field description 2026-02-08 14:15:46 +01:00
ma225tq 829b923e37 fix(type.ts): clarify albumartist field description
This was done to help tell the difference between the existing albumartist and the new albumartists
2026-02-08 14:15:46 +01:00
ma225tq cd43849970 feat(MetadataCollector): add common.albumartists array support
Add albumartists field following the same pattern as artists:
  - Multiple TPE2 frames or null-separated values now populate common.albumartists array (like TPE1 does for common.artists)
  - Cross-population between albumartist/albumartists fields
2026-02-08 14:15:46 +01:00
glebrock e191ae87e8 #2574: add support for correctly populating the 'metadata.common.grouping' field for a file with an Tunes IDv2.2 tag with the 'GP1' frame 2026-02-02 20:18:17 +01:00
Borewit 4909b6fe12 fix(id3v2): prevent crash when no tag frames present
Fix TypeError: Cannot read properties of undefined (reading 'filter') by defaulting missing frame/tag collections to empty arrays/objects.

- Add MP3 sample without tags + regression test
- Update related TS configs and dependencies/lockfile
2026-01-28 19:54:25 +01:00
Borewit 8c822709d3 Add ID3v2 chapter support 2026-01-24 19:48:05 +01:00
Borewit b13fab0e7b Depend on win-guid for Windows GUID conversion 2026-01-14 18:04:39 +01:00
Borewit 81dca61fee Fix small code smalls, update Biome to 2.3.11 2026-01-06 15:50:42 +01:00
Borewit 64d2148d11 id3v2: harden frame parsing and fix edge cases
- Correctly handle missing null terminators in text fields
- Avoid reading text encoding for frames that do not define it
- Decode URL link frames according to ID3v2 specification
- Improve robustness of POPM and GEOB frame parsing
2026-01-06 13:39:38 +01:00
Borewit fd8b32b309 Improve findZero:
- eliminates all OOB reads.
- makes the “not found” behavior explicit and consistent.
2026-01-06 13:39:38 +01:00
Borewit 7ad0198d67 Improve readNullTerminatedString
- Don’t overwrite `uint8Array`, keep `valueArray` so the length comparison is correct and readable.
- Replace `zeroIndex === -`1 with `zeroIndex >= valueArray.length`.
2026-01-06 13:39:38 +01:00
Borewit 0e4156b986 id3v2: tighten frame decoding, trim nulls without regex, reduce allocations
- Use flatMap for TCON genre expansion to avoid concat/reduce allocations
- Add trimNullPadding helper and replace regex-based trailing null trimming
- Add defensive length checks for COMM/USLT and POPM parsing
- Use decodeUintBE consistently for POPM counter decoding
2026-01-06 13:39:38 +01:00
Borewit 26696ec75f Removed the eager, unconditional TextEncodingToken.get(...) at the start of readData() 2026-01-06 13:39:38 +01:00
Borewit da2f4ca2e9 Better reuse FrameParser.readNullTerminatedString 2026-01-06 13:39:38 +01:00
Borewit abbe09323d Improve MP3 parsing code
Favor Uint8Array.subarray, over passing offset and length
2026-01-06 13:39:38 +01:00
Borewit 65ec1c8fbd Move header parsing to FrameHeader.ts file, to allow re-using
Replace passing offset, and utilize `Uint8Array.subarray` instead.
2026-01-06 13:39:38 +01:00
Borewit af6caa7738 Improve MP4 bitrate calculation
Avoid using bitrate using `mdat` box, which could contain multiple streams
2025-11-23 12:25:29 +01:00
Borewit 1944b80e8c Fix bitrate calculation over multiple mdat boxes 2025-11-19 21:50:04 +01:00
Borewit 9f5f545136 Fix Ogg/Opus duration calculation.
Duration calculation requires to parse the entire Ogg/Opus file.
2025-11-15 19:24:15 +01:00
Gérald LEBAN 44f262f011 Add support for vorbis unsynced lyrics (#2489)
Extract unsynced vorbis lyrics
---------
Co-authored-by: Borewit <Borewit@users.noreply.github.com>
2025-11-09 14:55:57 +01:00
Borewit 65e6146668 Add support Apple’s QuickTime File Format 2025-11-09 14:14:54 +01:00
Borewit 044e565de8 Update Biome to 2.3.4 2025-11-09 14:10:39 +01:00
Borewit 5445cbb816 Support variable length PCNT and POPM numeric values.
Add `common.playCounter`
2025-09-15 20:36:21 +02:00
Borewit bcae011214 Favor subarray over slice, reusing instead of copying data 2025-09-15 20:28:29 +02:00
Borewit ff13f3e03c Map Vorbis.ENCODER and Vorbis VORBIS_COMMENT vendor to common.tool 2025-09-15 17:25:37 +02:00
Borewit 95c35ff566 Update Biome to 2.2.0 2025-08-19 12:28:41 +02:00
Borewit 06d83b2e7a Fix missing uint8array-extras dependency 2025-08-19 12:09:40 +02:00
Borewit 763f72854c Replace @kayahr/text-encoding with @borewit/text-codec 2025-08-13 21:48:37 +01:00
Borewit a5bc776e6d Remove uint8array-extras dependency
Remove `uint8array-extras` dependency in favour of having the same TextEncoder everywhere.
2025-08-13 09:58:54 +01:00
Borewit d3bfd7ae4e Use @kayahr/text-encoding for decoding
To avoid problems with unsupported character sets.
2025-08-12 20:39:42 +01:00
Borewit 2849deb89e CI: Improve structure Ogg unit tests
- Move an Ogg/Vorbis test to the correct description.
- Move some Ogg files, to the `ogg` subfolder
2025-07-20 13:32:23 +02:00
Borewit 26104b943e Embed media logo's 2025-07-20 12:49:49 +02:00
Borewit c2c9ad9a8d CI: Update to Biome 2.1.2 2025-07-20 10:09:15 +02:00
Borewit eb17a5ce65 Fix peek Ogg radio streams 2025-07-19 22:14:35 +02:00
Borewit 3b688f1546 Use strtok3.parseBlob()
Instead of streaming Blob, uses `Blob.slice()`.
2025-07-17 00:26:37 +02:00
Borewit 121078b757 Add support for Ogg/FLAC 2025-07-03 22:17:42 +02:00
Borewit 1824cc1394 Implement handling multiple Ogg sub streams 2025-07-01 12:34:25 +02:00
Borewit a9094e9829 Indicate on every media file if it contains an audio and/or video stream.
Introduces: `format.hasAudio` and `format.hasVideo`
2025-06-30 17:33:09 +02:00
Borewit 754a393fbf Optimize efficiency ordering tags 2025-06-30 10:31:13 +02:00