def generateWeatherFeed(): # r1 = requests.get('https://api.weather.gov/points/36.1211,-115.3508') # json1 = r1.json() # location = json1['properties']['relativeLocation']['properties'] # city = location['city'] # state = location['state'] # print("weather for " + city + ", " + state) # don't know if the following url is static, but we can find it via the code above #r2 = requests.get('https://api.weather.gov/gridpoints/VEF/114,96/forecast') #lat='36.1211' #lon='-115.3508' #r = requests.get('https://api.openweathermap.org/data/2.5/onecall?lat={lat}&lon={lon}&appid={KEY}'.format(lat=lat, lon=lon, KEY=OPEN_WEATHER_MAP_API_KEY)) r = requests.get( 'http://api.openweathermap.org/data/2.5/weather?q=Las%20Vegas,us&APPID={APP_ID}' .format(APP_ID=OPEN_WEATHER_MAP_API_KEY)) json2 = r.json() temp = json2['main']['temp'] tempf = int(temp * 9 / 5 - 459.67) desc = json2['weather'][0]['description'] #f1 = json2['properties']['periods'][0] f1s = '{font3}{green}Weather:{nl}{s1}{green}{time} {amber}{red}{temp}{nl}{amber}{forecast}'.format( font3='{font3}', s1='{7x6}', green='{green}', red='{red}', time='now', amber='{amber}', temp=str(tempf), nl="{nl}", forecast=desc) #f2 = json2['properties']['periods'][1] f2s = '{font3}{amber}Weather:{nl}{s1}{green}{time} {amber}{red}{temp}{nl}{amber}{forecast}'.format( font3='{font3}', s1='{7x6}', green='{green}', red='{red}', time='now', amber='{amber}', temp=str(tempf), nl="{nl}", forecast=desc) #f3 = json2['properties']['periods'][2] #f3s = '{s1}{green}{time}: {amber}{red}{temp}{nl}{amber}{forecast}'.format(s1='{7x6}',green='{green}', red='{red}', time=f3["name"], amber='{amber}', temp=f3["temperature"], nl="{nl}", forecast=f3["shortForecast"]) #print("Forecast: " + f1["name"] + " temp: " + str(one["temperature"]) + " forecast: " + one["shortForecast"]) print("temf: " + str(tempf)) print("desc: " + desc) return TextFile('{pause=2}{randomin}{randomout}{fastest}%s{newframe}%s' % (f1s, f2s), "AW.nmg", drive='D')
def generateDailyCallerPolitics(): d = feedparser.parse('http://dailycaller.com/section/politics/feed') #print(str(d)) h1 = d['entries'][0]['title'].encode("ascii", "ignore").strip() print(h1) h2 = d['entries'][1]['title'].encode("ascii", "ignore").strip() print(h2) h3 = d['entries'][2]['title'].encode("ascii", "ignore").strip() print(h3) out = TextFile( '{pause=0}{middle}{moveLeftIn}{moveLeftOut}{font4}{green}{typesetoff}DAILY CALLER POL: {amber}{16x9}%s...%s...%s' % (h1, h2, h3), "AD.nmg", drive='D') return out
def generateBTCScreen(): r = requests.get('https://api.coinmarketcap.com/v2/ticker/1/') r = requests.get('https://api.coindesk.com/v1/bpi/currentprice.json') jsonObject = r.json() btcprice = int(jsonObject["bpi"]["USD"]["rate_float"]) percent_change_24h = 0 #float(jsonObject["data"]["quotes"]["USD"]["percent_change_24h"]) percent_change_7d = 0 #float(jsonObject["data"]["quotes"]["USD"]["percent_change_7d"]) color24 = '{green}' color7d = '{green}' if percent_change_24h < 0: color24 = '{red}' if percent_change_7d < 0: color7d = '{red}' change24 = '{color}{value:+.1f}'.format(color=color24, value=percent_change_24h) change7d = '{color}{value:+.1f}'.format(color=color7d, value=percent_change_7d) return TextFile( '{wipeupwardin}{wipeupwardout}\x14DD{middle}%s{b16x12}{halfspace}$%s{nl}{7x6}{amber}BTC %sd %sw' % (color24, '{:,d}'.format(btcprice), change24, change7d), 'AC.nmg', drive='D')
def generateDrudgeFeed(): maxTries = 4 numTries = 0 while True: error = False d = feedparser.parse('http://drudgereportfeed.com/rss.xml') try: h1 = d['entries'][0]['title'].decode("utf-8").encode( "ascii", "ignore").strip() except Exception as exception: error = True h1 = "Headline 1 Error" try: h2 = d['entries'][1]['title'].decode("utf-8").encode( "ascii", "ignore").strip() except Exception as exception: error = True h2 = "Headline 2 Error" try: h3 = d['entries'][2]['title'].decode("utf-8").encode( "ascii", "ignore").strip() except Exception as exception: h3 = "Headline 3 Error" error = True out = TextFile( '{pause=0}{middle}{moveLeftIn}{moveLeftOut}{font4}{green}{typesetoff}DRUDGE REPORT: {amber}{16x9}%s %s %s' % (h1, h2, h3), "AD.nmg", drive='D') if not error: return out else: numTries = numTries + 1 print("ERROR on drudge feed. tries = " + str(numTries)) if numTries >= maxTries: return out
def generateInfoScreen(): return TextFile('{top}{center}{raindropsin}{red}Dali vali?{nl}{nl}NE', "AB.nmg", drive='E')
def generateTextScreen(text, name="AA.nmg"): return TextFile(text , name , drive="E")
test += '{14x8}14x8{newframe}' test += '{15x9}15x9{newframe}' test += '{16x9}16x9{newframe}' test += '{24x16}24x16{newframe}' test += '{32x18}32x18{newframe}' test += '{11x9}11x9{newframe}' test += '{22x18}22x18{newframe}' test += '{30x18}30x18{newframe}' test += '{b14x10}b14x10{newframe}' test += '{b15x10}b15x10{newframe}' test += '{b16x12}b16x12{newframe}' test += '{font3}Western12{newframe}' files = [] if True: files.append(TextFile(test, "FT.nmg", drive='D')) #port = '/dev/ttyUSB0' #port = '/dev/ttyACM0' port = '/dev/ttyVIRTUAL' baudRate = 19200 ser = serial.Serial(port, baudRate) if True: for f in files: print("Writing file..." + f.label + " to drive: " + f.drive) if f.type == 'T': ser.write(Message.WriteTextFilewithChecksum(f)) elif f.type == 'P': for packetNumber in range(0,f.numPackets):
import serial from JetFileII import Message from JetFileII import TextFile from JetFileII import PictureFile from JetFileII import SEQUENTSYS displayMsg = Message.DisplayControlWithoutChecksum import time write_files = True write_playlist = True files = [] if write_files: files.append(TextFile('{pause=5}{middle}{moveRightIn}{moveRightOut}{b16x12}{green}{hhmin_12hr}{nl}{amber}{7x6}{dow_abbr}, {month_abbr} {date} {yyyy}', "AB.nmg", drive='D')) #files.append(PictureFile('../images/awesome.bmp', 'sugoi.bmp', 'D')) #files.append(PictureFile('../images/coin.bmp', 'c', 'D')) #files.append(PictureFile('../images/g.bmp', 'newg1.bmp', 'D')) files.append(TextFile('{radarin}{radarout}\x14DD{middle}{green}{b16x12}{halfspace}$11,700{7x6}{green}+7%{nl}{amber}BTC {dd-mm-yy}', 'AC.nmg', drive='D')) #files.append(TextFile('{middle}{left}{green}{b16x12}$10,600', 'AC.nmg', drive='D')) #files.append(TextFile('{pause=1}{green}{5x5}{moveLeftIn}{moveRightOut}Playlist Entry 2', 'AC.nmg', drive='D')) #files.append(TextFile('{pause=1}{red}{5x5}{moverightin}{moveRightOut}Playlist Entry 3', 'AD.nmg', drive='D')) #files.append(TextFile('{pause=1}{amber}{5x5}{moverightin}{moveRightOut}Playlist Entry 4', 'AE.nmg', drive='D')) #files.append(PictureFile('../images/g.bmp', 'myg.bmp', 'D')) #files.append(Message.SmallPictureFile(None, msgId=2, disk='D', upload=False)) #port = '/dev/ttyUSB0' #port = '/dev/ttyACM0' port = '/dev/ttyVIRTUAL'
def generateTimeScreen(): return TextFile( '{pause=6}{middle}{center}{nonein}{noneout}{amber}{7x6}{dow_abbr}, {month_abbr} {date} {yyyy}{nl}{font4}{green}{hhmin_12hr}', "AB.nmg", drive='D')
#!/usr/bin/env python # vim: set ts=2 expandtab: ''' Write a text file using v2.0 protocol with checksum v2.0 supports filenames up to 12 characters ''' import serial from JetFileII import Message from JetFileII import TextFile file = TextFile( '{pause=5}{middle}{moveRightIn}{moveLeftOut}{b16x12}{green}{hhmin_12hr}{nl}{amber}{7x6}{dow_abbr}, {month_abbr} {date} {yyyy}', "AB.nmg", drive='D') #port = '/dev/ttyS0' port = '/dev/ttyUSB0' #port = '/dev/ttyACM0' baudRate = 19200 ser = serial.Serial(port, baudRate) x = ser.write(Message.WriteTextFilewithChecksum(file)) ser.close()