diff --git a/README.md b/README.md index 1cd62fc..5f08065 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,37 @@ Contains thoroughly tested and verified database entries ready for production us Contains the latest updates and additions that are pending formal verification. May include experimental patterns and profiles that require further testing. -### Feature Branches +## Scripts -Used for developing and testing new database entries, patterns, or major changes before merging into dev. These branches follow the naming convention: `feature/description-of-change` +The repository includes utility scripts to help maintain and generate database entries. + +### Tier Creator + +A Python script that generates Custom Formats and Regex Patterns from tier data files. + +**Location**: `/scripts/tierCreator.py` + +**Usage**: + +```bash +python tierCreator.py --resolution --type [--dry-run] +``` + +**Arguments**: + +- `json_file`: Path to a JSON file in `/tiers` containing release group tier data +- `--resolution`: One of: SD, 720p, 1080p, 2160p +- `--type`: One of: Quality, Balanced +- `--dry-run`: Optional flag to preview changes without writing files + +**Example**: + +```bash +python tierCreator.py ../tiers/2160p_quality.json --resolution 2160p --type Quality +``` + +The script will: + +1. Read the tier data from the specified JSON file +2. Create regex patterns in `/regex_patterns` for any release groups that don't have one +3. Generate custom formats in `/custom_formats` for each tier diff --git a/custom_formats/2160p Quality Tier 1.yml b/custom_formats/2160p Quality Tier 1.yml index 784cba6..e29b5cf 100644 --- a/custom_formats/2160p Quality Tier 1.yml +++ b/custom_formats/2160p Quality Tier 1.yml @@ -33,11 +33,6 @@ conditions: pattern: BSTD required: false type: release_group -- name: iFT - negate: false - pattern: iFT - required: false - type: release_group - name: REBORN negate: false pattern: REBORN @@ -58,21 +53,56 @@ conditions: pattern: 4KDVS required: false type: release_group +- name: SURCODE + negate: false + pattern: SURCODE + required: false + type: release_group - name: TnP negate: false pattern: TnP required: false type: release_group +- name: JustWatch + negate: false + pattern: JustWatch + required: false + type: release_group +- name: AViATOR + negate: false + pattern: AViATOR + required: false + type: release_group +- name: SESKAPiLE + negate: false + pattern: SESKAPiLE + required: false + type: release_group - name: DEFLATE negate: false pattern: DEFLATE required: false type: release_group +- name: WATCHABLE + negate: false + pattern: WATCHABLE + required: false + type: release_group - name: SoLaR negate: false pattern: SoLaR required: false type: release_group +- name: HDC + negate: false + pattern: HDC + required: false + type: release_group +- name: HDH + negate: false + pattern: HDH + required: false + type: release_group - name: ULTRAHDCLUB negate: false pattern: ULTRAHDCLUB diff --git a/custom_formats/2160p Quality Tier 2.yml b/custom_formats/2160p Quality Tier 2.yml index 721d756..db9e6e3 100644 --- a/custom_formats/2160p Quality Tier 2.yml +++ b/custom_formats/2160p Quality Tier 2.yml @@ -13,14 +13,9 @@ conditions: required: true resolution: 2160p type: resolution -- name: SURCODE +- name: b0mbardiers negate: false - pattern: SURCODE - required: false - type: release_group -- name: JustWatch - negate: false - pattern: JustWatch + pattern: b0mbardiers required: false type: release_group - name: NCmt @@ -28,39 +23,29 @@ conditions: pattern: NCmt required: false type: release_group +- name: LAZARUS + negate: false + pattern: LAZARUS + required: false + type: release_group - name: DEPTH negate: false pattern: DEPTH required: false type: release_group -- name: Chotab - negate: false - pattern: Chotab - required: false - type: release_group - name: whiterhino negate: false pattern: whiterhino required: false type: release_group -- name: b0mbardiers +- name: Chotab negate: false - pattern: b0mbardiers + pattern: Chotab required: false type: release_group -- name: LAZARUS +- name: TDD negate: false - pattern: LAZARUS - required: false - type: release_group -- name: HQMUX - negate: false - pattern: HQMUX - required: false - type: release_group -- name: WiKi - negate: false - pattern: WiKi + pattern: TDD required: false type: release_group - name: KAN3D2M @@ -73,4 +58,39 @@ conditions: pattern: FRDS required: false type: release_group +- name: HQMUX + negate: false + pattern: HQMUX + required: false + type: release_group +- name: SMAHAWUG + negate: false + pattern: SMAHAWUG + required: false + type: release_group +- name: MiMiC + negate: false + pattern: MiMiC + required: false + type: release_group +- name: Kitsune + negate: false + pattern: Kitsune + required: false + type: release_group +- name: WiKi + negate: false + pattern: WiKi + required: false + type: release_group +- name: D-Z0N3 + negate: false + pattern: D-Z0N3 + required: false + type: release_group +- name: MainFrame + negate: false + pattern: MainFrame + required: false + type: release_group tests: [] diff --git a/custom_formats/2160p Quality Tier 3.yml b/custom_formats/2160p Quality Tier 3.yml index 61d6be4..791e067 100644 --- a/custom_formats/2160p Quality Tier 3.yml +++ b/custom_formats/2160p Quality Tier 3.yml @@ -13,31 +13,6 @@ conditions: required: true resolution: 2160p type: resolution -- name: D-Z0N3 - negate: false - pattern: D-Z0N3 - required: false - type: release_group -- name: SMAHAWUG - negate: false - pattern: SMAHAWUG - required: false - type: release_group -- name: MiMiC - negate: false - pattern: MiMiC - required: false - type: release_group -- name: Kitsune - negate: false - pattern: Kitsune - required: false - type: release_group -- name: MainFrame - negate: false - pattern: MainFrame - required: false - type: release_group - name: PussyFoot negate: false pattern: PussyFoot @@ -53,24 +28,84 @@ conditions: pattern: HypStu required: false type: release_group +- name: CHD + negate: false + pattern: CHD + required: false + type: release_group +- name: iFT + negate: false + pattern: iFT + required: false + type: release_group - name: EDPH negate: false pattern: EDPH required: false type: release_group -- name: BlzT - negate: false - pattern: BlzT - required: false - type: release_group -- name: Absinth - negate: false - pattern: Absinth - required: false - type: release_group - name: CMCT negate: false pattern: CMCT required: false type: release_group +- name: STRiKES + negate: false + pattern: STRiKES + required: false + type: release_group +- name: HOA + negate: false + pattern: HOA + required: false + type: release_group +- name: d3g + negate: false + pattern: d3g + required: false + type: release_group +- name: DESPACiTO + negate: false + pattern: DESPACiTO + required: false + type: release_group +- name: BlzT + negate: false + pattern: BlzT + required: false + type: release_group +- name: SPECTACLE + negate: false + pattern: SPECTACLE + required: false + type: release_group +- name: spectacle + negate: false + pattern: spectacle + required: false + type: release_group +- name: FZHD + negate: false + pattern: FZHD + required: false + type: release_group +- name: HD77 + negate: false + pattern: HD77 + required: false + type: release_group +- name: VALiS + negate: false + pattern: VALiS + required: false + type: release_group +- name: IAMABLE + negate: false + pattern: IAMABLE + required: false + type: release_group +- name: DiNAMiC + negate: false + pattern: DiNAMiC + required: false + type: release_group tests: [] diff --git a/custom_formats/2160p Quality Tier 4.yml b/custom_formats/2160p Quality Tier 4.yml index 602808f..284a671 100644 --- a/custom_formats/2160p Quality Tier 4.yml +++ b/custom_formats/2160p Quality Tier 4.yml @@ -13,51 +13,41 @@ conditions: required: true resolution: 2160p type: resolution -- name: STRiKES - negate: false - pattern: STRiKES - required: false - type: release_group -- name: HD77 - negate: false - pattern: HD77 - required: false - type: release_group -- name: IAMABLE - negate: false - pattern: IAMABLE - required: false - type: release_group -- name: beAst - negate: false - pattern: beAst - required: false - type: release_group -- name: HDS - negate: false - pattern: HDS - required: false - type: release_group - name: Tron negate: false pattern: Tron required: false type: release_group +- name: HDChina + negate: false + pattern: HDChina + required: false + type: release_group +- name: BeiTa + negate: false + pattern: BeiTa + required: false + type: release_group +- name: ADE + negate: false + pattern: ADE + required: false + type: release_group - name: BiTOR negate: false pattern: BiTOR required: false type: release_group -- name: ReaLHD - negate: false - pattern: ReaLHD - required: false - type: release_group - name: HDmux negate: false pattern: HDmux required: false type: release_group +- name: ReaLHD + negate: false + pattern: ReaLHD + required: false + type: release_group - name: SWAGGERUHD negate: false pattern: SWAGGERUHD @@ -68,6 +58,11 @@ conditions: pattern: EMERALD required: false type: release_group +- name: HONE + negate: false + pattern: HONE + required: false + type: release_group - name: iNVANDRAREN negate: false pattern: iNVANDRAREN @@ -78,4 +73,39 @@ conditions: pattern: ReQuEsT required: false type: release_group +- name: TERMiNAL + negate: false + pattern: TERMiNAL + required: false + type: release_group +- name: NorTekst + negate: false + pattern: NorTekst + required: false + type: release_group +- name: WhiteRhino + negate: false + pattern: WhiteRhino + required: false + type: release_group +- name: LSt + negate: false + pattern: LSt + required: false + type: release_group +- name: guhzer + negate: false + pattern: guhzer + required: false + type: release_group +- name: SWTYBLZ + negate: false + pattern: SWTYBLZ + required: false + type: release_group +- name: iCandy + negate: false + pattern: iCandy + required: false + type: release_group tests: [] diff --git a/custom_formats/2160p Quality Tier 5.yml b/custom_formats/2160p Quality Tier 5.yml index af40e21..ac319ab 100644 --- a/custom_formats/2160p Quality Tier 5.yml +++ b/custom_formats/2160p Quality Tier 5.yml @@ -13,34 +13,9 @@ conditions: required: true resolution: 2160p type: resolution -- name: TERMiNAL +- name: HDS negate: false - pattern: TERMiNAL - required: false - type: release_group -- name: ADE - negate: false - pattern: ADE - required: false - type: release_group -- name: guhzer - negate: false - pattern: guhzer - required: false - type: release_group -- name: SWTYBLZ - negate: false - pattern: SWTYBLZ - required: false - type: release_group -- name: WhiteRhino - negate: false - pattern: WhiteRhino - required: false - type: release_group -- name: iCandy - negate: false - pattern: iCandy + pattern: HDS required: false type: release_group - name: micius @@ -58,6 +33,11 @@ conditions: pattern: PTH required: false type: release_group +- name: ENDSTATiON + negate: false + pattern: ENDSTATiON + required: false + type: release_group - name: threesome negate: false pattern: threesome @@ -68,9 +48,14 @@ conditions: pattern: UHDCLUBREMUX required: false type: release_group -- name: CHD +- name: BeiTai negate: false - pattern: CHD + pattern: BeiTai + required: false + type: release_group +- name: Verus + negate: false + pattern: Verus required: false type: release_group - name: Blzt @@ -83,4 +68,44 @@ conditions: pattern: LittleBakas required: false type: release_group +- name: Absinth + negate: false + pattern: Absinth + required: false + type: release_group +- name: FLAME + negate: false + pattern: FLAME + required: false + type: release_group +- name: SP4K + negate: false + pattern: SP4K + required: false + type: release_group +- name: CHAOS + negate: false + pattern: CHAOS + required: false + type: release_group +- name: Hares + negate: false + pattern: Hares + required: false + type: release_group +- name: BLUEBIRD + negate: false + pattern: BLUEBIRD + required: false + type: release_group +- name: 4K4U + negate: false + pattern: 4K4U + required: false + type: release_group +- name: dkore + negate: false + pattern: dkore + required: false + type: release_group tests: [] diff --git a/custom_formats/2160p Quality Tier 6.yml b/custom_formats/2160p Quality Tier 6.yml index 4c0b095..d9d8d2c 100644 --- a/custom_formats/2160p Quality Tier 6.yml +++ b/custom_formats/2160p Quality Tier 6.yml @@ -13,24 +13,14 @@ conditions: required: true resolution: 2160p type: resolution -- name: CHAOS +- name: hallowed negate: false - pattern: CHAOS + pattern: hallowed required: false type: release_group -- name: Hares +- name: BHDStudio negate: false - pattern: Hares - required: false - type: release_group -- name: 10bit-HDS - negate: false - pattern: 10bit-HDS - required: false - type: release_group -- name: FLAME - negate: false - pattern: FLAME + pattern: BHDStudio required: false type: release_group - name: Lucifer @@ -38,19 +28,9 @@ conditions: pattern: Lucifer required: false type: release_group -- name: HONE +- name: SumVision negate: false - pattern: HONE - required: false - type: release_group -- name: BeiTai - negate: false - pattern: BeiTai - required: false - type: release_group -- name: hallowed - negate: false - pattern: hallowed + pattern: SumVision required: false type: release_group - name: AAAUHD @@ -63,9 +43,9 @@ conditions: pattern: GUHZER required: false type: release_group -- name: invandraren +- name: Tigole negate: false - pattern: invandraren + pattern: Tigole required: false type: release_group - name: WOU @@ -73,6 +53,56 @@ conditions: pattern: WOU required: false type: release_group +- name: invandraren + negate: false + pattern: invandraren + required: false + type: release_group +- name: RandH + negate: false + pattern: RandH + required: false + type: release_group +- name: R + negate: false + pattern: R + required: false + type: release_group +- name: THREESOME + negate: false + pattern: THREESOME + required: false + type: release_group +- name: PRiSTiNE + negate: false + pattern: PRiSTiNE + required: false + type: release_group +- name: LAMA + negate: false + pattern: LAMA + required: false + type: release_group +- name: beAst + negate: false + pattern: beAst + required: false + type: release_group +- name: EX-R + negate: false + pattern: EX-R + required: false + type: release_group +- name: PHOCiS + negate: false + pattern: PHOCiS + required: false + type: release_group +- name: UNK + negate: false + pattern: UNK + required: false + type: release_group - name: MALUS negate: false pattern: MALUS diff --git a/group_tiers/2160p Quality.json b/group_tiers/2160p Quality.json new file mode 100644 index 0000000..8622f85 --- /dev/null +++ b/group_tiers/2160p Quality.json @@ -0,0 +1,863 @@ +{ + "metadata": { + "total_movies_processed": 676, + "movies_with_2160p": 663, + "target_efficiency": 0.6, + "total_tiers": 6, + "scoring_method": "comprehensive" + }, + "tier_statistics": { + "1": { + "groups": 23, + "total_releases": 766, + "avg_score": 100.0, + "avg_efficiency": 58.26 + }, + "2": { + "groups": 16, + "total_releases": 186, + "avg_score": 97.84, + "avg_efficiency": 54.44 + }, + "3": { + "groups": 19, + "total_releases": 339, + "avg_score": 92.15, + "avg_efficiency": 53.21 + }, + "4": { + "groups": 19, + "total_releases": 362, + "avg_score": 84.58, + "avg_efficiency": 42.58 + }, + "5": { + "groups": 19, + "total_releases": 44, + "avg_score": 78.85, + "avg_efficiency": 38.26 + }, + "6": { + "groups": 19, + "total_releases": 58, + "avg_score": 61.78, + "avg_efficiency": 46.95 + } + }, + "tiered_groups": [ + { + "tier": 1, + "name": "CtrlHD", + "efficiency": 58.0, + "releases": 371, + "score": 100 + }, + { + "tier": 1, + "name": "SPHD", + "efficiency": 62.0, + "releases": 59, + "score": 100 + }, + { + "tier": 1, + "name": "W4NK3R", + "efficiency": 61.0, + "releases": 176, + "score": 100 + }, + { + "tier": 1, + "name": "BSTD", + "efficiency": 54.0, + "releases": 11, + "score": 100 + }, + { + "tier": 1, + "name": "REBORN", + "efficiency": 56.0, + "releases": 5, + "score": 100 + }, + { + "tier": 1, + "name": "DON", + "efficiency": 55.0, + "releases": 30, + "score": 100 + }, + { + "tier": 1, + "name": "SA89", + "efficiency": 59.0, + "releases": 11, + "score": 100 + }, + { + "tier": 1, + "name": "4KDVS", + "efficiency": 58.0, + "releases": 4, + "score": 100 + }, + { + "tier": 1, + "name": "SURCODE", + "efficiency": 57.0, + "releases": 12, + "score": 100 + }, + { + "tier": 1, + "name": "TnP", + "efficiency": 58.0, + "releases": 7, + "score": 100 + }, + { + "tier": 1, + "name": "JustWatch", + "efficiency": 54.0, + "releases": 7, + "score": 100 + }, + { + "tier": 1, + "name": "AViATOR", + "efficiency": 53.0, + "releases": 6, + "score": 100 + }, + { + "tier": 1, + "name": "SESKAPiLE", + "efficiency": 57.0, + "releases": 9, + "score": 100 + }, + { + "tier": 1, + "name": "DEFLATE", + "efficiency": 57.0, + "releases": 9, + "score": 100 + }, + { + "tier": 1, + "name": "WATCHABLE", + "efficiency": 60.0, + "releases": 2, + "score": 100 + }, + { + "tier": 1, + "name": "SoLaR", + "efficiency": 63.0, + "releases": 8, + "score": 100 + }, + { + "tier": 1, + "name": "HDC", + "efficiency": 59.0, + "releases": 1, + "score": 100 + }, + { + "tier": 1, + "name": "HDH", + "efficiency": 58.0, + "releases": 3, + "score": 100 + }, + { + "tier": 1, + "name": "ULTRAHDCLUB", + "efficiency": 64.0, + "releases": 3, + "score": 100 + }, + { + "tier": 1, + "name": "PTer", + "efficiency": 57.0, + "releases": 18, + "score": 100 + }, + { + "tier": 1, + "name": "c0kE", + "efficiency": 55.0, + "releases": 11, + "score": 100 + }, + { + "tier": 1, + "name": "ESiR", + "efficiency": 64.0, + "releases": 2, + "score": 100 + }, + { + "tier": 1, + "name": "k00kie", + "efficiency": 61.0, + "releases": 1, + "score": 100 + }, + { + "tier": 2, + "name": "b0mbardiers", + "efficiency": 57.0, + "releases": 19, + "score": 99.9 + }, + { + "tier": 2, + "name": "NCmt", + "efficiency": 54.0, + "releases": 3, + "score": 99.5 + }, + { + "tier": 2, + "name": "LAZARUS", + "efficiency": 66.0, + "releases": 3, + "score": 99.5 + }, + { + "tier": 2, + "name": "DEPTH", + "efficiency": 54.0, + "releases": 37, + "score": 99.4 + }, + { + "tier": 2, + "name": "whiterhino", + "efficiency": 55.0, + "releases": 2, + "score": 99.0 + }, + { + "tier": 2, + "name": "Chotab", + "efficiency": 51.0, + "releases": 9, + "score": 98.2 + }, + { + "tier": 2, + "name": "TDD", + "efficiency": 54.0, + "releases": 2, + "score": 98.0 + }, + { + "tier": 2, + "name": "KAN3D2M", + "efficiency": 56.0, + "releases": 1, + "score": 98.0 + }, + { + "tier": 2, + "name": "FRDS", + "efficiency": 56.0, + "releases": 1, + "score": 98.0 + }, + { + "tier": 2, + "name": "HQMUX", + "efficiency": 53.0, + "releases": 52, + "score": 97.7 + }, + { + "tier": 2, + "name": "SMAHAWUG", + "efficiency": 55.0, + "releases": 1, + "score": 97.0 + }, + { + "tier": 2, + "name": "MiMiC", + "efficiency": 55.0, + "releases": 1, + "score": 97.0 + }, + { + "tier": 2, + "name": "Kitsune", + "efficiency": 51.0, + "releases": 9, + "score": 96.8 + }, + { + "tier": 2, + "name": "WiKi", + "efficiency": 53.0, + "releases": 2, + "score": 96.4 + }, + { + "tier": 2, + "name": "D-Z0N3", + "efficiency": 51.0, + "releases": 10, + "score": 95.9 + }, + { + "tier": 2, + "name": "MainFrame", + "efficiency": 50.0, + "releases": 34, + "score": 95.2 + }, + { + "tier": 3, + "name": "PussyFoot", + "efficiency": 53.0, + "releases": 1, + "score": 95.0 + }, + { + "tier": 3, + "name": "KNiVES", + "efficiency": 53.0, + "releases": 1, + "score": 95.0 + }, + { + "tier": 3, + "name": "HypStu", + "efficiency": 48.0, + "releases": 3, + "score": 93.9 + }, + { + "tier": 3, + "name": "CHD", + "efficiency": 47.0, + "releases": 6, + "score": 93.6 + }, + { + "tier": 3, + "name": "iFT", + "efficiency": 49.0, + "releases": 9, + "score": 93.5 + }, + { + "tier": 3, + "name": "EDPH", + "efficiency": 48.0, + "releases": 3, + "score": 93.3 + }, + { + "tier": 3, + "name": "CMCT", + "efficiency": 51.0, + "releases": 1, + "score": 93.0 + }, + { + "tier": 3, + "name": "STRiKES", + "efficiency": 46.0, + "releases": 6, + "score": 92.8 + }, + { + "tier": 3, + "name": "HOA", + "efficiency": 71.0, + "releases": 2, + "score": 92.8 + }, + { + "tier": 3, + "name": "d3g", + "efficiency": 72.0, + "releases": 13, + "score": 92.6 + }, + { + "tier": 3, + "name": "DESPACiTO", + "efficiency": 70.0, + "releases": 1, + "score": 92.0 + }, + { + "tier": 3, + "name": "BlzT", + "efficiency": 45.0, + "releases": 17, + "score": 91.0 + }, + { + "tier": 3, + "name": "SPECTACLE", + "efficiency": 49.0, + "releases": 1, + "score": 91.0 + }, + { + "tier": 3, + "name": "spectacle", + "efficiency": 49.0, + "releases": 1, + "score": 91.0 + }, + { + "tier": 3, + "name": "FZHD", + "efficiency": 71.0, + "releases": 1, + "score": 91.0 + }, + { + "tier": 3, + "name": "HD77", + "efficiency": 49.0, + "releases": 1, + "score": 91.0 + }, + { + "tier": 3, + "name": "VALiS", + "efficiency": 48.0, + "releases": 1, + "score": 90.0 + }, + { + "tier": 3, + "name": "IAMABLE", + "efficiency": 45.0, + "releases": 270, + "score": 89.4 + }, + { + "tier": 3, + "name": "DiNAMiC", + "efficiency": 47.0, + "releases": 1, + "score": 89.0 + }, + { + "tier": 4, + "name": "Tron", + "efficiency": 45.0, + "releases": 1, + "score": 87.0 + }, + { + "tier": 4, + "name": "HDChina", + "efficiency": 43.0, + "releases": 3, + "score": 86.6 + }, + { + "tier": 4, + "name": "BeiTa", + "efficiency": 44.0, + "releases": 1, + "score": 86.0 + }, + { + "tier": 4, + "name": "ADE", + "efficiency": 37.0, + "releases": 6, + "score": 85.8 + }, + { + "tier": 4, + "name": "BiTOR", + "efficiency": 42.0, + "releases": 2, + "score": 85.5 + }, + { + "tier": 4, + "name": "HDmux", + "efficiency": 43.0, + "releases": 2, + "score": 85.5 + }, + { + "tier": 4, + "name": "ReaLHD", + "efficiency": 38.0, + "releases": 14, + "score": 85.4 + }, + { + "tier": 4, + "name": "SWAGGERUHD", + "efficiency": 43.0, + "releases": 1, + "score": 85.0 + }, + { + "tier": 4, + "name": "EMERALD", + "efficiency": 38.0, + "releases": 11, + "score": 84.8 + }, + { + "tier": 4, + "name": "HONE", + "efficiency": 36.0, + "releases": 10, + "score": 84.6 + }, + { + "tier": 4, + "name": "iNVANDRAREN", + "efficiency": 38.0, + "releases": 5, + "score": 84.6 + }, + { + "tier": 4, + "name": "ReQuEsT", + "efficiency": 41.0, + "releases": 2, + "score": 84.4 + }, + { + "tier": 4, + "name": "TERMiNAL", + "efficiency": 41.0, + "releases": 214, + "score": 84.1 + }, + { + "tier": 4, + "name": "NorTekst", + "efficiency": 80.0, + "releases": 2, + "score": 84.0 + }, + { + "tier": 4, + "name": "WhiteRhino", + "efficiency": 41.0, + "releases": 72, + "score": 83.3 + }, + { + "tier": 4, + "name": "LSt", + "efficiency": 39.0, + "releases": 2, + "score": 83.0 + }, + { + "tier": 4, + "name": "guhzer", + "efficiency": 41.0, + "releases": 1, + "score": 83.0 + }, + { + "tier": 4, + "name": "SWTYBLZ", + "efficiency": 39.0, + "releases": 12, + "score": 82.4 + }, + { + "tier": 4, + "name": "iCandy", + "efficiency": 40.0, + "releases": 1, + "score": 82.0 + }, + { + "tier": 5, + "name": "HDS", + "efficiency": 36.0, + "releases": 13, + "score": 81.5 + }, + { + "tier": 5, + "name": "micius", + "efficiency": 39.0, + "releases": 1, + "score": 81.0 + }, + { + "tier": 5, + "name": "BOREDOR", + "efficiency": 39.0, + "releases": 1, + "score": 81.0 + }, + { + "tier": 5, + "name": "PTH", + "efficiency": 37.0, + "releases": 2, + "score": 80.8 + }, + { + "tier": 5, + "name": "ENDSTATiON", + "efficiency": 37.0, + "releases": 2, + "score": 80.4 + }, + { + "tier": 5, + "name": "threesome", + "efficiency": 38.0, + "releases": 1, + "score": 80.0 + }, + { + "tier": 5, + "name": "UHDCLUBREMUX", + "efficiency": 82.0, + "releases": 1, + "score": 80.0 + }, + { + "tier": 5, + "name": "BeiTai", + "efficiency": 37.0, + "releases": 2, + "score": 79.6 + }, + { + "tier": 5, + "name": "Verus", + "efficiency": 36.0, + "releases": 2, + "score": 79.4 + }, + { + "tier": 5, + "name": "Blzt", + "efficiency": 37.0, + "releases": 1, + "score": 79.0 + }, + { + "tier": 5, + "name": "LittleBakas", + "efficiency": 37.0, + "releases": 1, + "score": 79.0 + }, + { + "tier": 5, + "name": "Absinth", + "efficiency": 32.0, + "releases": 5, + "score": 78.5 + }, + { + "tier": 5, + "name": "FLAME", + "efficiency": 37.0, + "releases": 3, + "score": 78.2 + }, + { + "tier": 5, + "name": "SP4K", + "efficiency": 36.0, + "releases": 1, + "score": 78.0 + }, + { + "tier": 5, + "name": "CHAOS", + "efficiency": 35.0, + "releases": 1, + "score": 77.0 + }, + { + "tier": 5, + "name": "Hares", + "efficiency": 35.0, + "releases": 1, + "score": 77.0 + }, + { + "tier": 5, + "name": "BLUEBIRD", + "efficiency": 34.0, + "releases": 1, + "score": 76.0 + }, + { + "tier": 5, + "name": "4K4U", + "efficiency": 33.0, + "releases": 2, + "score": 76.0 + }, + { + "tier": 5, + "name": "dkore", + "efficiency": 30.0, + "releases": 3, + "score": 75.8 + }, + { + "tier": 6, + "name": "hallowed", + "efficiency": 26.0, + "releases": 7, + "score": 75.3 + }, + { + "tier": 6, + "name": "BHDStudio", + "efficiency": 26.0, + "releases": 16, + "score": 75.0 + }, + { + "tier": 6, + "name": "Lucifer", + "efficiency": 31.0, + "releases": 1, + "score": 73.0 + }, + { + "tier": 6, + "name": "SumVision", + "efficiency": 31.0, + "releases": 1, + "score": 73.0 + }, + { + "tier": 6, + "name": "AAAUHD", + "efficiency": 28.0, + "releases": 2, + "score": 72.0 + }, + { + "tier": 6, + "name": "GUHZER", + "efficiency": 29.0, + "releases": 2, + "score": 71.5 + }, + { + "tier": 6, + "name": "Tigole", + "efficiency": 26.0, + "releases": 2, + "score": 69.8 + }, + { + "tier": 6, + "name": "WOU", + "efficiency": 97.0, + "releases": 3, + "score": 68.0 + }, + { + "tier": 6, + "name": "invandraren", + "efficiency": 26.0, + "releases": 1, + "score": 68.0 + }, + { + "tier": 6, + "name": "RandH", + "efficiency": 24.0, + "releases": 1, + "score": 66.0 + }, + { + "tier": 6, + "name": "R", + "efficiency": 24.0, + "releases": 1, + "score": 66.0 + }, + { + "tier": 6, + "name": "THREESOME", + "efficiency": 21.0, + "releases": 2, + "score": 65.0 + }, + { + "tier": 6, + "name": "PRiSTiNE", + "efficiency": 100.0, + "releases": 1, + "score": 62.0 + }, + { + "tier": 6, + "name": "LAMA", + "efficiency": 12.0, + "releases": 4, + "score": 59.4 + }, + { + "tier": 6, + "name": "beAst", + "efficiency": 80.0, + "releases": 9, + "score": 58.3 + }, + { + "tier": 6, + "name": "EX-R", + "efficiency": 14.0, + "releases": 1, + "score": 56.0 + }, + { + "tier": 6, + "name": "PHOCiS", + "efficiency": 12.0, + "releases": 2, + "score": 55.6 + }, + { + "tier": 6, + "name": "UNK", + "efficiency": 124.0, + "releases": 1, + "score": 38.0 + }, + { + "tier": 6, + "name": "MALUS", + "efficiency": 161.0, + "releases": 1, + "score": 2 + } + ], + "scoring_details": { + "tier_boundaries": [ + 100.0, + 95.2, + 89.0, + 82.0, + 75.8 + ] + } +} \ No newline at end of file diff --git a/regex_patterns/4K4U.yml b/regex_patterns/4K4U.yml new file mode 100644 index 0000000..9c6565b --- /dev/null +++ b/regex_patterns/4K4U.yml @@ -0,0 +1,6 @@ +name: 4K4U +pattern: (?<=^|[\s.-])4K4U\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/AViATOR.yml b/regex_patterns/AViATOR.yml new file mode 100644 index 0000000..768bad5 --- /dev/null +++ b/regex_patterns/AViATOR.yml @@ -0,0 +1,6 @@ +name: AViATOR +pattern: (?<=^|[\s.-])AViATOR\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/BLUEBIRD.yml b/regex_patterns/BLUEBIRD.yml new file mode 100644 index 0000000..2b0eccc --- /dev/null +++ b/regex_patterns/BLUEBIRD.yml @@ -0,0 +1,6 @@ +name: BLUEBIRD +pattern: (?<=^|[\s.-])BLUEBIRD\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/BeiTa.yml b/regex_patterns/BeiTa.yml new file mode 100644 index 0000000..3cef482 --- /dev/null +++ b/regex_patterns/BeiTa.yml @@ -0,0 +1,6 @@ +name: BeiTa +pattern: (?<=^|[\s.-])BeiTa\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/DESPACiTO.yml b/regex_patterns/DESPACiTO.yml new file mode 100644 index 0000000..4ad7b5d --- /dev/null +++ b/regex_patterns/DESPACiTO.yml @@ -0,0 +1,6 @@ +name: DESPACiTO +pattern: (?<=^|[\s.-])DESPACiTO\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/DiNAMiC.yml b/regex_patterns/DiNAMiC.yml new file mode 100644 index 0000000..c5b13fd --- /dev/null +++ b/regex_patterns/DiNAMiC.yml @@ -0,0 +1,6 @@ +name: DiNAMiC +pattern: (?<=^|[\s.-])DiNAMiC\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/ENDSTATiON.yml b/regex_patterns/ENDSTATiON.yml new file mode 100644 index 0000000..19b41c9 --- /dev/null +++ b/regex_patterns/ENDSTATiON.yml @@ -0,0 +1,6 @@ +name: ENDSTATiON +pattern: (?<=^|[\s.-])ENDSTATiON\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/EX-R.yml b/regex_patterns/EX-R.yml new file mode 100644 index 0000000..0b0f26c --- /dev/null +++ b/regex_patterns/EX-R.yml @@ -0,0 +1,6 @@ +name: EX-R +pattern: (?<=^|[\s.-])EX-R\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/FZHD.yml b/regex_patterns/FZHD.yml new file mode 100644 index 0000000..588bba5 --- /dev/null +++ b/regex_patterns/FZHD.yml @@ -0,0 +1,6 @@ +name: FZHD +pattern: (?<=^|[\s.-])FZHD\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/HDC.yml b/regex_patterns/HDC.yml new file mode 100644 index 0000000..cba1ab9 --- /dev/null +++ b/regex_patterns/HDC.yml @@ -0,0 +1,6 @@ +name: HDC +pattern: (?<=^|[\s.-])HDC\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/HDChina.yml b/regex_patterns/HDChina.yml new file mode 100644 index 0000000..15d2f31 --- /dev/null +++ b/regex_patterns/HDChina.yml @@ -0,0 +1,6 @@ +name: HDChina +pattern: (?<=^|[\s.-])HDChina\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/HDH.yml b/regex_patterns/HDH.yml new file mode 100644 index 0000000..4ffdff1 --- /dev/null +++ b/regex_patterns/HDH.yml @@ -0,0 +1,6 @@ +name: HDH +pattern: (?<=^|[\s.-])HDH\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/HOA.yml b/regex_patterns/HOA.yml new file mode 100644 index 0000000..1788ef6 --- /dev/null +++ b/regex_patterns/HOA.yml @@ -0,0 +1,6 @@ +name: HOA +pattern: (?<=^|[\s.-])HOA\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/LAMA.yml b/regex_patterns/LAMA.yml new file mode 100644 index 0000000..0653255 --- /dev/null +++ b/regex_patterns/LAMA.yml @@ -0,0 +1,6 @@ +name: LAMA +pattern: (?<=^|[\s.-])LAMA\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/LSt.yml b/regex_patterns/LSt.yml new file mode 100644 index 0000000..534091a --- /dev/null +++ b/regex_patterns/LSt.yml @@ -0,0 +1,6 @@ +name: LSt +pattern: (?<=^|[\s.-])LSt\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/NorTekst.yml b/regex_patterns/NorTekst.yml new file mode 100644 index 0000000..e59a15c --- /dev/null +++ b/regex_patterns/NorTekst.yml @@ -0,0 +1,6 @@ +name: NorTekst +pattern: (?<=^|[\s.-])NorTekst\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/PHOCiS.yml b/regex_patterns/PHOCiS.yml new file mode 100644 index 0000000..2c91a80 --- /dev/null +++ b/regex_patterns/PHOCiS.yml @@ -0,0 +1,6 @@ +name: PHOCiS +pattern: (?<=^|[\s.-])PHOCiS\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/PRiSTiNE.yml b/regex_patterns/PRiSTiNE.yml new file mode 100644 index 0000000..cbbb18b --- /dev/null +++ b/regex_patterns/PRiSTiNE.yml @@ -0,0 +1,6 @@ +name: PRiSTiNE +pattern: (?<=^|[\s.-])PRiSTiNE\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/R.yml b/regex_patterns/R.yml new file mode 100644 index 0000000..c585d5b --- /dev/null +++ b/regex_patterns/R.yml @@ -0,0 +1,6 @@ +name: R +pattern: (?<=^|[\s.-])R\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/RandH.yml b/regex_patterns/RandH.yml new file mode 100644 index 0000000..66cd3da --- /dev/null +++ b/regex_patterns/RandH.yml @@ -0,0 +1,6 @@ +name: RandH +pattern: (?<=^|[\s.-])RandH\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/SESKAPiLE.yml b/regex_patterns/SESKAPiLE.yml new file mode 100644 index 0000000..cfc6039 --- /dev/null +++ b/regex_patterns/SESKAPiLE.yml @@ -0,0 +1,6 @@ +name: SESKAPiLE +pattern: (?<=^|[\s.-])SESKAPiLE\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/SP4K.yml b/regex_patterns/SP4K.yml new file mode 100644 index 0000000..9968ad1 --- /dev/null +++ b/regex_patterns/SP4K.yml @@ -0,0 +1,6 @@ +name: SP4K +pattern: (?<=^|[\s.-])SP4K\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/SPECTACLE.yml b/regex_patterns/SPECTACLE.yml new file mode 100644 index 0000000..14ae83c --- /dev/null +++ b/regex_patterns/SPECTACLE.yml @@ -0,0 +1,6 @@ +name: SPECTACLE +pattern: (?<=^|[\s.-])SPECTACLE\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/SumVision.yml b/regex_patterns/SumVision.yml new file mode 100644 index 0000000..639785a --- /dev/null +++ b/regex_patterns/SumVision.yml @@ -0,0 +1,6 @@ +name: SumVision +pattern: (?<=^|[\s.-])SumVision\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/THREESOME.yml b/regex_patterns/THREESOME.yml new file mode 100644 index 0000000..c2f47be --- /dev/null +++ b/regex_patterns/THREESOME.yml @@ -0,0 +1,6 @@ +name: THREESOME +pattern: (?<=^|[\s.-])THREESOME\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/Tigole.yml b/regex_patterns/Tigole.yml new file mode 100644 index 0000000..d45771e --- /dev/null +++ b/regex_patterns/Tigole.yml @@ -0,0 +1,6 @@ +name: Tigole +pattern: (?<=^|[\s.-])Tigole\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/UNK.yml b/regex_patterns/UNK.yml new file mode 100644 index 0000000..a4573c2 --- /dev/null +++ b/regex_patterns/UNK.yml @@ -0,0 +1,6 @@ +name: UNK +pattern: (?<=^|[\s.-])UNK\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/VALiS.yml b/regex_patterns/VALiS.yml new file mode 100644 index 0000000..43168d9 --- /dev/null +++ b/regex_patterns/VALiS.yml @@ -0,0 +1,6 @@ +name: VALiS +pattern: (?<=^|[\s.-])VALiS\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/Verus.yml b/regex_patterns/Verus.yml new file mode 100644 index 0000000..ee839e3 --- /dev/null +++ b/regex_patterns/Verus.yml @@ -0,0 +1,6 @@ +name: Verus +pattern: (?<=^|[\s.-])Verus\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/WATCHABLE.yml b/regex_patterns/WATCHABLE.yml new file mode 100644 index 0000000..f35cd2a --- /dev/null +++ b/regex_patterns/WATCHABLE.yml @@ -0,0 +1,6 @@ +name: WATCHABLE +pattern: (?<=^|[\s.-])WATCHABLE\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/d3g.yml b/regex_patterns/d3g.yml new file mode 100644 index 0000000..6b4dccb --- /dev/null +++ b/regex_patterns/d3g.yml @@ -0,0 +1,6 @@ +name: d3g +pattern: (?<=^|[\s.-])d3g\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/dkore.yml b/regex_patterns/dkore.yml new file mode 100644 index 0000000..b3c2d9e --- /dev/null +++ b/regex_patterns/dkore.yml @@ -0,0 +1,6 @@ +name: dkore +pattern: (?<=^|[\s.-])dkore\b +description: '' +tags: +- Release Group +tests: null diff --git a/regex_patterns/spectacle.yml b/regex_patterns/spectacle.yml new file mode 100644 index 0000000..27e23a3 --- /dev/null +++ b/regex_patterns/spectacle.yml @@ -0,0 +1,6 @@ +name: spectacle +pattern: (?<=^|[\s.-])spectacle\b +description: '' +tags: +- Release Group +tests: null diff --git a/scripts/tierCreator.py b/scripts/tierCreator.py index 49a4d8c..1075011 100644 --- a/scripts/tierCreator.py +++ b/scripts/tierCreator.py @@ -18,7 +18,11 @@ def load_template(template_path): sys.exit(1) -def create_regex_pattern(group_name, template_dir, output_dir, dry_run=False): +def create_regex_pattern(group_name, + template_dir, + output_dir, + dry_run=False, + show_preview=False): """Create a regex pattern file for a release group if it doesn't exist.""" output_path = output_dir / f"{group_name}.yml" @@ -36,6 +40,17 @@ def create_regex_pattern(group_name, template_dir, output_dir, dry_run=False): template['name'] = group_name template['pattern'] = f"(?<=^|[\\s.-]){group_name}\\b" + # Show preview in dry run mode if this is the first pattern + if dry_run and show_preview: + print("\nPreview of first regex pattern:") + print("---") + print( + yaml.dump(template, + sort_keys=False, + default_flow_style=False, + indent=2)) + print("---\n") + # Create output directory if it doesn't exist output_dir.mkdir(parents=True, exist_ok=True) @@ -51,7 +66,8 @@ def create_tier_format(tier, groups, template_dir, output_dir, - dry_run=False): + dry_run=False, + show_preview=False): """Create a custom format file for a specific tier.""" # Get groups for this tier tier_groups = [group["name"] for group in groups if group["tier"] == tier] @@ -91,10 +107,22 @@ def create_tier_format(tier, # Write custom format file output_path = output_dir / f"{resolution} {type_name} Tier {tier}.yml" + existing = "Overwriting" if output_path.exists() else "Creating" print( - f"{'Would create' if dry_run else 'Creating'} custom format: {output_path} (includes {len(tier_groups)} groups)" + f"{'Would ' + existing.lower() if dry_run else existing} custom format: {output_path} (includes {len(tier_groups)} groups)" ) + # Show preview in dry run mode if this is the first format + if dry_run and show_preview: + print("\nPreview of first custom format:") + print("---") + print( + yaml.dump(template, + sort_keys=False, + default_flow_style=False, + indent=2)) + print("---\n") + if not dry_run: with open(output_path, 'w') as f: yaml.dump(template, @@ -152,18 +180,26 @@ def main(): # Create regex patterns for all groups print("\nProcessing regex patterns:") - for group in data["tiered_groups"]: - create_regex_pattern(group["name"], template_dir, regex_dir, - args.dry_run) + for i, group in enumerate(data["tiered_groups"]): + create_regex_pattern(group["name"], + template_dir, + regex_dir, + args.dry_run, + show_preview=(i == 0)) # Create tier formats print("\nProcessing custom formats:") unique_tiers = sorted(set(group["tier"] for group in data["tiered_groups"])) - for tier in unique_tiers: - create_tier_format(tier, args.resolution, args.type, - data["tiered_groups"], template_dir, format_dir, - args.dry_run) + for i, tier in enumerate(unique_tiers): + create_tier_format(tier, + args.resolution, + args.type, + data["tiered_groups"], + template_dir, + format_dir, + args.dry_run, + show_preview=(i == 0)) print( f"\nSuccessfully {'simulated' if args.dry_run else 'created'} custom formats for {args.resolution} {args.type}"