Unit3Dup 0.9.17__tar.gz → 0.9.18__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. {unit3dup-0.9.17 → unit3dup-0.9.18}/PKG-INFO +1 -1
  2. {unit3dup-0.9.17 → unit3dup-0.9.18}/Unit3Dup.egg-info/PKG-INFO +1 -1
  3. {unit3dup-0.9.17 → unit3dup-0.9.18}/Unit3Dup.egg-info/SOURCES.txt +2 -0
  4. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/settings.py +8 -261
  5. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/tags.py +35 -19
  6. unit3dup-0.9.18/common/trackers/releasers.py +252 -0
  7. unit3dup-0.9.18/common/trackers/tags_list.py +106 -0
  8. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/utility.py +37 -19
  9. {unit3dup-0.9.17 → unit3dup-0.9.18}/pyproject.toml +1 -1
  10. {unit3dup-0.9.17 → unit3dup-0.9.18}/LICENSE +0 -0
  11. {unit3dup-0.9.17 → unit3dup-0.9.18}/README.rst +0 -0
  12. {unit3dup-0.9.17 → unit3dup-0.9.18}/Unit3Dup.egg-info/dependency_links.txt +0 -0
  13. {unit3dup-0.9.17 → unit3dup-0.9.18}/Unit3Dup.egg-info/entry_points.txt +0 -0
  14. {unit3dup-0.9.17 → unit3dup-0.9.18}/Unit3Dup.egg-info/requires.txt +0 -0
  15. {unit3dup-0.9.17 → unit3dup-0.9.18}/Unit3Dup.egg-info/top_level.txt +0 -0
  16. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/__init__.py +0 -0
  17. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/bdinfo_string.py +0 -0
  18. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/bittorrent.py +0 -0
  19. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/command.py +0 -0
  20. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/constants.py +0 -0
  21. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/database.py +0 -0
  22. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/__init__.py +0 -0
  23. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/ftpx/__init__.py +0 -0
  24. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/ftpx/client.py +0 -0
  25. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/ftpx/core/__init__.py +0 -0
  26. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/ftpx/core/ftpx_service.py +0 -0
  27. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/ftpx/core/ftpx_session.py +0 -0
  28. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/ftpx/core/menu.py +0 -0
  29. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/ftpx/core/models/__init__.py +0 -0
  30. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/ftpx/core/models/list.py +0 -0
  31. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/igdb/__init__.py +0 -0
  32. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/igdb/client.py +0 -0
  33. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/igdb/core/__init__.py +0 -0
  34. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/igdb/core/api.py +0 -0
  35. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/igdb/core/models/__init__.py +0 -0
  36. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/igdb/core/models/search.py +0 -0
  37. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/igdb/core/platformid.py +0 -0
  38. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/igdb/core/tags.py +0 -0
  39. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/imageHost.py +0 -0
  40. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/mediaresult.py +0 -0
  41. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/sessions/__init__.py +0 -0
  42. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/sessions/agents.py +0 -0
  43. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/sessions/exceptions.py +0 -0
  44. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/sessions/session.py +0 -0
  45. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/__init__.py +0 -0
  46. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/__init__.py +0 -0
  47. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/api.py +0 -0
  48. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/keywords.py +0 -0
  49. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/__init__.py +0 -0
  50. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/movie/__init__.py +0 -0
  51. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/movie/alternative_titles.py +0 -0
  52. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/movie/details.py +0 -0
  53. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/movie/movie.py +0 -0
  54. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/movie/nowplaying.py +0 -0
  55. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/movie/release_info.py +0 -0
  56. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/tvshow/__init__.py +0 -0
  57. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/tvshow/alternative.py +0 -0
  58. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/tvshow/details.py +0 -0
  59. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/tvshow/on_the_air.py +0 -0
  60. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/tvshow/translations.py +0 -0
  61. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/tvshow/tvshow.py +0 -0
  62. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/videos.py +0 -0
  63. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/trailers/__init__.py +0 -0
  64. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/trailers/api.py +0 -0
  65. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/trailers/response.py +0 -0
  66. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/external_services/tvdb.py +0 -0
  67. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/extractor.py +0 -0
  68. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/frames.py +0 -0
  69. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/mediainfo.py +0 -0
  70. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/mediainfo_string.py +0 -0
  71. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/title.py +0 -0
  72. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/torrent_clients.py +0 -0
  73. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/trackers/__init__.py +0 -0
  74. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/trackers/data.py +0 -0
  75. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/trackers/itt.py +0 -0
  76. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/trackers/sis.py +0 -0
  77. {unit3dup-0.9.17 → unit3dup-0.9.18}/common/trackers/trackers.py +0 -0
  78. {unit3dup-0.9.17 → unit3dup-0.9.18}/requirements.txt +0 -0
  79. {unit3dup-0.9.17 → unit3dup-0.9.18}/setup.cfg +0 -0
  80. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/__init__.py +0 -0
  81. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/__main__.py +0 -0
  82. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/automode.py +0 -0
  83. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/bot.py +0 -0
  84. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/duplicate.py +0 -0
  85. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/exceptions.py +0 -0
  86. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/media.py +0 -0
  87. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/media_manager/ContentManager.py +0 -0
  88. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/media_manager/DocuManager.py +0 -0
  89. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/media_manager/GameManager.py +0 -0
  90. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/media_manager/MediaInfoManager.py +0 -0
  91. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/media_manager/SeedManager.py +0 -0
  92. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/media_manager/TorrentManager.py +0 -0
  93. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/media_manager/VideoManager.py +0 -0
  94. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/media_manager/__init__.py +0 -0
  95. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/media_manager/common.py +0 -0
  96. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/pvtDocu.py +0 -0
  97. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/pvtTorrent.py +0 -0
  98. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/pvtTracker.py +0 -0
  99. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/pvtVideo.py +0 -0
  100. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/torrent.py +0 -0
  101. {unit3dup-0.9.17 → unit3dup-0.9.18}/unit3dup/upload.py +0 -0
  102. {unit3dup-0.9.17 → unit3dup-0.9.18}/view/__init__.py +0 -0
  103. {unit3dup-0.9.17 → unit3dup-0.9.18}/view/custom_console.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Unit3Dup
