#!/usr/bin/env python3
import opml
import feedparser
import pathlib
import sys
import argparse
from glob import glob
from pprint import pprint
from time import time, mktime, strptime
from datetime import datetime
def main():
parser = argparse.ArgumentParser()
parser.add_argument('subs_filename', default='subs.xml')
args = parser.parse_args()
last_txt = pathlib.Path('last.txt')
if not last_txt.exists():
last_txt.write_text(str(time()))
print('Initialized a last.txt file with current timestamp.')
return
ptime = datetime.utcfromtimestamp(float(last_txt.read_text()))
outline = opml.parse(args.subs_filename)
urls = [item.xmlUrl for item in outline[0]]
videos = []
for i, url in enumerate(urls, start=1):
print(f'Parsing through channel {i} out of {len(urls)}', end='\r')
feed = feedparser.parse(url)
for item in feed['items']:
timef = item['published_parsed']
dt = datetime.fromtimestamp(mktime(timef))
if dt > ptime:
videos.append(item['link'])
print()
if videos:
print(f'{len(videos)} new videos found')
else:
print('Sorry, no new video found')
with open('vids.txt', 'w') as f:
f.write('\n'.join(videos))
last_txt.write_text(str(time()))
if __name__ == '__main__':
main()
{"text":"text","html5":"html","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"lua","bash":"sh","erlang":"erlang","go":"golang","c":"c_cpp","cpp":"c_cpp","diff":"diff","latex":"latex","sql":"sql","xml":"xml","0":"text","abap":"abap","actionscript":"actionscript","actionscript3":"actionscript","ada":"ada","apache":"apache_conf","applescript":"applescript","asm":"assembly_x86","autohotkey":"autohotkey","closure":"closure","cobol":"cobol","coffeescript":"coffee","cpp-winapi":"c_cpp","c_loadrunner":"c_cpp","c_mac":"c_cpp","c_winapi":"c_cpp","csharp":"csharp","d":"d","dart":"dart","dot":"dot","eiffel":"eiffel","fortran":"fortran","groovy":"groovy","haskell":"haskell","haxe":"haxe","ini":"ini","io":"io","java":"java","java5":"java","make":"makefile","matlab":"matlab","mysql":"mysql","objc":"objectivec","ocaml":"ocaml","pascal":"pascal","perl":"perl","perl6":"perl","postgresql":"pgsql","powershell":"powershell","prolog":"prolog","properties":"properties","rails":"ruby","rust":"rust","scala":"scala","scheme":"scheme","smarty":"smarty","tcl":"tcl","vala":"vala","vb":"vbscript","verilog":"verilog","vhdl":"vhdl","yaml":"yaml"}