Unit3Dup 0.9.16__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.16 → unit3dup-0.9.18}/PKG-INFO +1 -1
  2. {unit3dup-0.9.16 → unit3dup-0.9.18}/Unit3Dup.egg-info/PKG-INFO +1 -1
  3. {unit3dup-0.9.16 → unit3dup-0.9.18}/Unit3Dup.egg-info/SOURCES.txt +2 -0
  4. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/settings.py +8 -255
  5. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/tags.py +37 -23
  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.16 → unit3dup-0.9.18}/common/utility.py +37 -19
  9. {unit3dup-0.9.16 → unit3dup-0.9.18}/pyproject.toml +1 -1
  10. {unit3dup-0.9.16 → unit3dup-0.9.18}/LICENSE +0 -0
  11. {unit3dup-0.9.16 → unit3dup-0.9.18}/README.rst +0 -0
  12. {unit3dup-0.9.16 → unit3dup-0.9.18}/Unit3Dup.egg-info/dependency_links.txt +0 -0
  13. {unit3dup-0.9.16 → unit3dup-0.9.18}/Unit3Dup.egg-info/entry_points.txt +0 -0
  14. {unit3dup-0.9.16 → unit3dup-0.9.18}/Unit3Dup.egg-info/requires.txt +0 -0
  15. {unit3dup-0.9.16 → unit3dup-0.9.18}/Unit3Dup.egg-info/top_level.txt +0 -0
  16. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/__init__.py +0 -0
  17. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/bdinfo_string.py +0 -0
  18. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/bittorrent.py +0 -0
  19. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/command.py +0 -0
  20. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/constants.py +0 -0
  21. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/database.py +0 -0
  22. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/__init__.py +0 -0
  23. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/ftpx/__init__.py +0 -0
  24. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/ftpx/client.py +0 -0
  25. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/ftpx/core/__init__.py +0 -0
  26. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/ftpx/core/ftpx_service.py +0 -0
  27. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/ftpx/core/ftpx_session.py +0 -0
  28. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/ftpx/core/menu.py +0 -0
  29. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/ftpx/core/models/__init__.py +0 -0
  30. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/ftpx/core/models/list.py +0 -0
  31. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/igdb/__init__.py +0 -0
  32. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/igdb/client.py +0 -0
  33. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/igdb/core/__init__.py +0 -0
  34. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/igdb/core/api.py +0 -0
  35. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/igdb/core/models/__init__.py +0 -0
  36. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/igdb/core/models/search.py +0 -0
  37. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/igdb/core/platformid.py +0 -0
  38. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/igdb/core/tags.py +0 -0
  39. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/imageHost.py +0 -0
  40. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/mediaresult.py +0 -0
  41. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/sessions/__init__.py +0 -0
  42. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/sessions/agents.py +0 -0
  43. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/sessions/exceptions.py +0 -0
  44. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/sessions/session.py +0 -0
  45. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/__init__.py +0 -0
  46. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/__init__.py +0 -0
  47. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/api.py +0 -0
  48. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/keywords.py +0 -0
  49. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/__init__.py +0 -0
  50. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/movie/__init__.py +0 -0
  51. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/movie/alternative_titles.py +0 -0
  52. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/movie/details.py +0 -0
  53. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/movie/movie.py +0 -0
  54. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/movie/nowplaying.py +0 -0
  55. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/movie/release_info.py +0 -0
  56. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/tvshow/__init__.py +0 -0
  57. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/tvshow/alternative.py +0 -0
  58. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/tvshow/details.py +0 -0
  59. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/tvshow/on_the_air.py +0 -0
  60. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/tvshow/translations.py +0 -0
  61. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/models/tvshow/tvshow.py +0 -0
  62. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/theMovieDB/core/videos.py +0 -0
  63. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/trailers/__init__.py +0 -0
  64. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/trailers/api.py +0 -0
  65. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/trailers/response.py +0 -0
  66. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/external_services/tvdb.py +0 -0
  67. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/extractor.py +0 -0
  68. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/frames.py +0 -0
  69. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/mediainfo.py +0 -0
  70. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/mediainfo_string.py +0 -0
  71. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/title.py +0 -0
  72. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/torrent_clients.py +0 -0
  73. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/trackers/__init__.py +0 -0
  74. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/trackers/data.py +0 -0
  75. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/trackers/itt.py +0 -0
  76. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/trackers/sis.py +0 -0
  77. {unit3dup-0.9.16 → unit3dup-0.9.18}/common/trackers/trackers.py +0 -0
  78. {unit3dup-0.9.16 → unit3dup-0.9.18}/requirements.txt +0 -0
  79. {unit3dup-0.9.16 → unit3dup-0.9.18}/setup.cfg +0 -0
  80. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/__init__.py +0 -0
  81. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/__main__.py +0 -0
  82. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/automode.py +0 -0
  83. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/bot.py +0 -0
  84. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/duplicate.py +0 -0
  85. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/exceptions.py +0 -0
  86. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/media.py +0 -0
  87. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/media_manager/ContentManager.py +0 -0
  88. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/media_manager/DocuManager.py +0 -0
  89. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/media_manager/GameManager.py +0 -0
  90. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/media_manager/MediaInfoManager.py +0 -0
  91. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/media_manager/SeedManager.py +0 -0
  92. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/media_manager/TorrentManager.py +0 -0
  93. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/media_manager/VideoManager.py +0 -0
  94. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/media_manager/__init__.py +0 -0
  95. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/media_manager/common.py +0 -0
  96. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/pvtDocu.py +0 -0
  97. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/pvtTorrent.py +0 -0
  98. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/pvtTracker.py +0 -0
  99. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/pvtVideo.py +0 -0
  100. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/torrent.py +0 -0
  101. {unit3dup-0.9.16 → unit3dup-0.9.18}/unit3dup/upload.py +0 -0
  102. {unit3dup-0.9.16 → unit3dup-0.9.18}/view/__init__.py +0 -0
  103. {unit3dup-0.9.16 → 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.16
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.16
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.16"
24
+ version = "0.9.18"
22
25
 
23
26
  if os.name == "nt":
24
27
  WATCHER_DESTINATION_PATH: Path = Path(
@@ -526,268 +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
- "WEB-DLMUX": "source",
533
- "WEBMUX": "source",
534
- "WEBRIP": "source",
535
- "BD-UNTOUCHED": "source",
536
- "TS": "source",
537
- "CAM": "source",
538
- "HDTS": "source",
539
- "MD": "source",
540
- "UHDRIP": "source",
541
- "BLURAY": "source",
542
- "BRRIP": "source",
543
- "BDRIP": "source",
544
- "FHDRIP": "source",
545
- "PDTV": "source",
546
- "SATRIP": "source",
547
- "DVBRIP": "source",
548
- "DVB-S": "source",
549
- "DTTRIP": "source",
550
- "WP": "source",
551
- "DVDSCR": "source",
552
- "TVRIP": "source",
553
- "VHSRIP": "source",
554
- "DVDRIP": "source",
555
- "HDTV": "source",
556
- "DVD5": "source",
557
- "DVD9": "source",
558
- "VU": "source",
559
-
560
- "ATVP": "platform",
561
- "AMZN": "platform",
562
- "AMC": "platform",
563
- "CN": "platform",
564
- "CR": "platform",
565
- "DCU": "platform",
566
- "DISC": "platform",
567
- "DSCP": "platform",
568
- "DSNY": "platform",
569
- "DSNP": "platform",
570
- "DPLY": "platform",
571
- "ESPN": "platform",
572
- "FOOD": "platform",
573
- "FOX": "platform",
574
- "PLAY": "platform",
575
- "HBO": "platform",
576
- "HMAX": "platform",
577
- "HGTV": "platform",
578
- "HIST": "platform",
579
- "HULU": "platform",
580
- "MTOD": "platform",
581
- "NATG": "platform",
582
- "NF": "platform",
583
- "NICK": "platform",
584
- "NOW": "platform",
585
- "PMNT": "platform",
586
- "PMTP": "platform",
587
- "PCOK": "platform",
588
- "RKTN": "platform",
589
- "SHO": "platform",
590
- "SKST": "platform",
591
- "STAN": "platform",
592
- "STRP": "platform",
593
- "STZ": "platform",
594
- "TIMV": "platform",
595
-
596
- "REPACK": "version",
597
- "EXTENDED": "version",
598
- "EXTENDED EDITION": "version",
599
- "EXTENDED CUT": "version",
600
- "DIRECTOR'S CUT": "version",
601
- "SUBBED": "version",
602
- "MUX": "version",
603
- "REMASTERED": "version",
604
- "READNFO": "version",
605
- "UNRATED": "version",
606
- "UNCUT": "version",
607
- "LIMITED": "version",
608
- "ANNIVERSARY": "version",
609
- "SPECIAL EDITION": "version",
610
- "4k RESTORATION": "version",
611
- "IMAX": "version",
612
- "OPEN MATTE": "version",
613
- "2IN1": "version",
614
-
615
- "STV": "version",
616
- "RECODE": "version",
617
- "INTERNAL": "version",
618
- "PROPER": "version",
619
- "DUAL": "version",
620
- "UNTOUCHED": "version",
621
- "COMPLETE": "version",
622
- "COMPLETA": "version",
623
-
624
- "X264": "video_encoder",
625
- "X265": "video_encoder",
626
- }
627
-
628
532
  path.parent.mkdir(parents=True, exist_ok=True)
629
533
  with open(path, "w", encoding="utf-8") as tags_list_file:
630
- 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)
631
535
 
