+ if url is not None:
+ answer = input("Do you want to download the chosen broadcast? (y/N) ")
+ if answer in ["y", "Y", "j", "J"]:
+ name = input("Download directory (prefix): ")
+
+ try:
+ dirname = get_directory_name(name, chosen_datetime)
+ print("Downloading to %s..." % dirname)
+
+ make_directory(name, chosen_datetime)
+
+ description = a.get_broadcast_description(day, broadcast)
+ write_html_file(name, chosen_datetime, description)
+
+ write_mp3_file(name, chosen_datetime, url)
+
+ except OSError as e:
+ print("Error creating directory.")
+ print(e)
+
+ except requests.exceptions.RequestException as e:
+ print("Request getting mp3 failed.")
+
+ except Exception as e:
+ print("Error downloading mp3.")
+ print(e)
+
+def get_directory_name(name, datetime):
+ prefix = ""
+ if len(name) > 0:
+ prefix = name + "_"
+
+ return prefix + datetime.strftime("%Y-%m-%d")
+
+def make_directory(name, datetime):
+ """Creates the download subdirectory for the given name and datetime."""
+ dirname = get_directory_name(name, datetime)
+ if not os.path.exists(dirname):
+ os.makedirs(dirname)
+
+def write_html_file(name, datetime, description):
+ """Stores broadcast description into a html file."""
+
+ longname = get_directory_name(name, datetime)
+ filepath = os.path.join(longname, "description.html")
+ file = open(filepath, 'w+')
+ file.write("<!DOCTYPE html>\n")
+ file.write("<html>\n")
+ file.write("<head>\n")
+ file.write("<title>\n")
+ file.write("%s %s\n" % (name, datetime.strftime("%d.%m.%Y")))
+ file.write("</title>\n")
+ file.write("<meta charset = \"utf-8\">\n")
+ file.write("</head>\n")
+ file.write("<body>\n")
+ file.write("%s %s" % (name, datetime.strftime("%d.%m.%Y")))
+ file.write(description)
+ file.write("</body>\n")
+ file.write("</html>")
+ file.close()
+
+def write_mp3_file(name, datetime, url):
+ import requests
+
+ longname = get_directory_name(name, datetime)
+ filepath = os.path.join(longname, "stream.mp3")
+
+ print("Fetching mp3...")
+ r = requests.get(url, stream=True)
+ if r.status_code == 200:
+ with open(filepath, 'wb') as f:
+ f.write(r.content)
+ else:
+ print("Error downloading mp3. Status code: %d" % r.status_code)