Site Map - skip to main content - dyslexic font - mobile - text - print

Hacker Public Radio

Your ideas, projects, opinions - podcasted.

New episodes Monday through Friday.


From Wed 20th December 2017 all the media from the HPR feeds will be served via a redirect towards Archive.org. Please notify admin@HPR of any issues.

Our hosting is kindly provided by Josh from AnHonestHost.com. We would appreciate it if you could donate to help reduce his costs in funding the hosting.
He is also accepting bitcoins to 1KsxJr9HtsdaUeU7yaV9bk9bQi21UPBtUq

hpr2344 :: Follow on to HPR2340 (Tracking the HPR queue in Python)

Improved version of script to capture the number of HPR shows in the queue using python.

<< First, < Previous, Latest >>

Hosted by MrX on 2017-07-27 is flagged as Explicit and is released under a CC-BY-SA license.
Listen in ogg, spx, or mp3 format. | Comments (0)

Part of the series: Programming 101

A series focusing on concepts and the basics of programming

This is a follow up to my previous show HPR2340, the improvement being I use the available STATS file from the hpr website rather than scraping the content from the HPR calendar page

Snapshot contents (2017-06-23) of 'stats.txt' file which was actually called 'hpr_stats.txt' my mistake

Started:    11 years, 8 months, 19 days ago (2005-10-10)
Renamed HPR:    9 years, 5 months, 27 days ago (2007-12-31)
Total Shows:    2911
Total TWAT: 300
Total HPR:  2611
HPR Hosts:  286
Days to next free slot: 17
Hosts in Queue: 9
Shows in Queue: 14
Comments waiting approval:  0
Files on the FTP Server:    1
Number of Emergency Shows:  7
Days until show without media:  0
1498246151,369343750,299186950,2911,300,2611,286,17,9,14,0,1,7,0
#!/usr/bin/env python3

### This is a scratchpad file I've created to try out snippets of code in python

# The script below is for use with Python 3
# This script should work out of the box on most systems running a version of Python 3 
# If you happen to have a blinkstick lying about then your can uncomment the blinkstick module
# and uncomment the references at the bottom of the program that call the blinkstick functions
# Regrds, Mr X


# Imported modules
from time import sleep          # used to pause program
#from blinkstick import blinkstick  # used to control blinkstick nano attached to usb port of raspberry pi
import urllib.request           # used to capture hpr webpage content to get the number of HPR shows in the que
import re               # regular expressions, used to find sting in HPR webpage (get_hpr_que)


# These functions control a blink stick nano attached to my raspberry pi USB port #################
# They can be ignored or deleted if you don't have one


def bstick_off():
# Search for all attached blinksticks and turn them all off
    for bstick in blinkstick.find_all():
        bstick.turn_off()   # Turn front blinkstick LED off
        bstick.set_color(channel=0, index=1, name="black")  # Turn rear blinkstick led off
        print("Blinkstick: " + bstick.get_serial() + " turned off")


def bstick_on(colour):
# Turn blinkstick on and set led colour to string value stored in var colour
# valid colours are, black, silver, gray, white, maroon, red, purple, fuchsia, green, lime, olive, yellow, navy, blue, teal, aqua
    for bstick in blinkstick.find_all():
        bstick.set_max_rgb_value(30)        # Sets max blinkstick RGB value to 15, makes LED dimm
        bstick.set_color(name=colour)       # Turn blinkstick on, var colour determines colour
        print ("Blinkstick: " + bstick.get_serial() + " | Colour: " + bstick.get_color(color_format="hex") + " [" + colour + "]")
#hex

def bstick_on_random():
# Turn blinkstick on colour random
    for bstick in blinkstick.find_all():
        bstick.set_random_color()
        print ("Blinkstick: " + bstick.get_serial() + " | Colour: " + bstick.get_color(color_format="hex"))


def bstick_blink_red():
# Flash blinkstick colour red
    for bstick in blinkstick.find_all():
        bstick.blink(name="red")
        print ("Blinkstick: " + bstick.get_serial() + " | Colour: " + bstick.get_color(color_format="hex"))

################################################################################


def get_hpr_que_improved():
# Goto hacker public stats page and extract the number of days to next free slot
# turns on blinkstick LED with colour dependent on the number of days to next free slot in HPR queue

    url = 'http://hackerpublicradio.org/stats.php'  # HPR url for stats page
    try:
        text = urllib.request.urlopen(url).read()   # Try to read hpr stats text
    except:
        print("ERROR: Problem acessing url " + url)     # if error accessing url then return -1
        hpr_shows = -1
        return hpr_shows
    #print(text)    # DEBUG
    text_page = str(text)   # convert text from list to string
    line_begin = text_page.find('Days to next free slot:') # find position of string in page
    line_end = line_begin + 27 # Store line end position (start position + 27)
    line = text_page[line_begin:line_end]  # Capture string line
    #print(line) # DEBUG Print line string
    digit = re.findall(r'\d+',line)         # Find digits in line
    #print(digit[0])    # DEBUG print the 1st digit
    try:
        hpr_shows = int(digit[0])   # convert digit list to integer days
    except:                         # If show numbers not found then return -1
        print("ERROR: Problem getting number of HPR shows in que.")
        hpr_shows = -1
        return hpr_shows

    if hpr_shows > 9:       # If hpr show que > 9 turn on green LED
        print("Turn on green blinkstick LED")
        #bstick_on("green")
    elif hpr_shows > 5:     # Else if hpr show que > 5 turn on blue LED
        print("Turn on blue blinkstick LED")
        #bstick_on("blue")
    elif hpr_shows > -1:    # Else if hpr show que > -1 turn on ref LED
        print("Turn on red blinkstick LED")     
        #bstick_on("red")
    else:
        print("Flash red blinkstick LED")
        #bstick_blink_red() # Else blink LED to show error
    print("The are " + str(hpr_shows) + " days to tne next free slot in the HPR que...")
    sleep(4)
    print("Turn off all blinkstick LED's")
    #bstick_off()           # Turn blinkstick off


# Main program
get_hpr_que_improved()

Comments

Subscribe to the comments RSS feed.

Leave Comment

Note to Verbose Commenters
If you can't fit everything you want to say in the comment below then you really should record a response show instead.

Note to Spammers
All comments are moderated. All links are checked by humans. We strip out all html. Feel free to
record a show about yourself, or your industry, or any other topic we may find interesting. We also check shows for spam :).

Provide feedback
Your Name/Handle:
Title:
Comment:
Anti Spam Question: What does the P in HPR stand for ?
Are you a spammer →
Who hosted this show →
What does HPR mean to you ?