I’ve been working a bit more on Pypodd recently, cleaning up the code a bit and making it slightly more user friendly.
One thing I did was to include an option at the start of the program which allows you to choose to download the most recent episode of each podcast. This is the snippet of the code which lets you do that, mostly using
feedparser to compile lists of RSS feeds and extract the important bits of information:
while input_exit != 2: # Terminate program if input_exit == 2 count_opt = 1 optListAllNo = ['All most recent episodes', 'Specific episode'] # A list of options for i in optListAllNo: print(str(count_opt) + ") " + i) count_opt += 1 input_all_no = input("\nChoose an option: ") input_all_no = int(input_all_no) if input_all_no == 1: feedList =  # Create empty list for i in urlList: # Put the parsed feeds in the list parseBar = Bar("Parsing feeds", max = len(subList)) feedList.append(feedparser.parse(i)) parseBar.next() parseBar.finish() ep0List =  # Create empty lists name0List =  link0List =  for i in feedList: # Extract most recent episode from each feed ep0List.append(i['entries']) for i in ep0List: link0List.append(i['enclosures']['href']) # Extract download URL from list name0List.append(i['title']) # Extract episode name from list print("\n Downloading all most recent episodes") dlExt = ".mp3" for i, j in zip(link0List, name0List): # Download most recent episode and give names dlName = j.replace("/", "_") dlFile = destDir + dlName + dlExt dlURL = i dlProg().get(dlURL, dlFile) print("\nFinished, exiting") # Exit input_exit = 2 elif input_all_no == 2: ... # Code continues with other options below
I’m still hoping that at some point in the future I can implement a databse style structure which says which episodes have been downloaded already and flags them on the list of available episodes.
I’m also having trouble in that some of the progress bars replicate if they are too long for the line. This doesn’t affect the function of the program at all, but it does make it look really messy.