Skip to content

Commit f2ce6f2

Browse files
committed
autogenerate category map
1 parent 0e4bab4 commit f2ce6f2

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

pythonbits/__main__.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from . import __version__ as version
66
from . import bb
77
from . import logging
8-
from .submission import SubmissionAttributeError
8+
from .submission import SubmissionAttributeError, cat_map
99

1010

1111
def parse_args():
@@ -22,9 +22,6 @@ def parse_args():
2222
"(e.g. \"Lawrence of Arabia\" or \"The Walking "
2323
"Dead S01\") (optional)"))
2424

25-
cat_map = {'movie': bb.MovieSubmission,
26-
'tv': bb.TvSubmission,
27-
'music': bb.MusicSubmission}
2825
parser.add_argument("-c", "--category", choices=list(cat_map.keys()))
2926
parser.add_argument("-u", "--set-field", nargs=2, action='append',
3027
metavar=('FIELD', 'VALUE'), default=[],

pythonbits/bb.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
from . import imagehosting
2727
from .ffmpeg import FFMpeg
2828
from . import templating as bb
29-
from .submission import (Submission, form_field, finalize,
29+
from .submission import (Submission, form_field, finalize, cat_map,
3030
SubmissionAttributeError, rlinput)
3131
from .tracker import Tracker
3232
from .scene import is_scene_crc, query_scene_fname
@@ -81,9 +81,15 @@ def subcategory(self):
8181
elif mime_guess[0] == 'audio':
8282
return AudioSubmission
8383

84-
raise Exception("Unable to guess category using known mimetypes. "
85-
"Consider explicitly specifying the submission "
86-
"category.")
84+
log.info("Unable to guess submission category using known mimetypes")
85+
while True:
86+
cat = input("Please manually specify category. "
87+
"\nOptions: {}\nCategory: ".format(
88+
", ".join(cat_map.keys())))
89+
try:
90+
return cat_map[cat]
91+
except KeyError:
92+
print('Invalid category.')
8793

8894
def subcategorise(self):
8995
log.debug('Attempting to narrow category')
@@ -571,6 +577,7 @@ def _finalize_cover(self):
571577

572578
class TvSubmission(VideoSubmission):
573579
default_fields = VideoSubmission.default_fields + ('form_description',)
580+
_cat_id = 'tv'
574581
_form_type = 'TV'
575582
__form_fields__ = {
576583
'form_title': ('title', 'text'),
@@ -781,6 +788,7 @@ def episode_fmt(e):
781788
class MovieSubmission(VideoSubmission):
782789
default_fields = (VideoSubmission.default_fields +
783790
("description", "mediainfo", "screenshots"))
791+
_cat_id = 'movie'
784792
_form_type = 'Movies'
785793
__form_fields__ = {
786794
# field -> form field, type
@@ -1173,6 +1181,7 @@ def _get_tags(self, required_tags):
11731181

11741182

11751183
class AudiobookSubmission(AudioSubmission):
1184+
_cat_id = 'audiobook'
11761185
_form_type = 'Audiobooks'
11771186

11781187
@form_field('tags')
@@ -1189,6 +1198,7 @@ def _render_title(self):
11891198
class MusicSubmission(AudioSubmission):
11901199
default_fields = (AudioSubmission.default_fields + (
11911200
'artist', 'remaster', 'remaster_year', 'remaster_title', 'media',))
1201+
_cat_id = 'music'
11921202
_form_type = 'Music'
11931203

11941204
@form_field('remaster_true', 'checkbox')

pythonbits/submission.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,17 @@ class SubmissionAttributeError(Exception):
2525

2626

2727
re_frender = re.compile("^_render_(?=[a-z_]*$)")
28+
cat_map = {}
2829

2930

3031
class RegisteringType(type):
3132
def __init__(cls, name, bases, attrs):
3233
cls.registry = copy.deepcopy(getattr(cls, 'registry',
3334
{'mappers': {}, 'types': {}}))
3435

36+
if hasattr(cls, '_cat_id'):
37+
cat_map[cls._cat_id] = cls
38+
3539
def add_mapper(f, ff, fft):
3640
log.debug("{} adding mapper {} for {} ({})",
3741
cls.__name__, f, ff, fft)

0 commit comments

Comments
 (0)