Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- #/home/clockworkpc/bin/tubemixingsave.py
- # Released under a GPLv3 Licence by Clockwork PC 2013
- # www.clockworkpc.com.au
- # You are entitled to the following four freedoms:
- # Freedom 0: To run this program for any purpose
- # Freedom 1: To study how this program works and change it to make it do what you wish
- # Freedom 2: To redistribute copies so you can help your neighbour
- # Freedom 3: To distribute copies of your modified version to others
- import os, datetime, re, shutil
- now = datetime.datetime.now()
- nowstring = str(now.strftime("%Y-%m-%d_%A_%H%M%S"))
- #print nowstring
- tubemixingFolder = "/tmp/tubemixing/"
- videoFolder = os.getenv("HOME") + "/Videos/"
- saveFolder = videoFolder + "tubemixing/"
- originalVideosFolder = saveFolder + "OriginalVideos/"
- namedVideosFolder = saveFolder + "NamedVideos/"
- namedVideosFolderDateStamped = namedVideosFolder + nowstring + "/"
- videoListsFolder = saveFolder + "VideoLists/"
- videoListsFile = videoListsFolder + nowstring
- videoDataFolder = saveFolder + "gdata_text_files/"
- videoDataFolderDatestamped = saveFolder + "gdata_text_files/" + nowstring + "/"
- mp3Folder = os.getenv("HOME") + "/Music/tubemixing/" + nowstring + "/"
- gdataFeed = "http://gdata.youtube.com/feeds/api/videos/"
- #Create date-stamped folders
- os.system("mkdir " + namedVideosFolderDateStamped)
- os.system("mkdir " + mp3Folder)
- os.system("mkdir " + videoDataFolderDatestamped)
- # Match only videos that haven't already been saved
- a = os.listdir(tubemixingFolder)
- b = os.listdir(originalVideosFolder)
- c = [x for x in a if x not in b]
- # File-only os.listdir
- def saveFolder_files_list():
- for file in os.listdir(saveFolder):
- if os.path.isfile(os.path.join(saveFolder,file)):
- return file
- def files_only(saveFolder):
- return [filename for filename in os.listdir(saveFolder) if os.path.isfile(os.path.join(saveFolder, filename))]
- def files_only(videoDataFolderDatestamped):
- return [filename for filename in os.listdir(videoDataFolderDatestamped) if os.path.isfile(os.path.join(videoDataFolderDatestamped, filename))]
- # Copy NEW videos from Tubemixing temp folder to working folder
- for file in c:
- shutil.copyfile(tubemixingFolder+file,saveFolder+file)
- # Copy NEW videos to archive folder for future reference
- shutil.copyfile(tubemixingFolder+file,originalVideosFolder+file)
- # Remove prefix
- # NOTE: I set Tubemixing to save by default to 360p.
- # You'll have to tweak it if you save higher resolution by default.
- preFix1 = "tubemixing-360p-"
- preFix2 = "tubemixing--"
- #os.listdir(saveFolder)
- for filename in files_only(saveFolder):
- if filename.startswith(preFix1):
- os.rename(saveFolder+filename,saveFolder+filename[16:])
- # Second pass (some files are saved with preFix2)
- os.listdir(saveFolder)
- for filename in files_only(saveFolder):
- if filename.startswith(preFix2):
- os.rename(saveFolder+filename,saveFolder+filename[12:])
- # Use gdata to fetch video title from YouTube
- for filename in files_only(saveFolder):
- if len(filename) == 11:
- os.system("cd " + videoDataFolderDatestamped + " && wget " + gdataFeed + filename + " " + "-O" + " " + filename)
- # Parse video title from data fetched from YouTube
- print files_only(videoDataFolderDatestamped)
- for filename in files_only(videoDataFolderDatestamped):
- f = open(videoDataFolderDatestamped+filename)
- for line in f:
- if "<title type='text'>" in line:
- x = line
- r = re.compile("<title type='text'>(.*?)</title><content")
- m = r.search(x)
- if m:
- titleInfo = m.group(1)
- print titleInfo
- # Using video title, save properly named and suffixed files in a new date-stamped folder
- # Using os.system instead of shutil because shutil is a FUCKING SLOW MEMORY HOG
- os.system("cp -v " + saveFolder+filename + " " + '"' + namedVideosFolderDateStamped+titleInfo+".webm" + '"')
- # shutil.copyfile(saveFolder+filename,namedVideosFolderDateStamped+titleInfo+".webm")
- # Remove code-named video files, because originals have already been saved for reference
- # Unfortunately, the best I can do is use the clumsy rm command, which tries, but fails, to delete folders. This is not the way to go, but I can't find a more elegant way of clearing the working folder.
- for file in os.listdir(saveFolder):
- os.system("rm -v " + saveFolder + file)
- # Use AVconv (FFmpeg) to extract MP3 audio into the Music folder
- for filename in os.listdir(namedVideosFolderDateStamped):
- (str, filename)
- namedVideoFile = namedVideosFolderDateStamped + filename
- print namedVideoFile
- os.system("avconv -i " + '"' + namedVideoFile + '"' + " " + '"' + mp3Folder + filename + '.mp3"')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement