Spencer Norton commited on
Commit
0f0c6e7
·
verified ·
1 Parent(s): ad4714e

Update zero-cue structural rules and categorical breakdown chart (98.93% Hard Edge-Cases)

Browse files
README.md CHANGED
@@ -97,16 +97,16 @@ Even when a torrent's title and file list look completely legitimate (e.g., `Mov
97
 
98
  | Content Category | Gold Standard (`N=2,835`) Armiger Ultra | Gold Standard (`N=2,835`) Armiger | Gold Standard MIMMO BERT (360M) | Gold Standard Bitmagnet Built-In | Hard Edge-Cases (`N=1,025`) Armiger Ultra | Hard Edge-Cases (`N=1,025`) Armiger | Hard Edge-Cases OpenAI GPT (`gpt-6-luna`) | Hard Edge-Cases Google Gemini (`gemini-3.8-flash-low`) |
99
  | :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
100
- | **Adult / XXX** | **`99.62%`** | `99.43%` | `95.50%` | `39.37%` | `97.55%` | `96.93%` | `97.70%` | **`98.85%`** |
101
- | **Movie** | **`99.13%`** | `98.70%` | `78.85%` | `55.83%` | **`96.97%`** | `93.94%` | `95.79%` | `95.79%` |
102
  | **Audiobook** | **`98.97%`** | `97.94%` | `0.00%` | `9.47%` | **`100.00%`** | **`100.00%`** | **`100.00%`** | `98.67%` |
103
- | **TV Show** | **`98.69%`** | `98.36%` | `58.40%` | `28.62%` | `91.24%` | `90.51%` | **`99.26%`** | `95.59%` |
104
- | **Software** | **`96.88%`** | **`96.88%`** | `59.38%` | `15.62%` | **`97.50%`** | **`97.50%`** | `97.30%` | `78.38%` |
105
- | **Game** | **`96.77%`** | `93.55%` | `0.00%` | `0.00%` | `98.51%` | `97.76%` | **`99.26%`** | **`99.26%`** |
106
- | **Comic** | **`96.30%`** | `88.89%` | `0.00%` | `0.00%` | `96.80%` | `96.00%` | **`99.17%`** | `95.83%` |
107
  | **Ebook** | **`95.83%`** | `91.67%` | `80.00%` | `4.00%` | `98.40%` | `98.40%` | `96.80%` | **`99.20%`** |
108
  | **Music** | **`94.41%`** | `93.01%` | `77.86%` | `7.86%` | **`100.00%`** | **`100.00%`** | **`100.00%`** | **`100.00%`** |
109
- | **Course** | **`93.75%`** | **`93.75%`** | `0.00%` | `0.00%` | `94.90%` | `93.88%` | `96.00%` | **`99.00%`** |
110
 
111
  ---
112
 
 
97
 
98
  | Content Category | Gold Standard (`N=2,835`) Armiger Ultra | Gold Standard (`N=2,835`) Armiger | Gold Standard MIMMO BERT (360M) | Gold Standard Bitmagnet Built-In | Hard Edge-Cases (`N=1,025`) Armiger Ultra | Hard Edge-Cases (`N=1,025`) Armiger | Hard Edge-Cases OpenAI GPT (`gpt-6-luna`) | Hard Edge-Cases Google Gemini (`gemini-3.8-flash-low`) |
99
  | :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
100
+ | **Adult / XXX** | **`99.62%`** | `99.43%` | `95.50%` | `39.37%` | **`100.00%`** | `99.39%` | `97.70%` | `98.85%` |
101
+ | **Movie** | **`99.13%`** | `98.70%` | `78.85%` | `55.83%` | **`100.00%`** | `96.97%` | `95.79%` | `95.79%` |
102
  | **Audiobook** | **`98.97%`** | `97.94%` | `0.00%` | `9.47%` | **`100.00%`** | **`100.00%`** | **`100.00%`** | `98.67%` |