3
- Version: 0.9.17
3
+ Version: 0.9.18
4
4
  Summary: An uploader for the Unit3D torrent tracker
5
5
  Author: Parzival
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Unit3Dup
3
- Version: 0.9.17
3
+ Version: 0.9.18
4
4
  Summary: An uploader for the Unit3D torrent tracker
5
5
  Author: Parzival
6
6
  License-Expression: MIT
@@ -71,7 +71,9 @@ common/external_services/trailers/response.py
71
71
  common/trackers/__init__.py
72
72
  common/trackers/data.py
73
73
  common/trackers/itt.py
74
+ common/trackers/releasers.py
74
75
  common/trackers/sis.py
76
+ common/trackers/tags_list.py
75
77
  common/trackers/trackers.py
76
78
  unit3dup/__init__.py
77
79
  unit3dup/__main__.py
@@ -1,5 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
-
3
2
  import ipaddress
4
3
  import json
5
4
  import os
@@ -8,9 +7,13 @@ import re
8
7
  import unicodedata
9
8
 
10
9
  from pydantic import BaseModel, model_validator
10
+ from pathvalidate import sanitize_filepath
11
11
  from urllib.parse import urlparse
12
12
  from pathlib import Path
13
- from pathvalidate import sanitize_filepath
13
+
14
+ from common.trackers.releasers import SIGNS_LIST
15
+ from common.trackers.tags_list import TAGS_LIST
16
+
14
17
  from common.utility import ManageTitles
15
18
  from common import trackers
16
19
 
@@ -18,7 +21,7 @@ config_file = "Unit3Dbot.json"
18
21
  user_tags_file = "tags_list.json"
19
22
  user_sign_file = "sign_list.json"
20
23
 
21
- version = "0.9.17"
24
+ version = "0.9.18"
22
25
 
23
26
  if os.name == "nt":
