예제 #1
0
 def __init__(self, path_to_excel, debug=False):
     self.excel = FilenameExcel(path_to_excel)
     self.file_list = self.excel.get_rows()
     self.discogs_client = Discogs()
     self.filtered_list = []
     self.full_properties_list = []
     self.no_properties_found_list = []
     self.debug = debug
     self.sleep_seconds = 3
예제 #2
0
 def __init__(self, arguments):
     'Main entry point for iTunes-Discogs.'
     self.arguments = arguments
     self.config = Config(arguments.home)
     self.model = Model(self.config, arguments.database)
     self.itunes = iTunes(self.model, arguments.library)
     self.discogs = Discogs(self.model, arguments.junk)
             
     if arguments.cli:
         if not arguments.playlist:
             arguments.playlist = 'Library'
             
         for playlist in self.get_playlists().values():
             if playlist.Name == arguments.playlist:
                 self._process_playlist(playlist)
     else:
         Window(self)
         
     self.shutdown()
예제 #3
0
    def __init__(self,
                 filepath,
                 delimiter=',',
                 encoding='utf-8',
                 quotechar='"'):
        self.discogs = Discogs()
        self.filepath = filepath
        self.delimiter = delimiter
        self.encoding = encoding
        self.quotechar = quotechar
        self.search_terms = ('title', 'artist', 'format', 'album', 'label',
                             'year')
        self.output_csv = 'output.csv'

        if not os.path.exists('images/'):
            os.mkdir('images/')
        self.image_path = 'images/'

        self.get_columns()
        self.get_param_dict()
예제 #4
0
import logging
import traceback

folders = Folder(ENV_PATHS)
# print(style.green('\n' + MY_PATH))

for folder in folders:

    print(style.yellow('\n---\n'))

    print(style.green(folder))
    print()

    files = File(folder)
    try:
        discogs = Discogs(files)
    except Exception as e:
        print(style.red('some error happened...'))
        logging.error(traceback.format_exc())
        continue

    if discogs == ENV_TAGGING_DONE:
        print(style.yellow(ENV_TAGGING_DONE))
        continue

    if discogs == ENV_TAGGING_TODO:
        print(style.yellow(ENV_TAGGING_TODO))
        continue

    Tagger(files, discogs)
예제 #5
0
파일: cmd.py 프로젝트: jayathungek/ytam
def main():
    if "--version" in sys.argv[1:] or "-v" in sys.argv[1:]:
        print(f"ytam version {version.version}")
        exit()

    if "--check" in sys.argv[1:] or "-k" in sys.argv[1:]:
        print("Initialising.")
        urls = Playlist(
            "https://www.youtube.com/playlist?list=PLOoPqX_q5JAVPMhHjYxcUc2bxTDMyGE-a"
        )
        playlist_title = urls.title
        start = 0
        end = len(urls)
        album = "Test Album"
        directory = f"music{SEP}"
        artist = "Test Artist"
        is_album = True
        proxies = None
        image = f"{BASE}{SEP}check{SEP}check.jpg"
        titles = f"{BASE}{SEP}check{SEP}check.txt"
        mp3 = True

    else:
        print("Initialising.")
        args = parse_args(sys.argv[1:])
        mp3 = args.mp3
        urls = Playlist(args.url)
        playlist_title = urls.title
        start = 0 if args.start is None else args.start - 1
        end = len(urls) if args.end is None else args.end
        directory = f"music{SEP}" if args.directory is None else args.directory
        proxies = None
        if args.proxy is not None:
            proxy_strings = [proxy.strip() for proxy in args.proxy.split(" ")]
            proxies = {}
            for proxy_string in proxy_strings:
                p = proxy_string.split("-")
                proxies[p[0]] = p[1]

        if args.discogs is not None:
            # do discogs error checks here
            try:
                d = Discogs(args.discogs)
                d.make_file(DEFAULT_TITLES)
                if (end - start) != d.num_tracks:
                    raise error.TracknumberMismatchError(
                        playlist_title, d.album)
                is_album = True
                album = d.album
                artist = d.artist
                image = d.image
                titles = DEFAULT_TITLES
            except (error.WrongMetadataLinkError, error.BrokenDiscogsLinkError,
                    error.TracknumberMismatchError) as e:
                print(f"Error: {e.message}")
                exit()

        else:
            album = playlist_title if args.album is None else args.album
            artist = "Unknown" if args.artist is None else args.artist
            is_album = False if args.album is None else True
            image = args.image
            titles = args.titles

    colorama.init()
    d = None
    try:
        if start >= len(urls):
            raise error.InvalidPlaylistIndexError(start, playlist_title)
        if end < start:
            raise error.IndicesOutOfOrderError()

        downloading_message = f"Downloading songs {font.apply('gb', start+1)} - {font.apply('gb', end)} from playlist {font.apply('gb', playlist_title)}"
        text_len = (len("Downloading songs ") + len(str(start)) + len(" - ") +
                    len(str(end)) + len(" from playlist ") +
                    len(playlist_title))
        print(downloading_message, f"\n{font.apply('gb', '─'*text_len)}")
        d = Downloader(
            list(enumerate(urls[start:end])),
            len(urls),
            album,
            directory,
            artist,
            is_album,
            titles,
            image,
            proxies,
            mp3,
        )
        d.start = start

        retry = True
        while retry:
            d.download()
            print(f"{font.apply('gb', '─'*text_len)}")
            print(
                f"{d.successful}/{len(urls[start:end])} downloaded successfully.\n"
            )
            if len(d.retry_urls) > 0:
                d.set_retries()
                urls_copy = d.urls.copy()
                user = input(
                    f"Retry {font.apply('fb', str(len(list(urls_copy))) + ' failed')} downloads? Y/N "
                )
                if not is_affirmative(user):
                    retry = False
                else:
                    print("\nRetrying.")
                    print(f"{font.apply('gb', '─'*len('Retrying.'))}")
            else:
                retry = False

    except (
            error.InvalidPlaylistIndexError,
            error.IndicesOutOfOrderError,
            error.TitlesNotFoundError,
            error.BadTitleFormatError,
    ) as e:
        print(f"Error: {e.message}")
예제 #6
0
from discord.ext import commands
import random
import requests

discordToken = ""
filename = "D:/Repos/AudioManiac-Bot/credentials.json"

if filename:
    with open(filename, 'r') as f:
        data = json.load(f)
        discordToken = data["discordtoken"]

yt = Youtube()
yt.Init()

dscgs = Discogs()
dscgs.Init()

description = "An example bot to showcase the discord.ext.commands extension module."
bot = commands.Bot(command_prefix='?', description=description)


@bot.event
async def on_ready():
    print('Logged in as')
    print(bot.user.name)
    print(bot.user.id)
    print('------')


@bot.command()