| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #!/usr/bin/python3
- from youtube_search import YoutubeSearch
- import os
- ##Import list of songs, artists from list.txt
- ##parse this file into a list of dictionaries
- ##for each dictionary pair, search youtube and output formatted links in file
- ##
- ##FUTURE - remove successful downloads from text file!!
- ## -assign each line read a number
- ## -remember numbers that are successful downloads
- ## -at end of script, delete lines from those numbers
- ## -OR-
- ## -Find lines that match successful downloads
- ##
- ## - Differentiae between Masters and Relesses when taking doscogs argument
- DOWNLOAD=True
- musicfile="list.txt"
- music=[]
- songnum = 0
- with open(musicfile) as f:
- for line in f:
- song={}
- (key, val) = line.split(", ")
- songnum += 1
- song['songnum'] = songnum
- song['Title'] = key
- song['Artist'] = val.rstrip()
- song['raw'] = line
- music.append(song)
- f.close()
- logresults=[]
- linkresults=[]
- completed=[]
- for song in music:
- searchterm = song['Title'] + " " + song['Artist'] + ' lyrics -Video'
- dictlink={}
- try:
- ytresult = YoutubeSearch(searchterm, max_results=1).to_dict()
- link = 'https://youtube.com' + ytresult[0]['link']
- dictlink['Title'] = song['Title']
- dictlink['Artist'] = song['Artist']
- dictlink['link'] = link
- linkresults.append(dictlink)
- logresults.append(song['Title'] + ", " + song['Artist'] + " Link Created")
- if DOWNLOAD:
- print("Attempting to download", song['Title'])
- try:
- os.system("youtube-dl --extract-audio --audio-format mp3 --output '%(title)s.%(ext)s' --ignore-errors " + link)
- completed.append(song['songnum'])
- logresults.append(song['Title'] + ", " + song['Artist'] + " Audio downloaded")
- print("Download Complete!")
- except e as youtubedlexception:
- logresults.append(song['Title'] + ", " + song['Artist'] + " FAILED TO DOWNLOAD SONG (youtube-dl)")
- print(youtubedlexception)
- else:
- print("ERROR: Not Downloading for some reason")
- except:
- logresults.append(song['Title'] + ", " + song['Artist'] + " COULD NOT CREATE LINK")
- print("------------")
- for r in logresults:
- print(r)
- print(completed)
- print("Cleaning completed files from list")
- linenum=0
- with open(musicfile, "r") as f:
- lines = f.readlines()
- with open(musicfile, "w") as f:
- for line in lines:
- linenum += 1
- if linenum not in completed:
- f.write(line)
- f.close()
|