632
536
  @staticmethod
633
537
  def create_sign_list_file(path: Path):
634
538
  """
635
539
  Creates a tags list file
636
540
  """
637
- TAG_TYPES = {
638
- "21APRILE": "releaser",
639
- "ALE88SERMETE": "releaser",
640
- "ARRANCAR": "releaser",
641
- "ASTOR": "releaser",
642
- "AV1MERR": "releaser",
643
- "BADGUY": "releaser",
644
- "BITSHIFT": "releaser",
645
- "BLACKBIT": "releaser",
646
- "BUMBLEBEE1982": "releaser",
647
- "CAPPYO": "releaser",
648
- "CAVALLONZI": "releaser",
649
- "CB01HD": "releaser",
650
- "CHD": "releaser",
651
- "CHDWEB": "releaser",
652
- "CIAME": "releaser",
653
- "CLOCLONE": "releaser",
654
- "COMIX21": "releaser",
655
- "CREW": "releaser",
656
- "CSS": "releaser",
657
- "CSS2": "releaser",
658
- "CSS7896": "releaser",
659
- "CYBER": "releaser",
660
- "D3VELOPER": "releaser",
661
- "DAICHISO": "releaser",
662
- "DANGUARD": "releaser",
663
- "DARKCOMPANY": "releaser",
664
- "DARKPARANOR": "releaser",
665
- "DAYMON64": "releaser",
666
- "DDN": "releaser",
667
- "DEDO1911": "releaser",
668
- "DEMN": "releaser",
669
- "DMAN": "releaser",
670
- "DOCH74": "releaser",
671
- "DRIIP": "releaser",
672
- "DYNUX": "releaser",
673
- "ELGHOTO": "releaser",
674
- "ENCRYPTED": "releaser",
675
- "EVN": "releaser",
676
- "EZTV": "releaser",
677
- "FAINO1310": "releaser",
678
- "FEDECAS89": "releaser",
679
- "FGT": "releaser",
680
- "FHC": "releaser",
681
- "FLORIN993": "releaser",
682
- "FLUX": "releaser",
683
- "FREZEEN": "releaser",
684
- "FUSION": "releaser",
685
- "G66": "releaser",
686
- "GABIACAS": "releaser",
687
- "GIUSEPPETNT": "releaser",
688
- "GOLDENTORRENT": "releaser",
689
- "GRYM": "releaser",
690
- "HAPPITEAM-YNK": "releaser",
691
- "HASHDEV": "releaser",
692
- "HDCHINA": "releaser",
693
- "HENRYDIRTY": "releaser",
694
- "HONE": "releaser",
695
- "HHNN": "releaser",
696
- "HYRULE": "releaser",
697
- "I3AM": "releaser",
698
- "IBANEZ89": "releaser",
699
- "IDIB": "releaser",
700
- "IDN": "releaser",
701
- "ILGANZO": "releaser",
702
- "ILPADRINO": "releaser",
703
- "ILSAGGIO": "releaser",
704
- "ILSOMMO": "releaser",
705
- "IPDR01": "releaser",
706
- "ITT": "releaser",
707
- "JOHNSEED": "releaser",
708
- "KINGOFROME": "releaser",
709
- "KRIKK": "releaser",
710
- "LAZY-SUBS": "releaser",
711
- "LEPORE": "releaser",
712
- "LFI": "releaser",
713
- "LULLOZZO": "releaser",
714
- "MATT3O": "releaser",
715
- "MATT_BROWN4": "releaser",
716
- "MAX2014": "releaser",
717
- "MIRCREW": "releaser",
718
- "MISTERNED": "releaser",
719
- "MRBLONDE": "releaser",
720
- "MRROBOT": "releaser",
721
- "MUETTO": "releaser",
722
- "MUWATTALI": "releaser",
723
- "NAHOM": "releaser",
724
- "NARSETE": "releaser",
725
- "NEOSTARK": "releaser",
726
- "NEUROSIS": "releaser",
727
- "NIMOUEH": "releaser",
728
- "NOGROUP": "releaser",
729
- "NOVARIP": "releaser",
730
- "NTROPIC": "releaser",
731
- "ODS": "releaser",
732
- "ONGOIA": "releaser",
733
- "PEPPE": "releaser",
734
- "PENNYWISE": "releaser",
735
- "PETE321": "releaser",
736
- "PICOPOCO": "releaser",
737
- "PING": "releaser",
738
- "PINKER": "releaser",
739
- "PIR8": "releaser",
740
- "PLAYWEB": "releaser",
741
- "PRIME": "releaser",
742
- "PROMETHEUS": "releaser",
743
- "PROSCIUTTO": "releaser",
744
- "RADESE": "releaser",
745
- "RAWR": "releaser",
746
- "RARBG": "releaser",
747
- "RIDDICKK": "releaser",
748
- "ROGELIOBYNIGHT": "releaser",
749
- "ROMEO": "releaser",
750
- "RYUKXX": "releaser",
751
- "S-K": "releaser",
752
- "SANDWORM": "releaser",
753
- "SEEDBOX": "releaser",
754
- "SEEDBOX2": "releaser",
755
- "SERCIUS": "releaser",
756
- "SIMO01": "releaser",
757
- "SIXTEEN8664": "releaser",
758
- "SK4TTO": "releaser",
759
- "SMURFADMIN": "releaser",
760
- "SPYRO1989": "releaser",
761
- "STEVEJOHNNEE": "releaser",
762
- "STINGUAJT": "releaser",
763
- "TAHTAKALECI": "releaser",
764
- "TELESTO": "releaser",
765
- "TERMINAL": "releaser",
766
- "THEBLACKKING": "releaser",
767
- "THEEMOJICREW": "releaser",
768
- "THUDARA": "releaser",
769
- "TIGRE67": "releaser",
770
- "TORRENT10": "releaser",
771
- "TOTAL_SHARE88": "releaser",
772
- "TREE7458": "releaser",
773
- "TRIVIAL99": "releaser",
774
- "UBI": "releaser",
775
- "V3SP4EV3R": "releaser",
776
- "VIOLENT96": "releaser",
777
- "VOLVIC": "releaser",
778
- "WHEELIE": "releaser",
779
- "WHITERHINO": "releaser",
780
- "WIZARDS2K": "releaser",
781
- "WRS": "releaser",
782
- "XVID": "releaser",
783
- "YIFY": "releaser",
784
- "YTS": "releaser",
785
- "ZIORIP": "releaser"
786
- }
787
-
788
541
  path.parent.mkdir(parents=True, exist_ok=True)