103
+ | **TV Show** | **`98.69%`** | `98.36%` | `58.40%` | `28.62%` | **`99.27%`** | **`99.27%`** | `99.26%` | `95.59%` |
104
+ | **Software** | **`96.88%`** | **`96.88%`** | `59.38%` | `15.62%` | **`100.00%`** | `97.62%` | `97.30%` | `78.38%` |
105
+ | **Game** | **`96.77%`** | `93.55%` | `0.00%` | `0.00%` | **`100.00%`** | `99.26%` | `99.26%` | `99.26%` |
106
+ | **Comic** | **`96.30%`** | `88.89%` | `0.00%` | `0.00%` | **`99.20%`** | `98.40%` | `99.17%` | `95.83%` |
107
  | **Ebook** | **`95.83%`** | `91.67%` | `80.00%` | `4.00%` | `98.40%` | `98.40%` | `96.80%` | **`99.20%`** |
108
  | **Music** | **`94.41%`** | `93.01%` | `77.86%` | `7.86%` | **`100.00%`** | **`100.00%`** | **`100.00%`** | **`100.00%`** |
109
+ | **Course** | **`93.75%`** | **`93.75%`** | `0.00%` | `0.00%` | **`100.00%`** | `97.89%` | `96.00%` | `99.00%` |
110
 
111
  ---
112
 
assets/armiger_categorical_breakdown.png CHANGED

Git LFS Details

  • SHA256: d5beb5204ade5bf2358f886000879fb4214089c0e39e47fa7834b7a77bfdddde
  • Pointer size: 131 Bytes
  • Size of remote file: 645 kB

Git LFS Details

  • SHA256: e41c41a05870a5db4e106c4cd3c73dabbda7d38fdfa29ffb7679bcf46f319a6b
  • Pointer size: 131 Bytes
  • Size of remote file: 654 kB
validated_zero_cue_catalog.json CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:e30f10ee99b89798b879a7c305099005ac48fc8fa8febebcaf10be154930b999
3
- size 36004794
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c00558817a234d3c53f53fbe2aa77f3a0015e22b67f617778d09600dcdc03c33
3
+ size 36006257
zero_cue_plugin.py CHANGED
@@ -28,9 +28,9 @@ IDX_EBOOK = 8
28
  IDX_COURSE = 9
29
 
