From 1537a440bf6873a70c06c3527bc2d69c4c9b8bc9 Mon Sep 17 00:00:00 2001 From: Skullheadx <94652084+Skullheadx@users.noreply.github.com> Date: Sun, 13 Oct 2024 22:51:16 -0400 Subject: [PATCH] add views --- .gitignore | 2 ++ ytdl/__main__.py | 28 ++++++++++++++++------------ ytdl/funcmodule.py | 13 ++++++++++--- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index 18a6ba8..7e413f7 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,5 @@ ytdl/__pycache__/__init__.cpython-312.pyc ytdl/__pycache__/__main__.cpython-312.pyc ytdl/__pycache__/classmodule.cpython-312.pyc ytdl/__pycache__/funcmodule.cpython-312.pyc +/ytdl.egg-info +/ytdl/__pycache__ diff --git a/ytdl/__main__.py b/ytdl/__main__.py index 85b0add..7108f53 100644 --- a/ytdl/__main__.py +++ b/ytdl/__main__.py @@ -1,22 +1,22 @@ -from .__init__ import * import sys -from .classmodule import MyClass -from .funcmodule import check_playlist, links_work, download_audio +from .funcmodule import check_playlist, links_work, get_audio_streams, download_audio_streams, \ + get_metadata + + def main(): args = sys.argv[1:] + modes = ["-d", "-a", "-v", "-av"] links = [] mode = "-d" for arg in args: - print('passed argument :: {}'.format(arg)) if arg in modes: mode = arg if "youtube.com" in arg: links.extend(arg.split(" ")) - - + assert len(links) > 0, "Should pass at least one link as arg" assert mode in modes, f"Mode should be one of {modes}" @@ -26,13 +26,19 @@ def main(): links = check_playlist(links) assert len(links) > 0, "Should be at least one song in playlist" - - #assert links_work(links), "Links don't work :(" - + + assert links_work(links), "Links don't work :(" + + streams = get_audio_streams(links) + assert len(streams) > 0, "was not able to get audio streams" + + metadata = get_metadata(links) + assert len(metadata) == len(streams), "make sure metadata for every stream" + if arg == "-d": pass elif arg == "-a": - download_audio(links) + download_audio_streams(streams, metadata) elif arg == "-v": pass elif arg == "-av": @@ -41,5 +47,3 @@ def main(): if __name__ == '__main__': main() - - diff --git a/ytdl/funcmodule.py b/ytdl/funcmodule.py index 0720edd..ed56500 100644 --- a/ytdl/funcmodule.py +++ b/ytdl/funcmodule.py @@ -4,6 +4,7 @@ import requests import subprocess import os + def check_playlist(links): for link in links: if "playlist" in link: @@ -39,13 +40,20 @@ def get_metadata(links): "artist": yt.author, "thumbnail_url": yt.thumbnail_url, "publish_date": yt.publish_date, - "rating": yt.rating, "views": yt.views } ) return metadata +def big_num_format(num): # https://stackoverflow.com/a/579376 + magnitude = 0 + while abs(num) >= 1000: + magnitude += 1 + num /= 1000.0 + return '%.1f%s' % (num, ['', 'K', 'M', 'B'][magnitude]) + + def download_audio_streams(audio_streams, metadata): for audio_stream, md in zip(audio_streams, metadata): audio_stream.download() @@ -63,6 +71,7 @@ def download_audio_streams(audio_streams, metadata): '-metadata', f'title={audio_stream.title}', '-metadata', f'artist={md["artist"]}', '-metadata', f'date={md["publish_date"]}', + '-metadata', f'comment={big_num_format(md["views"]) + " views"}', "downloads/" + audio_stream.title + ".mp4", '-y' ] @@ -71,5 +80,3 @@ def download_audio_streams(audio_streams, metadata): subprocess.run(command) os.remove("thumbnail.jpg") os.remove(audio_stream.default_filename) - - -- 2.54.0