import sys
-from .funcmodule import check_playlist, links_work, get_audio_streams, download_audio_streams, \
- get_metadata
+from .funcmodule import check_playlist, get_audio_metadata_streams, download_audio_streams
links = check_playlist(links)
assert len(links) > 0, "Should be at least one song in playlist"
- print("Checking if links exist")
- assert links_work(links), "Links don't work :("
-
- print("Getting audio streams")
- streams = get_audio_streams(links)
- assert len(streams) > 0, "was not able to get audio streams"
-
- print("Getting video metadata")
- metadata = get_metadata(links)
+ print("Getting audio streams and metadata")
+ streams, metadata = get_audio_metadata_streams(links)
+ assert len(streams) > 0, "was not able to get audio streams / metadata"
assert len(metadata) == len(streams), "make sure metadata for every stream"
if arg == "-d":
return links
-def links_work(links):
- for link in links:
- YouTube(link).check_availability()
- return True
-
-
-def get_audio_streams(links):
+def get_audio_metadata_streams(links):
audio_streams = []
+ metadata = []
+
for link in links:
yt = YouTube(link)
+ yt.check_availability()
+ print(f"Fetching stream for {yt.title}")
assert len(yt.streams.filter(only_audio=True)) > 0, "No available audio streams"
audio_streams.append(yt.streams.filter(only_audio=True).order_by("abr").last())
- return audio_streams
-
-
-def get_metadata(links):
- metadata = []
- for link in links:
- yt = YouTube(link)
metadata.append(
{
"title": yt.title,
"views": yt.views
}
)
- return metadata
-
+ return audio_streams, metadata
def big_num_format(num): # https://stackoverflow.com/a/579376
magnitude = 0
def download_audio_streams(audio_streams, metadata):
for audio_stream, md in zip(audio_streams, metadata):
+ print(f"Downloading audio stream for {audio_stream.title}")
audio_stream.download()
data = requests.get(md["thumbnail_url"]).content
f = open('thumbnail.jpg', 'wb')