789
542
  with open(path, "w", encoding="utf-8") as tags_sign_file:
790
- 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)
791
544
 
792
545
  @staticmethod
793
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,13 +9,16 @@ 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
+ "SMPTE ST 2086": "HDR10",
21
+ "SMPTE ST 2094": "HDR10+",
20
22
 
21
23
  "DOVI": "DV",
22
24
  "HDR": "HDR",
@@ -72,21 +74,16 @@ class SearchTags(object):
72
74
  @staticmethod
73
75
  def normalize_version_tag(tag: str) -> str:
74
76
  tag_esc = re.escape(tag)
75
- # Filter hyphenated,space compounds
76
- tag_esc = tag_esc.replace(r'\ ', r'[.\s_-]*')
77
77
  return tag_esc
78
78
 
79
79
  @staticmethod
80
80
  def normalize_platform_tag(tag: str) -> str:
81
- # escape
82
81
  tag_esc = re.escape(tag)
83
82
  return tag_esc
84
83
 
85
84
  @staticmethod
86
85
  def normalize_sources(tag: str) -> str:
87
86
  tag_esc = re.escape(tag)
88
- # Filter hyphenated,space compounds
89
- tag_esc = tag_esc.replace(r'\ ', r'[.\s_-]*')
90
87
  return tag_esc
