LibreOffice plugin to pipe whole Writer documents through Google Translate, that ought to keep most of the page formatting.

⌈⌋ ⎇ branch:  PageTranslate


Artifact [1ccd60bb43]

Artifact 1ccd60bb431f4561795e6e77dd1879fc7e13f28e:

  • File pythonpath/httprequests.py — part of check-in [01879969de] at 2021-01-30 12:02:19 on branch trunk — Check for existence of create_default_context (user: mario size: 1855)

# encoding: utf-8
# api: python
# type: classes
# category: http
# title: request/fallback
# description: loads requests, or similuates API via urllib
# version: 0.5
# state: beta
# depends: python:requests (>= 2.5)
# config: -
#
# Wraps requests or fakes a http.get() implementation.
#


__all__ = ["http", "urllib", "urlencode", "quote", "quote_plus"]

# http preparations
import logging as log
import sys
import urllib
try:
    from urllib.parse import urlencode, quote, quote_plus
    from urllib.request import urlopen, Request
except:
    from urllib import urlencode, quote, quote_plus
    from urllib2 import urlopen, Request
#else:
#    from six.moves.urllib import urlencode, quote, quote_plus
#    from six.moves.urllib.request import urlopen, Request

try:
    import requests
    http = requests.Session()
    
except Exception as e:

    log.error("Missing library: `pip install requests` (either system-wide, or in your libreoffice program/ folder)")

    class fake_requests:
        content = ""
        ssl_args = {}
        headers = {}

        def __init__(self):
            import ssl
            if not hasattr(ssl, "create_default_context"):
                return
            context = ssl.create_default_context();
            context.check_hostname = False
            context.verify_mode = ssl.CERT_NONE
            self.ssl_args["context"] = context
            
        def get(self, url):
            self.content = urlopen(
                Request(url, headers=self.headers), **self.ssl_args
            ).read()
            return self
    
    http = fake_requests()
    log.info("using fake_requests() for now")

# headers
http.headers.update({
    "User-Agent": "Mozilla/5.0 (X11; Linux; LibreOffice/6.3), TradutorLibreText/1.3+PageTranslate/1.6",
    "Accept-Language": "*; q=1.0",
    "Accept-Encoding": "utf-8"
})