import urllib.request
from bs4 import BeautifulSoup
import urllib
import RPi.GPIO as GPIO
import time
import os
import sys
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
light_1 = 5
GPIO.setup(light_1, GPIO.OUT)
GPIO.output(light_1, 0)
req = urllib.request.urlopen("http://lapi.transitchicago.com/api/1.0/ttpositions.aspx?key=6b78297846g28427e4359b886742561183677876&rt=red,blue,G,pink,Brn,Org,P,Y")
content = BeautifulSoup(req, 'xml')
def Red(xml):
train_1 = xml.find('rn')
trainStation = xml.find('nextStaNm')
trainApp = xml.find('isApp')
direction = xml.find('destNm')
if trainApp.text == '1':
print('Train number '+ train_1.text + ' RED line train to',direction.text,'is now approching ' + trainStation.text)
time.sleep(1)
GPIO.output(light_1, True)
else:
print('There is no train arriving yet at '+ trainStation.text)
GPIO.output(light_1, False)
time.sleep(1)
def Blue(xml):
train_2 = xml.select_one('route[name="blue"] train rn').get_text()
TrainStation = xml.select_one('route[name="blue"] train nextStaNm').get_text()
TrainApp= xml.select_one('route[name="blue"] train isApp').get_text()
direction= xml.select_one('route[name="blue"] train destNm').get_text()
if TrainApp == '1':
print('Train number '+ train_2 + ' BLUE line train to',direction,'is now
approching ' + TrainStation)
else:
print('There is no train arriving yet at '+ TrainStation)
def Green(xml):
train_3 = xml.select_one('route[name="g"] train rn').get_text()
TrainStation = xml.select_one('route[name="g"] train nextStaNm').get_text()
TrainApp= xml.select_one('route[name="g"] train isApp').get_text()
direction= xml.select_one('route[name="g"] train destNm').get_text()
if TrainApp == '1':
print('Train number '+ train_3 + ' GREEN line train to',direction,'is now approching ' + TrainStation)
else:
print('There is no train arriving yet at '+ TrainStation)
def Pink(xml):
train_4 = xml.select_one('route[name="pink"] train rn').get_text()
TrainStation = xml.select_one('route[name="pink"] train nextStaNm').get_text()
TrainApp= xml.select_one('route[name="pink"] train isApp').get_text()
direction= xml.select_one('route[name="pink"] train destNm').get_text()
if TrainApp == '1':
print('Train number '+ train_4 + ' PINK line train to',direction,'is now approching ' + TrainStation)
else:
print('There is no train arriving yet at '+ TrainStation)
def Brown(xml):
train_5 = xml.select_one('route[name="brn"] train rn').get_text()
TrainStation = xml.select_one('route[name="brn"] train
nextStaNm').get_text()
TrainApp= xml.select_one('route[name="brn"] train isApp').get_text()
direction= xml.select_one('route[name="brn"] train destNm').get_text()
if TrainApp == '1':
print('Train number '+ train_5 + ' BROWN line train to',direction,'is now approching ' + TrainStation)
else:
print('There is no train arriving yet at '+ TrainStation)
def Orange(xml):
train_6 = xml.select_one('route[name="org"] train rn').get_text()
TrainStation = xml.select_one('route[name="org"] train nextStaNm').get_text()
TrainApp= xml.select_one('route[name="org"] train isApp').get_text()
direction= xml.select_one('route[name="org"] train destNm').get_text()
if TrainApp == '1':
print('Train number '+ train_6 + ' ORANGE line train to',direction,'is now approching ' + TrainStation)
else:
print('There is no train arriving yet at '+ TrainStation)
def Purple(xml):
train_7 = xml.select_one('route[name="p"] train rn').get_text()
TrainStation = xml.select_one('route[name="p"] train nextStaNm').get_text()
TrainApp= xml.select_one('route[name="p"] train isApp').get_text()
direction= xml.select_one('route[name="p"] train destNm').get_text()
if TrainApp == '1':
print('Train number '+ train_7 + ' PURPLE line train to',direction,'is now approching ' + TrainStation)
else:
print('There is no train arriving yet at '+ TrainStation)
def Yellow(xml):
train_8 = xml.select_one('route[name="y"] train rn').get_text()
TrainStation = xml.select_one('route[name="y"] train nextStaNm').get_text()
TrainApp= xml.select_one('route[name="y"] train isApp').get_text()
direction= xml.select_one('route[name="y"] train destNm').get_text()
if TrainApp == '1':
print('Train number '+ train_8 + ' YELLOW line train to',direction,'is now approching ' + TrainStation)
else:
print('There is no train arriving yet at '+ TrainStation)
if __name__=='__main__':
Red(content)
Blue(content)
Green(content)
Pink(content)
Brown(content)
Orange(content)
Purple(content)
## Yellow(content)
os.execv(__file__, sys.argv)
My goal is to make this code self runnable and continue to update itself, so I figured this way would work (at the bottom) Yet when I run it, it gives me [Errno 13] Permisson denied... Not sure what went wrong. But if any one has a solution or another way to approach this, I am willing for other suggestions.
I just want this code to run by itself and continue to update. As if I were to be hitting run each time. Not a WHILE loop.