24
27
  WATCHER_DESTINATION_PATH: Path = Path(
@@ -526,274 +529,18 @@ class Load:
526
529
  """
527
530
  Creates a tags list file
528
531
  """
529
- TAG_TYPES = {
530
- "REMUX": "remux",
531
- "WEB-DL": "source",
532
- "WEBDL": "source",
533
- "WEB-DLRIP": "source",
534
- "WEBDLRIP": "source",
535
- "WEB-DLMUX": "source",
536
- "WEBDLMUX": "source",
537
- "WEBMUX": "source",
538
- "WEBRIP": "source",
539
- "BD-UNTOUCHED": "source",
540
- "UNTOUCHED": "source",
541
-
542
- "TS": "source",
543
- "CAM": "source",
544
- "HDTS": "source",
545
- "MD": "source",
546
- "UHDRIP": "source",
547
- "BLURAY": "source",
548
- "BRRIP": "source",
549
- "BDRIP": "source",
550
- "FHDRIP": "source",
551
- "PDTV": "source",
552
- "SATRIP": "source",
553
- "DVBRIP": "source",
554
- "DVB-S": "source",
555
- "DTTRIP": "source",
556
- "WP": "source",
557
- "DVDSCR": "source",
558
- "TVRIP": "source",
559
- "VHSRIP": "source",
560
- "DVDRIP": "source",
561
- "HDTV": "source",
562
- "DVD5": "source",
563
- "DVD9": "source",
564
- "VU": "source",
565
-
566
- "ATVP": "platform",
567
- "AMZN": "platform",
568
- "AMC": "platform",
569
- "CN": "platform",
570
- "CR": "platform",
571
- "DCU": "platform",
572
- "DISC": "platform",
573
- "DSCP": "platform",
574
- "DSNY": "platform",
575
- "DSNP": "platform",
576
- "DPLY": "platform",
577
- "ESPN": "platform",
578
- "FOOD": "platform",
579
- "FOX": "platform",
580
- "PLAY": "platform",
581
- "HBO": "platform",
582
- "HMAX": "platform",
583
- "HGTV": "platform",
584
- "HIST": "platform",
585
- "HULU": "platform",
586
- "MTOD": "platform",
587
- "NATG": "platform",
588
- "NF": "platform",
589
- "NICK": "platform",
590
- "NOW": "platform",
591
- "PMNT": "platform",
592
- "PMTP": "platform",
593
- "PCOK": "platform",
594
- "RKTN": "platform",
595
- "SHO": "platform",
596
- "SKST": "platform",
597
- "STAN": "platform",
598
- "STRP": "platform",
599
- "STZ": "platform",
600
- "TIMV": "platform",
601
-
602
- "SPECIAL": "version",
603
- "REPACK": "version",
604
- "EXTENDED": "version",
605
- "EDITION": "version",
606
- "DIRECTOR'S": "version",
607
- "CUT": "version",
608
-
609
- "SUBBED": "version",
610
- "MUX": "version",
611
- "REMASTERED": "version",
612
- "READNFO": "version",
613
- "UNRATED": "version",
614
- "UNCUT": "version",
615
- "LIMITED": "version",
616
- "ANNIVERSARY": "version",
617
- "4k RESTORATION": "version",
618
- "IMAX": "version",
619
- "OPEN MATTE": "version",
620
- "2IN1": "version",
621
-
622
- "STV": "version",
623
- "RECODE": "version",
624
- "INTERNAL": "version",
625
- "PROPER": "version",
626
- "DUAL": "version",
627
- "COMPLETE": "version",
628
- "COMPLETA": "version",
629
-
630
- "X264": "video_encoder",
631
- "X265": "video_encoder",
632
- }
633
-
634
532
  path.parent.mkdir(parents=True, exist_ok=True)
635
533
  with open(path, "w", encoding="utf-8") as tags_list_file:
636
- json.dump(TAG_TYPES, tags_list_file, ensure_ascii=False, indent=4)
534
+ json.dump(TAGS_LIST, tags_list_file, ensure_ascii=False, indent=4)
637
535
 
638
536
  @staticmethod
639
537
  def create_sign_list_file(path: Path):
640
538
  """
641
539
  Creates a tags list file
642
540
  """
643
- TAG_TYPES = {
644
- "21APRILE": "releaser",
645
- "ALE88SERMETE": "releaser",
646
- "ARRANCAR": "releaser",
647
- "ASTOR": "releaser",
648
- "AV1MERR": "releaser",
649
- "BADGUY": "releaser",
650
- "BITSHIFT": "releaser",
651
- "BLACKBIT": "releaser",
652
- "BUMBLEBEE1982": "releaser",
653
- "CAPPYO": "releaser",
654
- "CAVALLONZI": "releaser",
655
- "CB01HD": "releaser",
656
- "CHD": "releaser",
657
- "CHDWEB": "releaser",
658
- "CIAME": "releaser",
659
- "CLOCLONE": "releaser",
660
- "COMIX21": "releaser",
661
- "CREW": "releaser",
662
- "CSS": "releaser",
663
- "CSS2": "releaser",
664
- "CSS7896": "releaser",
665
- "CYBER": "releaser",
666
- "D3VELOPER": "releaser",
667
- "DAICHISO": "releaser",
668
- "DANGUARD": "releaser",
669
- "DARKCOMPANY": "releaser",
670
- "DARKPARANOR": "releaser",
671
- "DAYMON64": "releaser",
672
- "DDN": "releaser",
673
- "DEDO1911": "releaser",
674
- "DEMN": "releaser",
675
- "DMAN": "releaser",
676
- "DOCH74": "releaser",
677
- "DRIIP": "releaser",
678
- "DYNUX": "releaser",
679
- "ELGHOTO": "releaser",
680
- "ENCRYPTED": "releaser",
681
- "EVN": "releaser",
682
- "EZTV": "releaser",
683
- "FAINO1310": "releaser",
684
- "FEDECAS89": "releaser",
685
- "FGT": "releaser",
686
- "FHC": "releaser",
687
- "FLORIN993": "releaser",
688
- "FLUX": "releaser",
689
- "FREZEEN": "releaser",
690
- "FUSION": "releaser",
691
- "G66": "releaser",
692
- "GABIACAS": "releaser",
693
- "GIUSEPPETNT": "releaser",
694
- "GOLDENTORRENT": "releaser",
695
- "GRYM": "releaser",
696
- "HAPPITEAM-YNK": "releaser",
697
- "HASHDEV": "releaser",
698
- "HDCHINA": "releaser",
699
- "HENRYDIRTY": "releaser",
700
- "HONE": "releaser",
701
- "HHNN": "releaser",
702
- "HYRULE": "releaser",
703
- "I3AM": "releaser",
704
- "IBANEZ89": "releaser",
705
- "IDIB": "releaser",
706
- "IDN": "releaser",
707
- "ILGANZO": "releaser",
708
- "ILPADRINO": "releaser",
709
- "ILSAGGIO": "releaser",
710
- "ILSOMMO": "releaser",
711
- "IPDR01": "releaser",
712
- "ITT": "releaser",
713
- "JOHNSEED": "releaser",
714
- "KINGOFROME": "releaser",
715
- "KRIKK": "releaser",
716
- "LAZY-SUBS": "releaser",
717
- "LEPORE": "releaser",
718
- "LFI": "releaser",
719
- "LULLOZZO": "releaser",
720
- "MATT3O": "releaser",
721
- "MATT_BROWN4": "releaser",
722
- "MAX2014": "releaser",
723
- "MIRCREW": "releaser",
724
- "MISTERNED": "releaser",
725
- "MRBLONDE": "releaser",
726
- "MRROBOT": "releaser",
727
- "MUETTO": "releaser",
728
- "MUWATTALI": "releaser",
729
- "NAHOM": "releaser",
730
- "NARSETE": "releaser",
731
- "NEOSTARK": "releaser",
732
- "NEUROSIS": "releaser",
733
- "NIMOUEH": "releaser",
734
- "NOGROUP": "releaser",
735
- "NOVARIP": "releaser",
736
- "NTROPIC": "releaser",
737
- "ODS": "releaser",
738
- "ONGOIA": "releaser",
739
- "PEPPE": "releaser",
740
- "PENNYWISE": "releaser",
741
- "PETE321": "releaser",
742
- "PICOPOCO": "releaser",
743
- "PING": "releaser",
744
- "PINKER": "releaser",
745
- "PIR8": "releaser",
746
- "PLAYWEB": "releaser",
747
- "PRIME": "releaser",
748
- "PROMETHEUS": "releaser",
749
- "PROSCIUTTO": "releaser",
750
- "RADESE": "releaser",
751
- "RAWR": "releaser",
752
- "RARBG": "releaser",
753
- "RIDDICKK": "releaser",
754
- "ROGELIOBYNIGHT": "releaser",
755
- "ROMEO": "releaser",
756
- "RYUKXX": "releaser",
757
- "S-K": "releaser",
758
- "SANDWORM": "releaser",
759
- "SEEDBOX": "releaser",
760
- "SEEDBOX2": "releaser",
761
- "SERCIUS": "releaser",
762
- "SIMO01": "releaser",
763
- "SIXTEEN8664": "releaser",
764
- "SK4TTO": "releaser",
765
- "SMURFADMIN": "releaser",
766
- "SPYRO1989": "releaser",
767
- "STEVEJOHNNEE": "releaser",
768
- "STINGUAJT": "releaser",
769
- "TAHTAKALECI": "releaser",
770
- "TELESTO": "releaser",
771
- "TERMINAL": "releaser",
772
- "THEBLACKKING": "releaser",
773
- "THEEMOJICREW": "releaser",
774
- "THUDARA": "releaser",
775
- "TIGRE67": "releaser",
776
- "TORRENT10": "releaser",
777
- "TOTAL_SHARE88": "releaser",
778
- "TREE7458": "releaser",
779
- "TRIVIAL99": "releaser",
780
- "UBI": "releaser",
781
- "V3SP4EV3R": "releaser",
782
- "VIOLENT96": "releaser",
783
- "VOLVIC": "releaser",
784
- "WHEELIE": "releaser",
785
- "WHITERHINO": "releaser",
786
- "WIZARDS2K": "releaser",
787
- "WRS": "releaser",
788
- "XVID": "releaser",
789
- "YIFY": "releaser",
790
- "YTS": "releaser",
791
- "ZIORIP": "releaser"
792
- }
793
-
794
541
  path.parent.mkdir(parents=True, exist_ok=True)
795
542
  with open(path, "w", encoding="utf-8") as tags_sign_file:
796
- json.dump(TAG_TYPES, tags_sign_file, ensure_ascii=False, indent=4)
543
+ json.dump(SIGNS_LIST, tags_sign_file, ensure_ascii=False, indent=4)
797
544
 
798
545
  @staticmethod
799
546
  def create_default_json_file(path: Path):
@@ -1,5 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
- import os
3
2
  import re
4
3
  from common.mediainfo import MediaFile
5
4
  from common.utility import ManageTitles
@@ -10,12 +9,13 @@ hdr_map = {
10
9
  "DOLBY VISION": "DV",
11
10
  "DOLBY VISION HDR": "DV HDR",
12
11
  "DOLBY VISION HDR10": "DV HDR10",
13
- "DOLBY VISION HDR10+": "DV HDR",
12
+ "DOLBY VISION HDR10+": "DV HDR10+",
14
13
  "HDR10PLUS": "HDR10+",
15
14
  "HDRPLUS+": "HDR10+",
16
15
  "HDR10+": "HDR10+",
17
16
  "HDR10": "HDR10",
18
17
  "HDR10 / HDR10": "HDR10",
18
+ "HDR10 / HDR10+": "HDR10+",
19
19
  "HDR10 / HDR10 / HDR10+": "HDR10+",
20
20
  "SMPTE ST 2086": "HDR10",
21
21
  "SMPTE ST 2094": "HDR10+",
@@ -86,7 +86,6 @@ class SearchTags(object):
86
86
  tag_esc = re.escape(tag)
87
87
  return tag_esc
88
88
 
89
-
90
89
  @staticmethod
91
90
  def normalize_video_encoder(tag: str) -> str:
92
91
  tag_esc = re.escape(tag)
@@ -101,6 +100,7 @@ class SearchTags(object):
101
100
  build.append(' '.join(v))
102
101
  else:
103
102
  build.append(str(v))
103
+
104
104
  refactored = ' '.join(build) + self.releaser_sign
105
105
  return refactored
106
106
 
@@ -175,22 +175,7 @@ class SearchTags(object):
175
175
  if not self.releaser_sign:
176
176
  # If releaser_sign is not defined in the configuration file,
177
177
  # try to detect a known sign from SIGN_LIST
178
- pattern = "|".join(
179
- sorted((re.escape(k) for k in self.SIGNS_LIST.keys()), key=len, reverse=True)
180
- )
181
- self.filename = os.path.splitext(self.filename)[0]
182
- regex = re.compile(
183
- r'(?:^|[\s._-])(' + pattern + r')(?=$|[\s._-]*$)',
184
- re.IGNORECASE
185
- )
186
- matches = regex.findall(self.filename)
187
- if matches:
188
- self.releaser_sign = f"-{matches[0]}" if matches[0].upper() in self.SIGNS_LIST else ""
189
- else:
190
- self.releaser_sign = ""
191
- else:
192
- # Add releaser_sign from the configuration file
193
- self.releaser_sign = f"-{self.releaser_sign}"
178
+ self.releaser_sign = self.detect_releaser(self.filename, self.SIGNS_LIST)
194
179
 
195
180
  # /// Order according to tag position
196
181
  tags_dict = {
@@ -314,3 +299,34 @@ class SearchTags(object):
314
299
  result['resolution'] = f'{video_width}x{video_height}'
315
300
 
316
301
  return result
302
+
303
+ @staticmethod
304
+ def detect_releaser(name: str, signs_list: dict) -> str:
305
+ """
306
+ normalize both signs_list and base_name
307
+ find the start/end position of the matched sign
308
+ extract the substring from the original base_name
309
+ """
310
+ # Strip the title
311
+ base_name = str(name).strip()
312
+
313
+ # Remove '.'; '_'; '-' chars from the filename and dictionary signs_list
314
+ tokens = re.split(r"[._-]+", base_name)
315
+
316
+ base_name_normalized = ' '.join(tokens)
317
+
318
+ # normalize list of signs ( because it is user editable)
319
+ tokens_signs_list = [re.sub(r"[._-]+", " ", str(sign)) for sign in signs_list]
320
+
321
+ # sort dictionary from the longest to shortest to avoid partial result (es. 'crew' instead di 'mircrew')
322
+ tokens_signs_list_sorted = sorted(tokens_signs_list, key=len, reverse=True)
323
+
324
+ # Search for signs in the base_name_normalized
325
+ for token in tokens_signs_list_sorted:
326
+ pattern = r"\b" + re.escape(token) + r"\b"
327
+ match = re.search(pattern, base_name_normalized, re.IGNORECASE)
328
+ if match:
329
+ # Capture any characters from the start to the end of base_name
330
+ # normalized_base_name loses chars like '-','.' or '-'
331
+ return f"-{base_name[match.start(): match.end()]}"
332
+ return ""
@@ -0,0 +1,252 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ SIGNS_LIST = {
4
+ "21APRILE": "releaser",
5
+ "ACCID": "releaser",
6
+ "ADWEB": "releaser",
7
+ "ALE88SERMETE": "releaser",
8
+ "APEX": "releaser",
9
+ "ARMOR": "releaser",
10
+ "ARRANCAR": "releaser",
11
+ "ARTEMIX MIRCREW": "releaser",
12
+ "ASPIDE MIRCREW": "releaser",
13
+ "ASTOR": "releaser",
14
+ "AV1MERR": "releaser",
15
+ "BADGUY": "releaser",
16
+ "BALTHA": "releaser",
17
+ "BAMAX71": "releaser",
18
+ "BD": "releaser",
19
+ "BEN THE MEN": "releaser",
20
+ "BITSHIFT": "releaser",
21
+ "BLACKBIT": "releaser",
22
+ "BL4CK-B4RT-MIRCREW": "releaser",
23
+ "BLUWORLD": "releaser",
24
+ "BOBDOBBS": "releaser",
25
+ "BULLITT": "releaser",
26
+ "BUMBLEBEE1982": "releaser",
27
+ "BUREK": "releaser",
28
+ "C0P": "releaser",
29
+ "CAPPYO": "releaser",
30
+ "CAVALLONZI": "releaser",
31
+ "CB01HD": "releaser",
32
+ "CHD": "releaser",
33
+ "CHDWEB": "releaser",
34
+ "CIAME": "releaser",
35
+ "CLOCLONE": "releaser",
36
+ "CODEX": "releaser",
37
+ "COMIX21": "releaser",
38
+ "CREW": "releaser",
39
+ "CSS": "releaser",
40
+ "CSS2": "releaser",
41
+ "CSS7896": "releaser",
42
+ "CYBER": "releaser",
43
+ "D3VELOPER": "releaser",
44
+ "DAICHISO": "releaser",
45
+ "DANGUARD": "releaser",
46
+ "DARKCOMPANY": "releaser",
47
+ "DARKPARANOR": "releaser",
48
+ "DAYMON64": "releaser",
49
+ "DB": "releaser",
50
+ "DDN": "releaser",
51
+ "DDNCREW": "releaser",
52
+ "DEDO1911": "releaser",
53
+ "DEMN": "releaser",
54
+ "DMAN": "releaser",
55
+ "DOCH74": "releaser",
56
+ "DR4GON": "releaser",
57
+ "DRIIP": "releaser",
58
+ "DST": "releaser",
59
+ "DYNUX": "releaser",
60
+ "EA": "releaser",
61
+ "EGL": "releaser",
62
+ "ELGHOTO": "releaser",
63
+ "ELISA": "releaser",
64
+ "EMPRESS": "releaser",
65
+ "ENCRYPTED": "releaser",
66
+ "EPSILON": "releaser",
67
+ "EVN": "releaser",
68
+ "EZTV": "releaser",
69
+ "FAINO1310": "releaser",
70
+ "FEDECAS89": "releaser",
71
+ "FGT": "releaser",
72
+ "FHC": "releaser",
73
+ "FLT": "releaser",
74
+ "FLORIN993": "releaser",
75
+ "FLUX": "releaser",
76
+ "FOOD": "releaser",
77
+ "FRAMESTOR": "releaser",
78
+ "FREZEEN": "releaser",
79
+ "FW": "releaser",
80
+ "FUSION": "releaser",
81
+ "FXE": "releaser",
82
+ "G66": "releaser",
83
+ "GABIACAS": "releaser",
84
+ "GATTOPOLLO": "releaser",
85
+ "GFM": "releaser",
86
+ "GIUSEPPETNT": "releaser",
87
+ "GOLDENTORRENT": "releaser",
88
+ "GRYM": "releaser",
89
+ "HAPPITEAM-YNK": "releaser",
90
+ "HASHDEV": "releaser",
91
+ "HDCHINA": "releaser",
92
+ "HDI": "releaser",
93
+ "HHNN": "releaser",
94
+ "HHWEB": "releaser",
95
+ "HENRYDIRTY": "releaser",
96
+ "HMR": "releaser",
97
+ "HONE": "releaser",
98
+ "HYRULE": "releaser",
99
+ "I3AM": "releaser",
100
+ "IBANEZ89": "releaser",
101
+ "IDIB": "releaser",
102
+ "IDN": "releaser",
103
+ "IDN-CREW": "releaser",
104
+ "IGS": "releaser",
105
+ "ILGANZO": "releaser",
106
+ "ILPADRINO": "releaser",
107
+ "ILSAGGIO": "releaser",
108
+ "ILSOMMO": "releaser",
109
+ "IPDR01": "releaser",
110
+ "ITT": "releaser",
111
+ "JEDDAK-MIRCREW": "releaser",
112
+ "JOHNSEED": "releaser",
113
+ "KINGOFROME": "releaser",
114
+ "KIN": "releaser",
115
+ "KISSY": "releaser",
116
+ "KITSUNE": "releaser",
117
+ "KJM": "releaser",
118
+ "KOGI": "releaser",
119
+ "KONTRAST": "releaser",
120
+ "KOVALSKI": "releaser",
121
+ "KRALIMARKO": "releaser",
122
+ "KRIKK": "releaser",
123
+ "KUCHU": "releaser",
124
+ "LAZY-SUBS": "releaser",
125
+ "LATENEVER": "releaser",
126
+ "LDI": "releaser",
127
+ "LEAGUENF": "releaser",
128
+ "LELE753": "releaser",
129
+ "LEPORE": "releaser",
130
+ "LFI": "releaser",
131
+ "LICDOM": "releaser",
132
+ "LOZIO-MIRCREW": "releaser",
133
+ "LULLOZZO": "releaser",
134
+ "LZ": "releaser",
135
+ "LZ59": "releaser",
136
+ "MADHEX": "releaser",
137
+ "MADSKY": "releaser",
138
+ "MADTIA": "releaser",
139
+ "MAX": "releaser",
140
+ "MAX2014": "releaser",
141
+ "ME7ALH": "releaser",
142
+ "MIK0YAN": "releaser",
143
+ "MIRCREW": "releaser",
144
+ "MISTERNED": "releaser",
145
+ "MORPHEUS": "releaser",
146
+ "MRBLONDE": "releaser",
147
+ "MRROBOT": "releaser",
148
+ "MUETTO": "releaser",
149
+ "MUWATTALI": "releaser",
150
+ "NAHOM": "releaser",
151
+ "NARSETE": "releaser",
152
+ "NEOSTARK": "releaser",
153
+ "NEUROSIS": "releaser",
154
+ "NIMOUEH": "releaser",
155
+ "NOGROUP": "releaser",
156
+ "NOMADS": "releaser",
157
+ "NOVARIP": "releaser",
158
+ "NTB": "releaser",
159
+ "NTROPIC": "releaser",
160
+ "ODS": "releaser",
161
+ "ODINO": "releaser",
162
+ "ONGOIA": "releaser",
163
+ "PASO77": "releaser",
164
+ "PEPPE": "releaser",
165
+ "PENNYWISE": "releaser",
166
+ "PETE321": "releaser",
167
+ "PICOPOCO": "releaser",
168
+ "PING": "releaser",
169
+ "PINKER": "releaser",
170
+ "PIR8": "releaser",
171
+ "PLAYWEB": "releaser",
172
+ "PLUSAM": "releaser",
173
+ "POKE": "releaser",
174
+ "PRIME": "releaser",
175
+ "PROMETHEUS": "releaser",
176
+ "PROSCIUTTO": "releaser",
177
+ "RADESE": "releaser",
178
+ "RAPTA": "releaser",
179
+ "RARBG": "releaser",
180
+ "RAWR": "releaser",
181
+ "REALDMDJ": "releaser",
182
+ "RIDDICKK": "releaser",
183
+ "RMTEAM": "releaser",
184
+ "ROMEO": "releaser",
185
+ "RUNE": "releaser",
186
+ "RYUKXX": "releaser",
187
+ "S-K": "releaser",
188
+ "SAW": "releaser",
189
+ "SANDWORM": "releaser",
190
+ "SBR": "releaser",
191
+ "SEEDBOX": "releaser",
192
+ "SEEDBOX2": "releaser",
193
+ "SERCIUS": "releaser",
194
+ "SID": "releaser",
195
+ "SIMO01": "releaser",
196
+ "SIXTEEN8664": "releaser",
197
+ "SK4TTO": "releaser",
198
+ "SMURF": "releaser",
199
+ "SMURFADMIN": "releaser",
200
+ "SP33DY94-MIRCREW": "releaser",
201
+ "SPWEB": "releaser",
202
+ "SPYRO": "releaser",
203
+ "SPYRO1989": "releaser",
204
+ "STEFRA": "releaser",
205
+ "STEVEJOHNNEE": "releaser",
206
+ "STINGUAJT": "releaser",
207
+ "TAHTAKALECI": "releaser",
208
+ "TASKO": "releaser",
209
+ "TELESTO": "releaser",
210
+ "TEPES": "releaser",
211
+ "TERMINAL": "releaser",
212
+ "THEBLACKKING": "releaser",
213
+ "THEEMOJICREW": "releaser",
214
+ "THUDARA": "releaser",
215
+ "TIGER": "releaser",
216
+ "TIGRE67": "releaser",
217
+ "TBR": "releaser",
218
+ "T4P3": "releaser",
219
+ "TORRENTER10": "releaser",
220
+ "TOTAL_SHARE88": "releaser",
221
+ "TREE7458": "releaser",
222
+ "TRITON": "releaser",
223
+ "TRL": "releaser",
224
+ "UBI": "releaser",
225
+ "UH": "releaser",
226
+ "V3SP4EV3R": "releaser",
227
+ "VARYG": "releaser",
228
+ "VIOLENT96": "releaser",
229
+ "VITELLO": "releaser",
230
+ "VOLVIC": "releaser",
231
+ "WAR": "releaser",
232
+ "WATCHABLE": "releaser",
233
+ "WELP": "releaser",
234
+ "WGZ": "releaser",
235
+ "WHEELIE": "releaser",
236
+ "WHITERHINO": "releaser",
237
+ "WIGGAZ": "releaser",
238
+ "WIZARDS2K": "releaser",
239
+ "WRM": "releaser",
240
+ "WRS": "releaser",
241
+ "XFM": "releaser",
242
+ "XVID": "releaser",
243
+ "YIFY": "releaser",
244
+ "YTS": "releaser",
245
+ "YTS.BZ": "releaser",
246
+ "ZIORIP": "releaser",
247
+ "ZK": "releaser",
248
+ "ZODD": "releaser",
249
+ "ZOOEYDES": "releaser",
250
+ "ZTR": "releaser",
251
+ "£ƐGƐND63": "releaser"
252
+ }
@@ -0,0 +1,106 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ TAGS_LIST = {
4
+ "REMUX": "remux",
5
+ "WEB-DL": "source",
6
+ "WEBDL": "source",
7
+ "WEB-DLRIP": "source",
8
+ "WEBDLRIP": "source",
9
+ "WEB-DLMUX": "source",
10
+ "WEBDLMUX": "source",
11
+ "WEBMUX": "source",
12
+ "WEBRIP": "source",
13
+ "BD-UNTOUCHED": "source",
14
+ "UNTOUCHED": "source",
15
+
16
+ "TS": "source",
17
+ "CAM": "source",
18
+ "HDTS": "source",
19
+ "MD": "source",
20
+ "UHDRIP": "source",
21
+ "BLURAY": "source",
22
+ "BRRIP": "source",
23
+ "BDRIP": "source",
24
+ "FHDRIP": "source",
25
+ "PDTV": "source",
26
+ "SATRIP": "source",
27
+ "DVBRIP": "source",
28
+ "DVB-S": "source",
29
+ "DTTRIP": "source",
30
+ "WP": "source",
31
+ "DVDSCR": "source",
32
+ "TVRIP": "source",
33
+ "VHSRIP": "source",
34
+ "DVDRIP": "source",
35
+ "HDTV": "source",
36
+ "DVD5": "source",
37
+ "DVD9": "source",
38
+ "VU": "source",
39
+
40
+ "ATVP": "platform",
41
+ "AMZN": "platform",
42
+ "AMC": "platform",
43
+ "CN": "platform",
44
+ "CR": "platform",
45
+ "DCU": "platform",
46
+ "DISC": "platform",
47
+ "DSCP": "platform",
48
+ "DSNY": "platform",
49
+ "DSNP": "platform",
50
+ "DPLY": "platform",
51
+ "ESPN": "platform",
52
+ "FOOD": "platform",
53
+ "FOX": "platform",
54
+ "PLAY": "platform",
55
+ "HBO": "platform",
56
+ "HMAX": "platform",
57
+ "HGTV": "platform",
58
+ "HIST": "platform",
59
+ "HULU": "platform",
60
+ "MTOD": "platform",
61
+ "NATG": "platform",
62
+ "NF": "platform",
63
+ "NICK": "platform",
64
+ "NOW": "platform",
65
+ "PMNT": "platform",
66
+ "PMTP": "platform",
67
+ "PCOK": "platform",
68
+ "RKTN": "platform",
69
+ "SHO": "platform",
70
+ "SKST": "platform",
71
+ "STAN": "platform",
72
+ "STRP": "platform",
73
+ "STZ": "platform",
74
+ "TIMV": "platform",
75
+
76
+ "SPECIAL": "version",
77
+ "REPACK": "version",
78
+ "EXTENDED": "version",
79
+ "EDITION": "version",
80
+ "DIRECTOR'S": "version",
81
+ "CUT": "version",
82
+
83
+ "SUBBED": "version",
84
+ "MUX": "version",
85
+ "REMASTERED": "version",
86
+ "READNFO": "version",
87
+ "UNRATED": "version",
88
+ "UNCUT": "version",
89
+ "LIMITED": "version",
90
+ "ANNIVERSARY": "version",
91
+ "4k RESTORATION": "version",
92
+ "IMAX": "version",
93
+ "OPEN MATTE": "version",
94
+ "2IN1": "version",
95
+
96
+ "STV": "version",
97
+ "RECODE": "version",
98
+ "INTERNAL": "version",
99
+ "PROPER": "version",
100
+ "DUAL": "version",
101
+ "COMPLETE": "version",
102
+ "COMPLETA": "version",
103
+
104
+ "X264": "video_encoder",
105
+ "X265": "video_encoder",
106
+ }
@@ -20,43 +20,61 @@ class ManageTitles:
20
20
  "\\", "&", "*", "$", "%", "#", "@", "_", "+", "|"
21
21
  ]
22
22
 
23
- # TAG Audio in title
24
- iso_3166_alpha3 = ["ENG", "USA", "ITA", "DEU", "FRA", "GBR", "ESP", "JPN", "BRA", "RUS", "CHN"]
23
+ iso_3166_alpha3 = [
24
+ "ENG", "USA", "GBR", "ITA", "DEU", "FRA", "ESP",
25
+ "BRA", "JPN", "CHN", "RUS", "PER", "NOR",
26
+ "SWE", "DAN", "POL", "HIN", "TUR", "ARA", "KOR", "VIE", "IND"
27
+ ]
25
28
 
26
- # TAG Audio in title
27
29
  iso_3166_alpha2_to_alpha3 = {
28
- "EN": "ENG", # exception
29
- "US": "USA",
30
+ "EN": "ENG", "US": "USA", "GB": "GBR", "EN-US": "ENG", "EN-GB": "ENG", "EN-AU": "ENG",
30
31
  "IT": "ITA",
31
32
  "DE": "DEU",
32
33
  "FR": "FRA",
33
- "GB": "GBR",
34
- "ES": "ESP",
35
- "JP": "JPN",
34
+ "ES": "ESP", "ES-ES": "ESP", "ES-MX": "ESP",
36
35
  "BR": "BRA",
37
- "RU": "RUS",
36
+ "JP": "JPN",
38
37
  "CN": "CHN",
39
- "EN-US": "ENG",
40
- "EN-GB": "ENG",
41
- "EN-AU": "ENG",
42
- "ES-ES": "ESP",
43
- "ES-MX": "ESP"
38
+ "RU": "RUS",
39
+ "FA": "PER", "IR": "PER",
40
+ "NO": "NOR",
41
+ "SE": "SWE",
42
+ "DK": "DAN",
43
+ "PL": "POL",
44
+ "HI": "HIN",
45
+ "TR": "TUR",
46
+ "AR": "ARA",
47
+ "KO": "KOR",
48
+ "VI": "VIE",
49
+ "ID": "IND"
44
50
  }
45
51
 
46
- # From mediainfo
47
52
  long_name = {
48
53
  "ENGLISH": "ENG",
54
+ "AMERICAN": "USA",
55
+ "BRITISH": "GBR",
49
56
  "ITALIAN": "ITA",
50
57
  "GERMAN": "DEU",
51
58
  "FRENCH": "FRA",
52
59
  "SPANISH": "ESP",
53
- "JAPANESE": "JPN",
54
60
  "BRAZILIAN": "BRA",
55
- "RUSSIAN": "RUS",
61
+ "JAPANESE": "JPN",
56
62
  "CHINESE": "CHN",
57
- "AMERICAN": "USA",
58
- "BRITISH": "GBR"
63
+ "RUSSIAN": "RUS",
64
+ "PERSIAN": "PER",
65
+ "FARSI": "PER",
66
+ "NORWEGIAN": "NOR",
67
+ "SWEDISH": "SWE",
68
+ "DANISH": "DAN",
69
+ "POLISH": "POL",
70
+ "HINDI": "HIN",
71
+ "TURKISH": "TUR",
72
+ "ARABIC": "ARA",
73
+ "KOREAN": "KOR",
74
+ "VIETNAMESE": "VIE",
75
+ "INDONESIAN": "IND"
59
76
  }
77
+
60
78
  @staticmethod
61
79
  def convert_iso(code) -> list | str | None:
62
80
  """ Convert iso 2 to 3 """
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  dynamic = ["dependencies"]
7
7
  name = "Unit3Dup"
8
- version = "0.9.17"
8
+ version = "0.9.18"
9
9
  description = "An uploader for the Unit3D torrent tracker"
10
10
  readme = "README.rst"
11
11
  requires-python = ">=3.10"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes