diff options
Diffstat (limited to 'global/.local/share/qutebrowser/userscripts/translate')
| -rwxr-xr-x | global/.local/share/qutebrowser/userscripts/translate | 116 |
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() |
