mirror of
https://github.com/cooperhammond/irs.git
synced 2025-01-03 19:15:27 +00:00
Started work on implementing the FancyPrint class. Currenly in utils.
This commit is contained in:
parent
385fabda61
commit
f299254a55
|
@ -47,6 +47,10 @@ class Ripper:
|
||||||
"list": '{0}: "{1}" by "{2}"',
|
"list": '{0}: "{1}" by "{2}"',
|
||||||
"song": 'Downloading "{0}" by "{1}"',
|
"song": 'Downloading "{0}" by "{1}"',
|
||||||
"converting": "Converting to mp3 ...",
|
"converting": "Converting to mp3 ...",
|
||||||
|
"list-fail": "Could not find any lists.",
|
||||||
|
"bypass-captcha": "Trying to bypass google captcha",
|
||||||
|
"list-no-user-found": "No user was found by that name",
|
||||||
|
"metadata-fail": "Could not find any metadata."
|
||||||
}
|
}
|
||||||
if self.args["hook-text"].get("converting") is not None:
|
if self.args["hook-text"].get("converting") is not None:
|
||||||
CONFIG["converting"] = self.args["hook-text"]["converting"]
|
CONFIG["converting"] = self.args["hook-text"]["converting"]
|
||||||
|
@ -136,7 +140,8 @@ class Ripper:
|
||||||
def find_yt_url(self, song=None, artist=None, additional_search=None, caught_by_google=False, first=False, tries=0):
|
def find_yt_url(self, song=None, artist=None, additional_search=None, caught_by_google=False, first=False, tries=0):
|
||||||
if additional_search is None:
|
if additional_search is None:
|
||||||
additional_search = Config.parse_search_terms(self)
|
additional_search = Config.parse_search_terms(self)
|
||||||
print(str(self.args["hook-text"].get("youtube")))
|
if Config.parse_fprint(self) == False:
|
||||||
|
print(str(self.args["hook-text"].get("youtube")))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if not song:
|
if not song:
|
||||||
|
@ -231,7 +236,7 @@ album row at @ session how to npr music reimagined hr version".split("
|
||||||
except TypeError:
|
except TypeError:
|
||||||
if caught_by_google is not True:
|
if caught_by_google is not True:
|
||||||
# Assuming Google catches you trying to search youtube for music ;)
|
# Assuming Google catches you trying to search youtube for music ;)
|
||||||
print("Trying to bypass google captcha.")
|
print(self.args["hook-text"]["bypass-captcha"])
|
||||||
return self.find_yt_url(song=song, artist=artist, additional_search=additional_search, caught_by_google=True, tries=tries + 1)
|
return self.find_yt_url(song=song, artist=artist, additional_search=additional_search, caught_by_google=True, tries=tries + 1)
|
||||||
elif caught_by_google is True and first is not True:
|
elif caught_by_google is True and first is not True:
|
||||||
return self.find_yt_url(song, artist, additional_search, caught_by_google, first=True, tries=tries + 1)
|
return self.find_yt_url(song, artist, additional_search, caught_by_google, first=True, tries=tries + 1)
|
||||||
|
@ -268,7 +273,7 @@ with init, or in method arguments.")
|
||||||
try:
|
try:
|
||||||
list_of_lists = self.spotify.user_playlists(username)["items"]
|
list_of_lists = self.spotify.user_playlists(username)["items"]
|
||||||
except spotipy.client.SpotifyException:
|
except spotipy.client.SpotifyException:
|
||||||
print("No user was found by that name.")
|
print(self.args["hook-text"]["list-no-user-found"])
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if len(list_of_lists) > 0:
|
if len(list_of_lists) > 0:
|
||||||
|
@ -308,9 +313,10 @@ with init, or in method arguments.")
|
||||||
if the_list is not None:
|
if the_list is not None:
|
||||||
YdlUtils.clear_line()
|
YdlUtils.clear_line()
|
||||||
|
|
||||||
print(self.args["hook-text"].get("list")
|
if Config.parse_fprint(self) == False:
|
||||||
.format(type.title(), the_list["name"].encode("utf-8"),
|
print(self.args["hook-text"].get("list")
|
||||||
the_list["artists"][0]["name"].encode("utf-8")))
|
.format(type.title(), the_list["name"].encode("utf-8"),
|
||||||
|
the_list["artists"][0]["name"].encode("utf-8")))
|
||||||
|
|
||||||
compilation = ""
|
compilation = ""
|
||||||
if type == "album":
|
if type == "album":
|
||||||
|
@ -358,7 +364,7 @@ with init, or in method arguments.")
|
||||||
return locations
|
return locations
|
||||||
# return self.post_processing(locations)
|
# return self.post_processing(locations)
|
||||||
|
|
||||||
print("Could not find any lists.")
|
print(self.args["hook-text"]["list-fail"])
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def list(self, list_data):
|
def list(self, list_data):
|
||||||
|
@ -475,7 +481,7 @@ init, or in method arguments.")
|
||||||
m.add_tag("compilation", data["compilation"])
|
m.add_tag("compilation", data["compilation"])
|
||||||
m.add_album_art(str(data["album_art"]))
|
m.add_album_art(str(data["album_art"]))
|
||||||
else:
|
else:
|
||||||
print("Could not find metadata.")
|
print(self.args["hook-text"]["metadata-fail"])
|
||||||
m.add_tag("title", song)
|
m.add_tag("title", song)
|
||||||
m.add_tag("artist", artist)
|
m.add_tag("artist", artist)
|
||||||
|
|
||||||
|
|
60
irs/utils.py
60
irs/utils.py
|
@ -22,6 +22,8 @@ if sys.version_info[0] == 2:
|
||||||
else:
|
else:
|
||||||
from irs.config import CONFIG
|
from irs.config import CONFIG
|
||||||
|
|
||||||
|
# CLI
|
||||||
|
import draftlog
|
||||||
|
|
||||||
# ==================
|
# ==================
|
||||||
# Static Method Hook
|
# Static Method Hook
|
||||||
|
@ -269,8 +271,9 @@ def flush_puts(msg, time=0.01):
|
||||||
print("")
|
print("")
|
||||||
|
|
||||||
|
|
||||||
BOLD = code(1)
|
|
||||||
END = code(0)
|
END = code(0)
|
||||||
|
BOLD = code(1)
|
||||||
|
DIM = code(2)
|
||||||
RED = code(31)
|
RED = code(31)
|
||||||
GREEN = code(32)
|
GREEN = code(32)
|
||||||
YELLOW = code(33)
|
YELLOW = code(33)
|
||||||
|
@ -370,20 +373,48 @@ def console(ripper):
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
"""
|
class FancyPrinting:
|
||||||
# =====================
|
def __init__(self, media):
|
||||||
# Config File and Flags
|
# `media` takes a dict:
|
||||||
# =====================
|
# {
|
||||||
|
# "type": <song,playlist,album>,
|
||||||
|
# "list-data": {"list_title": <x>, "user-or-artist": <x>},
|
||||||
|
# "contents": [{"title": <x>, "artist": <x>, "album": <x>}, {...}, ...]
|
||||||
|
# }
|
||||||
|
self.draft = draftlog.inject()
|
||||||
|
self.frames = "⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏".split(" ")
|
||||||
|
self.frame = -1
|
||||||
|
|
||||||
def check_sources(ripper, key, default=None, environment=False, where=None):
|
self.media_drafts = []
|
||||||
if where is not None:
|
|
||||||
tmp_args = ripper.args.get(where)
|
|
||||||
else:
|
|
||||||
tmp_args = ripper.args
|
|
||||||
|
|
||||||
if tmp_args.get(key):
|
self.songs = []
|
||||||
return tmp_args.get(key)
|
self.phrases = []
|
||||||
"""
|
self.media = media
|
||||||
|
|
||||||
|
if self.media.type == "song":
|
||||||
|
song = self.media.contents[0]
|
||||||
|
self.title = (BYELLOW + "{0} " + END + YELLOW + "{1} " + DIM + "{2} ")
|
||||||
|
.format(song["title"], song["artist"], song["album"])
|
||||||
|
elif self.media.type in ("playlist", "album"):
|
||||||
|
data = self.media["list_data"]
|
||||||
|
self.title = (YELLOW + "Playlist: " + BOLD + "{0} " + DIM + "{2} ")
|
||||||
|
.format(data["list_title"], data["user-or-artist"])
|
||||||
|
|
||||||
|
def start(self):
|
||||||
|
loader_draft = self.draft.log()
|
||||||
|
loader_draft.set_interval(self.loader_interval, 0.05, loader=True)
|
||||||
|
|
||||||
|
# TODO: Get the logs to start w/ diff content depending on media type
|
||||||
|
# for song in self.media["contents"]:
|
||||||
|
# self.media_drafts.append(self.draft.log(song["title"]))
|
||||||
|
|
||||||
|
|
||||||
|
def loader_interval(self):
|
||||||
|
if self.frame > len(self.frames) - 2:
|
||||||
|
self.frame = -1
|
||||||
|
self.frame += 1
|
||||||
|
return (BCYAN + "{0} " + END + self.title + END + BCYAN + " {0}" + END)
|
||||||
|
.format(self.frames[self.frame])
|
||||||
|
|
||||||
|
|
||||||
# ===========
|
# ===========
|
||||||
|
@ -451,6 +482,9 @@ class Config:
|
||||||
if exact in (True, False):
|
if exact in (True, False):
|
||||||
return exact
|
return exact
|
||||||
|
|
||||||
|
def parse_fprint(ripper): # fprint: fancy print
|
||||||
|
fprint = check_sources(ripper, "fancy_print")
|
||||||
|
return fprint
|
||||||
|
|
||||||
|
|
||||||
#==============
|
#==============
|
||||||
|
|
Loading…
Reference in a new issue