def add(self, args): _fields = {} if 'link' in args: try: args['title'] = self.TITLE_LINK_REGEX.search( args['link']).group(1) except AttributeError: raise TVShowsTrackerError(( f"Couldn't find {self.TITLE_LINK_REGEX} pattern " f"in {args['link']} string")) for field_name in ['topic URL', 'title', 'air', 'link']: if field_name == 'air': _candidates = ['daily', 'weekly'] ucli.header('Air:') ucli.print_candidates(_candidates) _fields['air'] = ucli.parse_selection(_candidates) continue _field = ucli.get_field( field_name, prefill=args[field_name] if field_name in args else False, necessary=True) if field_name == 'topic URL': _fields['tracker'], _fields['id'] = self.URL_REGEX.search( _field).groups() continue if field_name == 'link': _fields['link'] = manager.get_path(_field) continue _fields[field_name] = _field topic = self.db.topics.insert(**_fields) return self.db.topics[topic]
def list(args, db): db.check_sort_field(args['--sortby']) topics = db.get_list_topics(args['--sortby']) from locale import setlocale, LC_TIME setlocale(LC_TIME, 'en_US.UTF-8') ucli.header(db.format_list_header()) for topic in topics: print(db.format_list_item(topic))
def create_link(self, path_to_file, linkname): ucli.header('Linkname:', linkname) ucli.print_options('[RETURN] to confirm or [e]dit the linkname') linkname = ucli.parse_selection( [linkname], { 'e': (ucli.inline_prompt, 'New Linkname: ', linkname)}) self.linkpath = os.path.join(self.LINKS_DIR, linkname) try: os.symlink(path_to_file, self.linkpath) ucli.header('Symlink:', self.linkpath) ucli.header(' ->', path_to_file) return True except FileExistsError: return ucli.info('File already exists. Skipping')
def get_metadata(self, filename): ucli.header(f'Processing:', filename, with_newline=True) if not filename.endswith(self.VIDEO_EXTENTIONS): return ucli.info('File hasn\'t recognised as a video file') return self.search(**dict(guessit(filename)))