One poster adds the same 22 GB hidden '.1917-….mkv' decoy to every 7z upload; the largest-entry rule named 840 releases after it. Entries with a hidden path part are skipped; release:rename --hidden renames the existing ones from their stored listing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
28 lines
1.2 KiB
TypeScript
28 lines
1.2 KiB
TypeScript
import { BaseCommand, flags } from '@adonisjs/core/ace'
|
|
import { CommandOptions } from '@adonisjs/core/types/ace'
|
|
import { renameFromStoredContents, renameHiddenNamed } from '#services/ArchiveService'
|
|
import { regroupAndRenameFromPar2 } from '#services/NameService'
|
|
|
|
/** Renames random-named releases from their stored archive listings (no downloads). */
|
|
export default class ReleaseRename extends BaseCommand {
|
|
public static commandName = 'release:rename'
|
|
public static description = 'Renames random-named releases from their par2 listings and archive contents.'
|
|
|
|
public static options: CommandOptions = {
|
|
startApp: true,
|
|
}
|
|
|
|
@flags.boolean({ description: 'Only releases named after a hidden archive entry (e.g. a decoy ".x.mkv")' })
|
|
declare hidden: boolean
|
|
|
|
public async run() {
|
|
if (this.hidden) {
|
|
this.logger.info(`Renamed ${await renameHiddenNamed()} releases named after a hidden archive entry.`)
|
|
return
|
|
}
|
|
const par2 = await regroupAndRenameFromPar2()
|
|
this.logger.info(`par2: ${par2.regrouped} files moved into the set that names them, ${par2.renamed} releases renamed.`)
|
|
this.logger.info(`Renamed ${await renameFromStoredContents()} releases from their archive contents.`)
|
|
}
|
|
}
|