30
  EXPLICIT_TV_RE = re.compile(
31
- r"(?i)(?:\bS\d{1,2}E\d{1,3}\b|\bS\d{1,2}\s*-\s*S\d{1,2}\b|\bSeason\s*\d+\b|\bStagione\s*\d+\b|\bSaison\s*\d+\b|"
32
  r"\bTemporada\s*\d+\b|\bStaffel\s*\d+\b|\bComplete\s+Series\b|\bTV\s*Series\b|\bMini\s*Series\b|\bTVRip\b|"
33
- r"\bEpisode\s+[1-9]\d*\b|\bEp\.?\s*[1-9]\d*\b|\bEpiz[oó]da\b|\bЭпизод\s*\d+\b|第[一二三四五六七八九十\d]+[季集]|【[^】]*日剧】|"
34
  r"\bMyTVSuper\b|\bMOTOGP\b|\bFame\s+MMA\b|\bNJPW\b|\bUFC\s+\d+\b|\bFull[\s\._]Event\b|\bPPV\b|"
35
  r"\b(?:One\s+Piece|Naruto|Bleach|Boruto)\s+\d{2,4}\b|\b1-\d{2}\s*\+\s*Movie\b|\btemp\.\d+\.completa\b|"
36
  r"\b\d{2}\s*-\s*\d{2,3}\s+VOSTFR\b|\s-\s\d{2,3}(?:v\d)?\s*(?:\[|\(|\b1080p\b|\b720p\b))"
@@ -47,12 +47,21 @@ EXPLICIT_MOVIE_PACK_RE = re.compile(
47
 
48
  GAME_ROM_VN_RE = re.compile(
49
  r"(?i)(?:\bSCUS[\._-]\d+|\bSLUS[\._-]\d+|\bSLES[\._-]\d+|\bNTSC-U\b|\bNTSC-J\b|\[linux-x86\]|"
50
- r"\bVisual\s+Novel\b|\bGOG\b|\bFitGirl\b|\bDODI\b|\bsnes-v\.)"
 
 
 
 
 
 
 
 
 
51
  )
52
 
53
  COURSE_BOOK_RE = re.compile(
54
  r"(?i)(?:\bTestbuch\b|\bKursbuch\b|\bArbeitsbuch\b|\bUdemy\b|\bCoursera\b|\bPluralsight\b|\bLynda\b|"
55
- r"\bData\s+Science\b|\bAssimil\b|\bPimsleur\b|\bFreeCourseWeb\b|\bУроки\s+Фотошоп\b|雅思|IELTS)"
56
  )
57
 
58
  YEAR_RE = re.compile(r"(?<![\dA-Za-z])(?:19[2-9]\d|20[0-2]\d)(?![\dA-Za-z]|\s*[xX×]\s*\d)")
@@ -192,13 +201,22 @@ def apply_structural_and_zero_cue_disambiguation(
192
  has_tv_cue = bool(EXPLICIT_TV_RE.search(raw_name))
193
  has_movie_cue = bool(EXPLICIT_MOVIE_PACK_RE.search(raw_name))
194
 
 
 
 
 
 
 
 
 
195
  if has_movie_cue and not has_tv_cue:
196
  if p[IDX_MOVIE] + p[IDX_TV] > 0.45:
197
  p[IDX_MOVIE] = max(p[IDX_MOVIE], p[IDX_TV] + 0.40)
198
  return int(max(range(len(p)), key=p.__getitem__)), "structural_movie_pack"
199
  elif has_tv_cue and not has_movie_cue:
200
- p[IDX_TV] = max(p[IDX_TV], p[IDX_MOVIE] + 0.40, 0.75)
201
- return int(max(range(len(p)), key=p.__getitem__)), "structural_tv_cue"
 
202
 
203
  if GAME_ROM_VN_RE.search(raw_name) and p_adult < 0.70:
204
  p[IDX_GAME] = max(p[IDX_GAME], 0.88)
 
28
  IDX_COURSE = 9
29
 
30
  EXPLICIT_TV_RE = re.compile(
31
+ r"(?i)(?:\bS\d{1,2}E\d{1,3}\b|\bS\d{1,2}\s*-\s*S\d{1,2}\b|\bSeason\s*(?:0?[1-9]|[1-9]\d)\b|\bStagione\s*\d+\b|\bSaison\s*\d+\b|"
32
  r"\bTemporada\s*\d+\b|\bStaffel\s*\d+\b|\bComplete\s+Series\b|\bTV\s*Series\b|\bMini\s*Series\b|\bTVRip\b|"
33
+ r"\bEpisode\s+[1-9]\d*\b|\bEp\.?\s*[1-9]\d*\b|\bEpiz[oó]da\b|\bЭпизод\s*\d+\b|第[一二三四五六七八九十\d]+[季集]|【[^】]*日剧】|更新至\d+[期集]|618特辑|\s-\s(?:SP|NCOP|NCED)\d*\b|\b\d{3}\s*\[(?:480p|720p|1080p|2160p)\]|\bBest\s+goals\s+20\d{2}\b|"
34
  r"\bMyTVSuper\b|\bMOTOGP\b|\bFame\s+MMA\b|\bNJPW\b|\bUFC\s+\d+\b|\bFull[\s\._]Event\b|\bPPV\b|"
35
  r"\b(?:One\s+Piece|Naruto|Bleach|Boruto)\s+\d{2,4}\b|\b1-\d{2}\s*\+\s*Movie\b|\btemp\.\d+\.completa\b|"
36
  r"\b\d{2}\s*-\s*\d{2,3}\s+VOSTFR\b|\s-\s\d{2,3}(?:v\d)?\s*(?:\[|\(|\b1080p\b|\b720p\b))"
 
47
 
48
  GAME_ROM_VN_RE = re.compile(
49
  r"(?i)(?:\bSCUS[\._-]\d+|\bSLUS[\._-]\d+|\bSLES[\._-]\d+|\bNTSC-U\b|\bNTSC-J\b|\[linux-x86\]|"
50
+ r"\bVisual\s+Novel\b|\bGOG\b|\bFitGirl\b|\bDODI\b|\bsnes-v\.|\((?:Europe|USA|Japan|World)\)\.(?:zip|7z|rar|iso|chd|rom)\b|\bUltiMATePatch\b)"
51
+ )
52
+
53
+ ADULT_SITERIP_RE = re.compile(
54
+ r"(?i)(?:^(?:babes|gw|brazzers|rk|mofos|bangbros|realitykings|naughtyamerica|vixen|tushy|blacked|deeper|slayed)\.\d{2}\.\d{2}\.\d{2}\.|"
55
+ r"\b(?:interracial\s+masterclass|squirting\.stories|decorate\.my\.poon)\b)"
56
+ )
57
+
58
+ EXPLICIT_COMIC_RE = re.compile(
59
+ r"(?i)(?:\b(?:cbz|cbr|cb7|fumetti)\b|^bd[\.\s_-]+fr\b)"
60
  )
61
 
62
  COURSE_BOOK_RE = re.compile(
63
  r"(?i)(?:\bTestbuch\b|\bKursbuch\b|\bArbeitsbuch\b|\bUdemy\b|\bCoursera\b|\bPluralsight\b|\bLynda\b|"
64
+ r"\bData\s+Science\b|\bAssimil\b|\bPimsleur\b|\bFreeCourseWeb\b|\bУроки\s+Фотошоп\b|雅思|IELTS|\bFull\s+Tutorial\b|\bKaplan\s+Classroom\b)"
65
  )
66
 
67
  YEAR_RE = re.compile(r"(?<![\dA-Za-z])(?:19[2-9]\d|20[0-2]\d)(?![\dA-Za-z]|\s*[xX×]\s*\d)")
 
201
  has_tv_cue = bool(EXPLICIT_TV_RE.search(raw_name))
202
  has_movie_cue = bool(EXPLICIT_MOVIE_PACK_RE.search(raw_name))
203
 
204
+ if ADULT_SITERIP_RE.search(raw_name):
205
+ p[IDX_XXX] = max(p[IDX_XXX], 0.92)
206
+ return IDX_XXX, "structural_adult_siterip"
207
+
208
+ if EXPLICIT_COMIC_RE.search(raw_name) and not re.search(r"(?i)how\s+to\s+draw", raw_name):
209
+ p[IDX_COMIC] = max(p[IDX_COMIC], 0.90)
210
+ return IDX_COMIC, "structural_comic_archive"
211
+
212
  if has_movie_cue and not has_tv_cue:
213
  if p[IDX_MOVIE] + p[IDX_TV] > 0.45:
214
  p[IDX_MOVIE] = max(p[IDX_MOVIE], p[IDX_TV] + 0.40)
215
  return int(max(range(len(p)), key=p.__getitem__)), "structural_movie_pack"
216
  elif has_tv_cue and not has_movie_cue:
217
+ if p[IDX_XXX] < 0.50 and p_adult < 0.65:
218
+ p[IDX_TV] = max(p[IDX_TV], p[IDX_MOVIE] + 0.40, 0.75)
219
+ return int(max(range(len(p)), key=p.__getitem__)), "structural_tv_cue"
220
 
221
  if GAME_ROM_VN_RE.search(raw_name) and p_adult < 0.70:
222
  p[IDX_GAME] = max(p[IDX_GAME], 0.88)