def handle(self, *args, **options): if not settings.CENTRAL_SERVER: raise CommandError("This must only be run on the central server.") # None represents all lang_codes = [lcode_to_ietf(options["lang_code"])] if options["lang_code"] else None del options["lang_code"] if len(args) > 1: raise CommandError("Max 1 arg") elif len(args) == 1: if args[0] == "clear": logging.info("Clearing subtitles...") clear_subtitles_cache(lang_codes) else: raise CommandError("Unknown argument: %s" % args[0]) else: validate_language_map(lang_codes) logging.info("Downloading...") download_srt_from_3rd_party(lang_codes=lang_codes, **options) validate_language_map(lang_codes) # again at the end, so output is visible # for compatibility with KA Lite versions less than 0.10.3 for lang in (lang_codes or get_langs_with_subtitles()): generate_srt_availability_file(lang) logging.info("Process complete.")
def clear_subtitles_cache(lang_codes=None, locale_root=LOCALE_ROOT): """ Language codes will be converted to django format (e.g. en_US) """ lang_codes = lang_codes or get_langs_with_subtitles() for lang_code in lang_codes: lang_code = lcode_to_ietf(lang_code) # Clear the status file lm_file = get_lang_map_filepath(lang_code) download_status = softload_json(lm_file, raises=True) for key in download_status: download_status[key] = {u'downloaded': False, u'last_success': u'', u'last_attempt': u'', u'api_response': u''} with open(lm_file, "w") as fp: json.dump(download_status, fp) # Delete all srt files srt_path = get_srt_path(lang_code) if os.path.exists(srt_path): shutil.rmtree(srt_path)