#!/usr/bin/python3 # made by Vane Vander # this is version 0.1.0, last edited on 4 February 2019 # hey look it's skyworld! # implemented: # - going places # - exiting # - parsing info and directory lines in gophermaps # - parsing HTML and plaintext lines in gophermaps # - parsing TXT and MD files # - displaying the current URL # - quickly getting back to the root of a website # - 404 errors when a document is not found # - quick browsing for directories in Gophernicus # to implement next: # - quick browsing for files # - formatting HTML files properly # - nicer URLs # - going back one URL in history # - history, for that matter import os import time url = "" while True: pygopherdException = False if url is "": url = input("yo where tf do you wanna go? ") if url is "exit": os.system("clear") break else: addurl = input("yo where tf do you wanna go next? ") if addurl == "exit" or addurl == "quit" or addurl == "leave": os.system("clear") break elif addurl == "home": wholeURL = url.split("/") homeURL = wholeURL[0] url = homeURL elif addurl == "elsewhere": url = "" elif addurl.isdigit(): numerator = int(addurl) - 1 wholeURL = url.split("/") homeURL = wholeURL[0] url = homeURL try: url = url + "/1/" + directories[numerator] # this breaks with pygopherd except: # catch pygopherd exception pygopherdException = True print("Error: Quick browsing isn't implemented with pygopherd yet.") time.sleep(2) directores = [] elif addurl is not "elsewhere": url = url + addurl content = os.popen("curl -s gopher://" + url).readlines() if len(content) == 0 and url is not "": print("404 not found") elif url is not "": os.system("clear") if url[-2] == "m" or url[-2] == "x": # parsing HTML/Markdown/text files (hacky workaround; will almost always break) print(" ") for i in content: newLineFix = i.rstrip() print(newLineFix) print(" ") print("URL: gopher://" + str(url)) print(" ") else: acc = 0 directories = [] for i in content: newLineFix = i.rstrip() if newLineFix[0] == "i": # parsing info lines if "null.host" in i: # for Gophernicus info = newLineFix[1:].split("null.host") print(info[0]) elif "(NULL)" in i: # for pygopherd info = newLineFix[1:].split("(NULL)") info2 = info[0] print(info2[:-5]) elif newLineFix[0] == "1": # parsing directory lines if newLineFix[-1] == "+": # for pygopherd info = newLineFix[1:].split() directory = info[-4] directoryNameList = [] for i in range(len(info)): directoryNameList.append(info[i]) for i in range(4): del directoryNameList[-1] directoryName = "" for i in directoryNameList: directoryName = directoryName + i + " " acc = acc + 1 print("(" + str(acc) + ") (DIR) " + directoryName + ": /1" + directory) else: # for Gophernicus (NEEDS FIXING) info = newLineFix[1:].split() directory = info[-3] directoryNameList = [] for i in range(len(info)): directoryNameList.append(info[i]) for i in range(2): del directoryNameList[-1] directoryName = "" for i in directoryNameList: if i[-1] == "/": # hack to get rid of trailing slash on tildeverse directory names i = i[:-1] directoryName = i[1:] + " " acc = acc + 1 directories.append(directory) print("(" + str(acc) + ") (DIR) " + directoryName + ": /1" + directory) elif newLineFix[0] == "0" or newLineFix[0] == "h": # parsing links to text/HTML files if newLineFix[-1] == "+": # for pygopherd info = newLineFix[1:].split() directory = info[-4] directoryNameList = [] for i in range(len(info)): directoryNameList.append(info[i]) for i in range(4): del directoryNameList[-1] directoryName = "" for i in directoryNameList: directoryName = directoryName + i + " " print("(TEXT) " + directoryName + ": /1" + directory) else: # for Gophernicus info = newLineFix[1:].split() directory = info[-3] directoryNameList = [] for i in range(len(info)): directoryNameList.append(info[i]) #for i in range(3): # del directoryNameList[-1] directoryName = "" for i in directoryNameList: if i[-1] == "/": # hack to get rid of trailing slash on tildeverse directory names i = i[:-1] directoryName = i[2:] + " " print("(TEXT) /1" + directory) # this is broken as hell (no formatted file names) but I don't care right now print(" ") print(" ") print("URL: gopher://" + str(url)) print(" ")