Last active
April 2, 2019 13:50
-
-
Save bennr01/37cb294c005ff7fd95a079f644331555 to your computer and use it in GitHub Desktop.
Use the Pythonista App to open an URL on your PC
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
""" | |
Open an URL on pc. | |
You need to configure pythonista to run this script when "open in" is used. | |
Replace YOUR_HOST_OR_IP with your ip or hostname. | |
""" | |
#!python2 | |
import socket | |
import appex | |
HOST = "YOUR_HOST_OR_IP" # host/IP to connect to | |
PORT = 22222 # port to connect to | |
def send_url(url): | |
"""send an URL on your PC.""" | |
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # IPv4 TCP socket | |
s.settimeout(5) # try at most 5 seconds | |
s.connect((HOST, PORT)) # connect to HOST/PORT | |
s.send(url) # send url | |
s.close() # close connection | |
def main(): | |
"""main function.""" | |
urls = appex.get_urls() # get all urls used for "open in" | |
if len(urls) == 0: | |
print("No URLs found!") | |
for url in urls: | |
print("Opening: " + url) | |
send_url(url) | |
if __name__ == "__main__": | |
# ensure main() is only called when run manually | |
main() |
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
"""server for opening URLs in your webbrowser.""" | |
import socket | |
import webbrowser | |
PORT = 22222 # Port to listen on. USe 0 for auto. | |
HOST = "0.0.0.0" # host/IP to listen on. In this case, any and all interfaces available | |
def open_url(url): | |
"""open an url in your webbrowser.""" | |
# open the url in a webbrowser. use a new tab (new=2) and send the window to foreground. | |
webbrowser.open(url, new=2, autoraise=True) | |
def main(): | |
"""the main function.""" | |
listen_s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # create a IPv4 TCP socket | |
listen_s.bind((HOST, PORT)) # bind to HOST/PORT | |
listen_s.listen(1) # listen for connections, max backlog 1 | |
own_addr = listen_s.getsockname() # get socket address, in case the port was automatically determined | |
print("Listening on: " + repr(own_addr)) | |
while True: | |
print("Waiting for connection...") | |
conn, addr = listen_s.accept() # wait for a connection and accept | |
print("New connection from: " + repr(addr)) | |
url = conn.recv(8192) # receive up to 8192 bytes. | |
print("Opening: " + url) | |
open_url(url) # open the url | |
conn.close() # close the connection | |
print("Connection closed.") | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment