import time
import board
import digitalio
import textwrap
import feedparser
import os
import adafruit_character_lcd.character_lcd as characterlcd

lcd_columns = 16
lcd_rows = 2

# Raspberry Pi Pin Config:
lcd_rs = digitalio.DigitalInOut(board.D26)
lcd_en = digitalio.DigitalInOut(board.D19)
lcd_d7 = digitalio.DigitalInOut(board.D27)
lcd_d6 = digitalio.DigitalInOut(board.D22)
lcd_d5 = digitalio.DigitalInOut(board.D24)
lcd_d4 = digitalio.DigitalInOut(board.D25)
lcd_backlight = digitalio.DigitalInOut(board.D4)

lcd = characterlcd.Character_LCD_Mono(
    lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight
)

lcd.backlight = True

button_1 = digitalio.DigitalInOut(board.D12)
button_1.direction = digitalio.Direction.INPUT
button_1.pull = digitalio.Pull.UP

button_2 = digitalio.DigitalInOut(board.D16)
button_2.direction = digitalio.Direction.INPUT
button_2.pull = digitalio.Pull.UP

button_3 = digitalio.DigitalInOut(board.D20)
button_3.direction = digitalio.Direction.INPUT
button_3.pull = digitalio.Pull.UP

button_4 = digitalio.DigitalInOut(board.D21)
button_4.direction = digitalio.Direction.INPUT
button_4.pull = digitalio.Pull.UP

while True:
    if not button_1.value:
        bbcNewsList = []
        bbcSplitNewsList = []
        bbc = feedparser.parse("https://rss.app/feeds/mOZBbGcPYyJryZWf.xml")
        for i in range(5):
            bbcNews = bbc['entries'][i]['title']
            bbcNewsList.append(bbcNews)
        for i in range (len(bbcNewsList)):
            line = bbcNewsList[i]
            n=16
            bbcSplitNewsList.append([line[i:i+n] for i in range(0, len(line), n)])
        lcd.message = "BBC World News"
        os.system('echo "From BBC World News" | festival --tts')
        for i in range(len(bbcSplitNewsList)):
            os.system('echo "{0}" | festival --tts'.format(bbcNewsList[i]))
            for j in range(len(bbcSplitNewsList[i])):
                message = "BBC World News\n" + bbcSplitNewsList[i][j]
                lcd.clear()
                lcd.message = message
                time.sleep(1)
            lcd.clear()
            lcd.message = "BBC World News"
            time.sleep(1)
        lcd.clear()
    if not button_2.value:
        nprNewsList = []
        nprSplitNewsList = []
        npr = feedparser.parse("https://rss.app/feeds/1ND5xFtsBwhLdzvz.xml")
        for i in range(5):
            nprNews = npr['entries'][i]['title']
            nprNewsList.append(nprNews)
        for i in range (len(nprNewsList)):
            line = nprNewsList[i]
            n=16
            nprSplitNewsList.append([line[i:i+n] for i in range(0, len(line), n)])
        lcd.message = "NPR Nat'l News"
        os.system('echo "From NPR National News" | festival --tts')
        for i in range(len(nprSplitNewsList)):
            os.system('echo "{0}" | festival --tts'.format(nprNewsList[i]))
            for j in range(len(nprSplitNewsList[i])):
                message = "NPR Nat'l News\n" + nprSplitNewsList[i][j]
                lcd.clear()
                lcd.message = message
                time.sleep(1)
            lcd.clear()
            lcd.message = "NPR Nat'l News"
            time.sleep(1)
        lcd.clear()
    if not button_3.value:
        onionNewsList = []
        onionSplitNewsList = []
        onion = feedparser.parse("https://rss.app/feeds/LUMCUgvUzxhFhuuE.xml")
        for i in range(5):
            onionNews = onion['entries'][i]['title']
            onionNewsList.append(onionNews)
        for i in range (len(onionNewsList)):
            line = onionNewsList[i]
            n=16
            onionSplitNewsList.append([line[i:i+n] for i in range(0, len(line), n)])
        lcd.message = "The Onion"
        os.system('echo "From The Onion" | festival --tts')
        for i in range(len(onionSplitNewsList)):
            os.system('echo "{0}" | festival --tts'.format(onionNewsList[i]))
            for j in range(len(onionSplitNewsList[i])):
                message = "The Onion\n" + onionSplitNewsList[i][j]
                lcd.clear()
                lcd.message = message
                time.sleep(1)
            lcd.clear()
            lcd.message = "The Onion"
            time.sleep(1)
        lcd.clear()
    if not button_4.value:
        heightsNewsList = []
        heightsSplitNewsList = []
        heights = feedparser.parse("https://rss.app/feeds/8Jk1d5PhQY5vtazM.xml")
        for i in range(5):
            heightsNews = heights['entries'][i]['title']
            heightsNewsList.append(heightsNews)
        for i in range (len(heightsNewsList)):
            line = heightsNewsList[i]
            n=16
            heightsSplitNewsList.append([line[i:i+n] for i in range(0, len(line), n)])
        lcd.message = "The Heights"
        os.system('echo "From The Heights" | festival --tts')
        for i in range(len(heightsSplitNewsList)):
            os.system('echo "{0}" | festival --tts'.format(heightsNewsList[i]))
            for j in range(len(heightsSplitNewsList[i])):
                message = "The Heights\n" + heightsSplitNewsList[i][j]
                lcd.clear()
                lcd.message = message
                time.sleep(1)
            lcd.clear()
            lcd.message = "The Heights"
            time.sleep(1)
        lcd.clear()
