summaryrefslogtreecommitdiff
path: root/global/.local/share/qutebrowser/userscripts/translate
diff options
context:
space:
mode:
Diffstat (limited to 'global/.local/share/qutebrowser/userscripts/translate')
-rwxr-xr-xglobal/.local/share/qutebrowser/userscripts/translate116
1 files changed, 0 insertions, 116 deletions
diff --git a/global/.local/share/qutebrowser/userscripts/translate b/global/.local/share/qutebrowser/userscripts/translate
deleted file mode 100755
index 25c66dd..0000000
--- a/global/.local/share/qutebrowser/userscripts/translate
+++ /dev/null
@@ -1,116 +0,0 @@
-#! /usr/bin/env python3
-
-import argparse
-import json
-import os
-import sys
-import urllib.parse
-
-import requests
-
-
-def js(message):
- return f"""
- (function() {{
- var box = document.createElement('div');
- box.style.position = 'fixed';
- box.style.bottom = '10px';
- box.style.right = '10px';
- box.style.backgroundColor = 'white';
- box.style.color = 'black';
- box.style.borderRadius = '8px';
- box.style.padding = '10px';
- box.style.boxShadow = '0 2px 10px rgba(0,0,0,0.2)';
- box.style.zIndex = '10000';
- box.innerText = decodeURIComponent("{message}");
- document.body.appendChild(box);
-
- function removeBox(event) {{
- if (!box.contains(event.target)) {{
- box.remove();
- document.removeEventListener('click', removeBox);
- }}
- }}
- document.addEventListener('click', removeBox);
- }})();
- """
-
-
-def translate_google(text, target_lang):
- encoded_text = urllib.parse.quote(text)
- response = requests.get(
- f"https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl={target_lang}&dt=t&q={encoded_text}"
- )
- response_json = json.loads(response.text)
- translated_text = ""
- for i in response_json[0]:
- translated_text += i[0]
- return translated_text
-
-
-def translate_libretranslate(text, url, key, target_lang):
- response = requests.post(
- f"{url}/translate",
- data={"q": text, "source": "auto", "target": target_lang, "api_key": key},
- )
- return response.json()["translatedText"]
-
-
-def main():
- parser = argparse.ArgumentParser(
- description="Translate text using different providers."
- )
- parser.add_argument(
- "--provider",
- choices=["google", "libretranslate"],
- required=False,
- default="google",
- help="Translation provider to use",
- )
- parser.add_argument(
- "--libretranslate_url",
- required=False,
- default="https://libretranslate.com",
- help="URL for LibreTranslate API",
- )
- parser.add_argument(
- "--libretranslate_key",
- required=False,
- default="",
- help="API key for LibreTranslate",
- )
- parser.add_argument(
- "--target_lang",
- required=False,
- default="en",
- help="Target language for translation",
- )
- args = parser.parse_args()
-
- qute_fifo = os.getenv("QUTE_FIFO")
- if not qute_fifo:
- sys.stderr.write(
- f"Error: {sys.argv[0]} can not be run as a standalone script.\n"
- )
- sys.stderr.write(
- "It is a qutebrowser userscript. In order to use it, call it using 'spawn --userscript' as described in qute://help/userscripts.html\n"
- )
- sys.exit(1)
-
- text = os.getenv("QUTE_SELECTED_TEXT", "")
-
- if args.provider == "google":
- translated_text = translate_google(text, args.target_lang)
- elif args.provider == "libretranslate":
- translated_text = translate_libretranslate(
- text, args.libretranslate_url, args.libretranslate_key, args.target_lang
- )
-
- js_code = js(urllib.parse.quote(translated_text)).replace("\n", " ")
-
- with open(qute_fifo, "a") as fifo:
- fifo.write(f"jseval -q {js_code}\n")
-
-
-if __name__ == "__main__":
- main()