91
88
 
92
89
  @staticmethod
@@ -103,6 +100,7 @@ class SearchTags(object):
103
100
  build.append(' '.join(v))
104
101
  else:
105
102
  build.append(str(v))
103
+
106
104
  refactored = ' '.join(build) + self.releaser_sign
107
105
  return refactored
108
106
 
@@ -177,22 +175,7 @@ class SearchTags(object):
177
175
  if not self.releaser_sign:
178
176
  # If releaser_sign is not defined in the configuration file,
179
177
  # try to detect a known sign from SIGN_LIST
180
- pattern = "|".join(
181
- sorted((re.escape(k) for k in self.SIGNS_LIST.keys()), key=len, reverse=True)
182
- )
183
- self.filename = os.path.splitext(self.filename)[0]
184
- regex = re.compile(
185
- r'(?:^|[\s._-])(' + pattern + r')(?=$|[\s._-]*$)',
186
- re.IGNORECASE
187
- )
188
- matches = regex.findall(self.filename)
189
- if matches:
190
- self.releaser_sign = f"-{matches[0]}" if matches[0].upper() in self.SIGNS_LIST else ""
191
- else:
192
- self.releaser_sign = ""
193
- else:
194
- # Add releaser_sign from the configuration file
195
- self.releaser_sign = f"-{self.releaser_sign}"
178
+ self.releaser_sign = self.detect_releaser(self.filename, self.SIGNS_LIST)
196
179
 
197
180
  # /// Order according to tag position
198
181
  tags_dict = {
@@ -316,3 +299,34 @@ class SearchTags(object):
316
299
  result['resolution'] = f'{video_width}x{video_height}'
317
300
 
318
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.16"
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