Created
October 16, 2018 16:49
-
-
Save patarapolw/1995a8e7eb97fe1620ae0f9c913390b1 to your computer and use it in GitHub Desktop.
Simple image server in Python, for use in Jupyter Notebook, markdown, local website. Can also be adapted for viewing PDF with pdf.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import subprocess | |
from pathlib import Path | |
from datetime import datetime | |
from PIL import ImageGrab | |
import atexit | |
from urllib.parse import quote | |
class Server: | |
def __init__(self, root, port=14074): | |
self.root = root | |
self.port = port | |
self.server = subprocess.Popen([ | |
'python', '-m', | |
'http.server', | |
'-d', self.root, | |
str(self.port) | |
]) | |
atexit.register(self.close) | |
def close(self): | |
self.server.kill() | |
def paste(self, filename=None): | |
if not filename: | |
filename = 'blob/' + datetime.now().strftime('%Y%m%d_%H.%M.%S') + '.png' | |
filename = Path(filename).with_suffix('.png') | |
im = ImageGrab.grabclipboard() | |
if im: | |
true_output = Path(self.root).joinpath(filename) | |
true_output.parent.mkdir(parents=True, exist_ok=True) | |
im.save(true_output) | |
print('Pasted as "{}"' | |
.format(f'http://localhost:{self.port}/{quote(str(filename))}')) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment