Professor Chimp
Professor Chimp

Reputation: 13

Libre Translator HTTPError 403 : Forbidden

I am trying to run LibreTranslate on my workstation , however while running the main.py file , It gives me HTTPError 403: Forbidden showing problem in language_translate_fallback function and create_app in main function . I suppose there is problem in API fetch , however I haven't made any changes in any of the API calls .

Updating language models
Found 92 models
Downloading Albanian → English (1.9) ...
(<HTTPError 403: 'Forbidden'>,)
(<HTTPError 403: 'Forbidden'>,)
(<HTTPError 403: 'Forbidden'>,)
(<HTTPError 403: 'Forbidden'>,)
Cannot update models (normal if you're offline): Download failed for Albanian → English
Traceback (most recent call last):
  File "/home/LibreTranslatorFolder/Libreenv/LibreTranslate/libretranslate/main.py", line 253, in <module>
    main()
  File "/home/LibreTranslatorFolder/Libreenv/LibreTranslate/libretranslate/main.py", line 226, in main
    app = create_app(args)
  File "/home/.local/lib/python3.10/site-packages/libretranslate/app.py", line 191, in create_app
    language_target_fallback = languages[1] if len(languages) >= 2 else languages[0]
IndexError: list index out of range
#create_app from app.py , libretranslate github 
def create_app(args):
    from libretranslate.init import boot

    boot(args.load_only, args.update_models, args.force_update_models)

    from libretranslate.language import load_languages

    swagger_url = args.url_prefix + "/docs"  # Swagger UI (w/o trailing '/')
    api_url = args.url_prefix + "/spec"

    bp = Blueprint('Main app', __name__)

    storage.setup(args.shared_storage)

    if not args.disable_files_translation:
        remove_translated_files.setup(get_upload_dir())
    languages = load_languages()
    language_pairs = {}
    for lang in languages:
        language_pairs[lang.code] = sorted([l.to_lang.code for l in lang.translations_from])

    # Map userdefined frontend languages to argos language object.
    if args.frontend_language_source == "auto":
        frontend_argos_language_source = type(
            "obj", (object,), {"code": "auto", "name": _("Auto Detect")}
        )
    else:
        frontend_argos_language_source = next(
            iter([l for l in languages if l.code == args.frontend_language_source]),
            None,
        )
    if frontend_argos_language_source is None:
        frontend_argos_language_source = languages[0]


    language_target_fallback = languages[1] if len(languages) >= 2 else languages[0]

    if args.frontend_language_target == "locale":
      def resolve_language_locale():
          loc = get_locale()
          language_target = next(
              iter([l for l in languages if l.code == loc]), None
          )
          if language_target is None:
            language_target = language_target_fallback
          return language_target
        frontend_argos_language_target = resolve_language_locale
    else:
      language_target = next(
          iter([l for l in languages if l.code == args.frontend_language_target]), None
      )
      if language_target is None:
        language_target = language_target_fallback
      frontend_argos_language_target = lambda: language_target

Main.py , LibreTranslate at github

def main():
    args = get_args()
    app = create_app(args)

    if '--wsgi' in sys.argv:
        return app
    else:
        if args.debug and args.host == "*":
            # '::' will listen on both ipv6 and ipv4
            args.host = "::"

        if args.debug:
            app.run(host=args.host, port=args.port)
        else:
            from waitress import serve

            url_scheme = "https" if args.ssl else "http"
            print(f"Running on {url_scheme}://{args.host}:{args.port}{args.url_prefix}")

            serve(
                app,
                host=args.host,
                port=args.port,
                url_scheme=url_scheme,
                threads=args.threads
            )


if __name__ == "__main__":
    main()

Any possible solutions to this problem ? I have tried manually putting args.port and args.host , however I didn't work.

Upvotes: 1

Views: 51

Answers (0)

Related Questions