Add youtube-dl and youtube-rss script
youtube-rss is another script I wrote to grab and update youtube rss feeds.main
parent
9972400bdf
commit
717c59b200
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,68 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import feedparser
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from urlparse import urlparse
|
||||||
|
|
||||||
|
def readConfigFile():
|
||||||
|
"""Read the config file ~/.youtube-rss and return a dictionary"""
|
||||||
|
path = os.path.expanduser("~/.youtube-rss")
|
||||||
|
configFile = open(path)
|
||||||
|
contents = configFile.read()
|
||||||
|
configFile.close()
|
||||||
|
return json.loads(contents)
|
||||||
|
|
||||||
|
def saveConfigFile(dictonary):
|
||||||
|
"""Take a dictonary and save it to the config file as json"""
|
||||||
|
newContents = json.dumps(dictonary, sort_keys=True, indent=4)
|
||||||
|
path = os.path.expanduser("~/.youtube-rss")
|
||||||
|
configFile = open(path, "w")
|
||||||
|
configFile.write(newContents)
|
||||||
|
configFile.close()
|
||||||
|
|
||||||
|
def getVideoIdFromUrl(url):
|
||||||
|
urlparts = urlparse(url)
|
||||||
|
args = urlparts.query.split("&")
|
||||||
|
for arg in args:
|
||||||
|
pair = arg.split("=")
|
||||||
|
if pair[0] == "v":
|
||||||
|
return pair[1]
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
def downloadVid(vidId, path):
|
||||||
|
if path[-1] != '/':
|
||||||
|
path = "%s/" % path
|
||||||
|
|
||||||
|
now = datetime.datetime.now()
|
||||||
|
|
||||||
|
sysCall = "youtube-dl -o \"%s%s_%%(stitle)s.%%(ext)s\" \"http://www.youtube.com/watch?v=%s\"" % \
|
||||||
|
(path, now.strftime("%Y-%m-%d"), vidId)
|
||||||
|
|
||||||
|
os.system(sysCall)
|
||||||
|
|
||||||
|
def checkForNew(channel):
|
||||||
|
feed = feedparser.parse(channel['link'])
|
||||||
|
for entry in feed.entries:
|
||||||
|
vidId = getVideoIdFromUrl(entry.link)
|
||||||
|
if vidId not in channel['watched']:
|
||||||
|
fullpath = os.path.expanduser(channel['destination'])
|
||||||
|
downloadVid(vidId, fullpath)
|
||||||
|
channel['watched'].append(vidId)
|
||||||
|
|
||||||
|
return channel
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""Downloads all the links"""
|
||||||
|
config = readConfigFile()
|
||||||
|
newconfig = []
|
||||||
|
for channel in config:
|
||||||
|
newconfig.append(checkForNew(channel))
|
||||||
|
|
||||||
|
saveConfigFile(newconfig)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
Loading…
Reference in New Issue