mirror of https://github.com/sloumdrone/burrow
Added code for processing images, at the cost of adding dependencies
This commit is contained in:
parent
a6802e14c3
commit
395fd719ae
|
@ -12,7 +12,11 @@ class connect:
|
|||
socket_conn.connect((host, port))
|
||||
socket_conn.sendall((resource + '\r\n').encode('utf-8'))
|
||||
|
||||
response = socket_conn.makefile(mode = 'r', errors = 'ignore')
|
||||
if itemtype in ['I','p','g']:
|
||||
response = socket_conn.makefile(mode = 'rb', errors = 'ignore')
|
||||
else:
|
||||
response = socket_conn.makefile(mode = 'r', errors = 'ignore')
|
||||
|
||||
try:
|
||||
self.raw_response = response.read()
|
||||
self.filetype = itemtype
|
||||
|
|
|
@ -1 +1 @@
|
|||
{"favorites": [], "last_viewed": "gopher://gopher.floodgap.com:70/1/"}
|
||||
{"favorites": [], "last_viewed": "gopher://sdf.org:70/1/users/cat/"}
|
42
gui.py
42
gui.py
|
@ -7,6 +7,8 @@ import time
|
|||
import sys
|
||||
import json
|
||||
import os.path
|
||||
from io import BytesIO
|
||||
from PIL import Image, ImageTk
|
||||
|
||||
class GUI:
|
||||
def __init__(self):
|
||||
|
@ -136,6 +138,7 @@ class GUI:
|
|||
return True
|
||||
|
||||
parsed_url = self.parser.parse_url(url)
|
||||
print(parsed_url)
|
||||
|
||||
if not parsed_url:
|
||||
# To do: build errors class to handle displaying errors
|
||||
|
@ -225,16 +228,17 @@ class GUI:
|
|||
return False
|
||||
|
||||
types = {
|
||||
'0': '( TEXT )',
|
||||
'1': '( MENU )',
|
||||
'3': '( ERROR)',
|
||||
'7': '( INTR )',
|
||||
'9': '( BIN )',
|
||||
'g': '( GIF )',
|
||||
'I': '( IMG )',
|
||||
'h': '( HTML )',
|
||||
'i': '( INFO )',
|
||||
's': '( SOUND)'
|
||||
'0': '( TXT )',
|
||||
'1': '( MNU )',
|
||||
'3': '( ERR )',
|
||||
'7': '( INT )',
|
||||
'9': '( BIN )',
|
||||
'g': '( GIF )',
|
||||
'I': '( IMG )',
|
||||
'h': '( HTM )',
|
||||
'i': '( INF )',
|
||||
's': '( SND )',
|
||||
'p': '( PNG )'
|
||||
}
|
||||
|
||||
self.site_display.config(state=tk.NORMAL)
|
||||
|
@ -282,12 +286,22 @@ class GUI:
|
|||
self.site_display.config(state=tk.DISABLED)
|
||||
|
||||
|
||||
def show_image(self, data):
|
||||
self.current_image = self.build_image(data)
|
||||
self.site_display.config(state=tk.NORMAL)
|
||||
self.site_display.delete(1.0, tk.END)
|
||||
self.site_display.image_create(tk.END, image = self.current_image)
|
||||
self.site_display.config(state=tk.DISABLED)
|
||||
|
||||
|
||||
def send_to_screen(self, data, itemtype='1', clear=True):
|
||||
if itemtype == '0':
|
||||
self.show_text(data)
|
||||
elif itemtype in ['1','3']:
|
||||
data = self.parser.parse_menu(data)
|
||||
self.show_menu(data, clear)
|
||||
elif itemtype in ['p','I','g']:
|
||||
self.show_image(data)
|
||||
|
||||
|
||||
def update_status(self, event, href=False):
|
||||
|
@ -318,6 +332,14 @@ class GUI:
|
|||
self.site_display.config(cursor="arrow")
|
||||
e.update_idletasks()
|
||||
|
||||
def build_image(self, bytes_str):
|
||||
stream = BytesIO(bytes_str)
|
||||
print(type(stream))
|
||||
pilimage = Image.open(stream)
|
||||
tkimage = ImageTk.PhotoImage(pilimage)
|
||||
return tkimage
|
||||
|
||||
|
||||
|
||||
#--------Start file handling methods------------
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ class parser:
|
|||
def parse_url(self, url):
|
||||
# Take in a URL and output a dict of the url parts
|
||||
|
||||
regex = r'^(?P<protocol>(?:gopher:\/\/)?)?(?P<host>[\w\.\d]+)(?P<port>(?::\d+)?)?(?P<type>(?:\/\d)?)?(?P<resource>(?:\/[\w\/\d\-?.]*)?)?$'
|
||||
regex = r'^(?P<protocol>(?:gopher:\/\/)?)?(?P<host>[\w\.\d]+)(?P<port>(?::\d+)?)?(?P<type>(?:\/[\dgIp])?)?(?P<resource>(?:\/[\w\/\d\-?.]*)?)?$'
|
||||
|
||||
match = re.match(regex, url)
|
||||
protocol = match.group('protocol')
|
||||
|
|
Loading…
Reference in New Issue