diff options
Diffstat (limited to '.config/qutebrowser/userscripts/readabilitycustom')
-rwxr-xr-x | .config/qutebrowser/userscripts/readabilitycustom | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/.config/qutebrowser/userscripts/readabilitycustom b/.config/qutebrowser/userscripts/readabilitycustom new file mode 100755 index 0000000..42a10e7 --- /dev/null +++ b/.config/qutebrowser/userscripts/readabilitycustom @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 +# +# Executes python-readability on current page and opens the summary as new tab. +# +# Depends on the python-readability package, or its fork: +# +# - https://github.com/buriy/python-readability +# - https://github.com/bookieio/breadability +# +# Usage: +# :spawn --userscript readability +# +import codecs, os + +tmpfile = os.path.join( + os.environ.get('QUTE_DATA_DIR', + os.path.expanduser('~/.config/qutebrowser')), + 'userscripts/readability.html') + +if not os.path.exists(os.path.dirname(tmpfile)): + os.makedirs(os.path.dirname(tmpfile)) + +# Styling for dynamic window margin scaling and line height +HEADER = """ +<!DOCTYPE html> +<html> +<head> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>%s</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <style type="text/css"> + body { + margin: 40px auto; + max-width: 750px; + line-height: 1.6; + padding: 0 10px; + font-size: 1.5rem; + font-family: mffweb, Georgia,serif; + } + h1, h2, h3 { + line-height: 2; + } + </style> +</head> +""" + +with codecs.open(os.environ['QUTE_HTML'], 'r', 'utf-8') as source: + data = source.read() + + try: + from breadability.readable import Article as reader + doc = reader(data, os.environ['QUTE_URL']) + title = doc._original_document.title + content = HEADER % title + doc.readable + "</html>" + except ImportError: + from readability import Document + doc = Document(data) + title = doc.title() + content = doc.summary().replace('<html>', HEADER % title) + + # add a class to make styling the page easier + content = content.replace('<body>', '<body class="qute-readability">') + + with codecs.open(tmpfile, 'w', 'utf-8') as target: + target.write(content.lstrip()) + + with open(os.environ['QUTE_FIFO'], 'w') as fifo: + fifo.write('open -t %s' % tmpfile) |