In this post, we'll watch a Star Wars movie in ASCII format.
The only thing we need for this demo is Python-installed PC and internet connection.
All credits gained in this demo will go to "blinkenlights.nl" [2] website, which broadcasts this ASCII movie using Telnet protocol on Port 23, and Python which makes socket implementation very easy for us. No authentication is needed for this broadcast.
Anyone who is able to create a TCP socket and listens blinkenlights.nl on port 23 would be able to get this stream and display on their Python command line.
CODE
My main source for Python source code is [1].
What code below does is simply importing Python "socket" library, create a socket, use "towel.blinkenlights.nl" address variable to create connection, receive data from socket and display it. While typing (copy/paste) code, be careful about indentation. Don't forget that Python is sensitive about indentation since it interprets tab characters as function blocks (parenthesis and curly brackets in C-style languages)
Note that main body of the code is within an infinite loop. If you want to interrupt/stop streaming, use "Ctrl + C" key combination.
The only thing we need for this demo is Python-installed PC and internet connection.
Figure: Screenshots from Python Command line while Star Wars is being streamed
All credits gained in this demo will go to "blinkenlights.nl" [2] website, which broadcasts this ASCII movie using Telnet protocol on Port 23, and Python which makes socket implementation very easy for us. No authentication is needed for this broadcast.
Anyone who is able to create a TCP socket and listens blinkenlights.nl on port 23 would be able to get this stream and display on their Python command line.
CODE
My main source for Python source code is [1].
What code below does is simply importing Python "socket" library, create a socket, use "towel.blinkenlights.nl" address variable to create connection, receive data from socket and display it. While typing (copy/paste) code, be careful about indentation. Don't forget that Python is sensitive about indentation since it interprets tab characters as function blocks (parenthesis and curly brackets in C-style languages)
Note that main body of the code is within an infinite loop. If you want to interrupt/stop streaming, use "Ctrl + C" key combination.
import socket
addr_info = socket.getaddrinfo("towel.blinkenlights.nl", 23)
addr = addr_info[0][-1]
s = socket.socket()
s.connect(addr)
while True:
data = s.recv(500)
print(str(data, 'utf8'), end='')
Figure: Code required for ASCIImation of Star Wars
TEST ENVIRONMENT
PC: Windows 10, 64-bit
Python Version: 3.6
REFERENCES
[1] https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/network_tcp.html#star-wars-asciimation
[2] http://blinkenlights.nl/
Comments
Post a Comment