A scene music post's par2 under the release name; .par/.part before .par2
"[07/14] - "blaise_mc-in_hellstill_3-ep-web-2022-known.par2"": the tracks and the 00- files are keyed by artist and total, the par2 by its stem, so ~1,900 Meow and Cat posts were two releases. Under a counter a stem that reads as a scene music release (artist-…-web|cd|ep|single|vinyl|…-…YYYY(-group)) takes the artist key. And "goh1Phoz5ahXu.par.vol006+08.par2", "X.part.par2" beside the volumes: .par/.part before a par2 suffix goes too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2bbabc08de
commit
7ad4b70775
3 files changed
+52
-2
No files matched your search
@@ -25,8 +25,10 @@ export interface ReleaseInput {
|
||||
// Suffixes that differ between the files of one release. Stripped repeatedly,
|
||||
// so "x.mkv.vol03+04.par2" and "x.part07.rar" both reduce to "x".
|
||||
const SUFFIXES = [
|
||||
// A part's par2 files ("X.part1.par2", "X.part1.vol00+34.par2" beside "X.part1.rar": 683 single files in a.b.test).
|
||||
// A part's par2 files ("X.part1.par2", "X.part1.vol00+34.par2" beside "X.part1.rar": 683 single files in a.b.test), and
|
||||
// a par2 named after "X.part" or "X.par" ("goh1Phoz5ahXu.par.vol006+08.par2" beside "goh1Phoz5ahXu.r00", NewsUP).
|
||||
/\.part\d+(?:\.vol\d+[+-]\d+)?\.par2$/i,
|
||||
/\.(?:part|par)(?:\.vol\d+[+-]\d+)?\.par2$/i,
|
||||
/\.vol\d+[+-]\d+\.par2$/i,
|
||||
/\.par2$/i,
|
||||
// Recovery volumes too ("chappelle1.part02.rev").
|
||||
@@ -146,6 +148,8 @@ const BOILERPLATE = /\(?\bwww(?: [A-Za-z0-9]+)*? (?:org|com|net|info|nl|de|eu|to
|
||||
// 11 uploads were one release of 14,450 files; LOG.md 2026-10-12 (24)).
|
||||
const HASHED = /^(?:[0-9a-f]{8,}(?:_[0-9a-f]{6,}){2,}|[0-9a-f]{24,})(?:-[0-9a-z]+)?$/i
|
||||
const SCENE_TRACK = /^\d{1,3}[-_ .]+(.+?)(?:_-_| - |-)/
|
||||
/** A scene music release's name: the artist, then its source (web, cd, vinyl, …) and the year, last the group. */
|
||||
const SCENE_RELEASE = /^(.+?)(?:_-_| - |-).*-(?:web|cd[a-z]?|vinyl|vls|sat|cable|fm|dab|single|ep|lp|promo|bootleg)-.*(?:19|20)\d{2}(?:-[A-Za-z0-9_]+)?$/i
|
||||
const VOLUME_NUMBER = /^(.*[^\d. ])[. ](\d{1,5})\.?$/
|
||||
|
||||
/** Image files: a set's images are named one by one ("IMG_3086.jpg"); its subject names the set. */
|
||||
@@ -418,6 +422,10 @@ export function releaseIdentity(input: ReleaseInput): ReleaseIdentity | null {
|
||||
// cover, nfo, sfv and m3u of 2,600 Meow posts were releases of their own; LOG.md 2026-10-12 (28)).
|
||||
const sceneIndex = postTotal && /^00[-_ .]/.test(stem) ? SCENE_TRACK.exec(stem) : null
|
||||
if (sceneIndex) return { key: hash('stem', poster, sceneIndex[1], postTotal), name: sceneIndex[1], fileTotal, source: 'stem' }
|
||||
// And its par2 and sfv under the release's own name ("[07/14] - "blaise_mc-in_hellstill_3-ep-web-2022-known.par2"": the
|
||||
// par2 of 1,900 Meow and Cat posts was a release apart; LOG.md 2026-10-13 (40)), when the name reads as a scene music release.
|
||||
const sceneRelease = postTotal && !AUDIO.test(input.name) ? SCENE_RELEASE.exec(stem) : null
|
||||
if (sceneRelease) return { key: hash('stem', poster, sceneRelease[1], postTotal), name: sceneRelease[1], fileTotal, source: 'stem' }
|
||||
// An image without words around it: its set by its name (keyed as a stem, so "x.jpg" joins "x.part01.rar").
|
||||
// Keyed by its set when its name has one ("##[ "diana-040-001.jpg" (01/68)": all of a poster's 263 diana sets were
|
||||
// one release of 17,808 images; LOG.md 2026-10-12 (7)).
|
||||
|
||||
Reference in new issue
Block a user