Skip to content

Instantly share code, notes, and snippets.

@bkram
Last active January 17, 2018 08:50
Show Gist options
  • Save bkram/d864f472735e556f55cbd78df772d46b to your computer and use it in GitHub Desktop.
Save bkram/d864f472735e556f55cbd78df772d46b to your computer and use it in GitHub Desktop.
Experimental RSS Feed generator of Radio Stad Den Haag Sundaynight Live Weekly Shows
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
import datetime
import hashlib
import urllib
import requests
import rfeed
showsurl = "https://ewagro-2.stackstorage.com/public-share/7S7R1FuhjQKDaFf/list"
showsparams = {'public': 'true',
'token': '7S7R1FuhjQKDaFf',
'type': 'folder',
'offset': '0',
'limit': '5000',
'sortBy': 'mtime',
'order': 'desc',
'query': ''}
def downloadurl(path):
preview = 'https://ewagro-2.stackstorage.com/public-share/7S7R1FuhjQKDaFf/preview'
previewparams = {'path': path, 'mode': 'full'}
url = preview + '?' + urllib.parse.urlencode(previewparams)
return url
def createitem(filename, title, pubdate, url, size, mediatype, ):
guid = hashlib.md5(filename.encode('utf-8')).hexdigest()
item = rfeed.Item(
title=title,
pubDate=pubdate,
description=title,
enclosure=rfeed.Enclosure(url=url, length=size, type=mediatype),
guid=rfeed.Guid(guid, isPermaLink=False)
)
return item
def createfeed(rss):
feed = rfeed.Feed(
title="Radio Stad Den Haag Sundaynight Live",
link="http://www.radiostaddenhaag.com",
description="Experimental RSS Feed of Radio Stad Den Haag Sundaynight Live Weekly Shows",
language="nl-NL",
lastBuildDate=datetime.datetime.now(),
items=rss,
image=rfeed.Image(url='http://www.radiostaddenhaag.com/logo/header-live-player.jpg',
link='http://www.radiostaddenhaag.com/', title='Radio Stad Den Haag'))
return feed.rss()
def get_shows():
rss = []
for year in range(2021, 2007, -1):
# print(year)
showsparams['dir'] = '/Stad Sundaynight Live/' + str(year)
r = requests.get(showsurl, params=showsparams)
resp = requests.get(r.url)
try:
shows = resp.json()
for show in shows['nodes']:
if show['mimetype'] == 'audio/mpeg':
path = show['path']
filename = path.split('/')[-1]
filesize = show['fileSize']
filetype = show['mediaType']
description = filename.split('.')[0].replace('-', ' ')
airdate = description.split(' ')[3]
showdate = datetime.datetime.strptime(airdate.split('_')[0], '%Y%m%d')
fileurl = downloadurl(path)
rss.append(createitem(filename, description, showdate, fileurl, filesize, filetype))
except:
pass
return rss
def get_latest():
rss = []
showsparams['dir'] = '/- LATEST RECORDINGS/'
r = requests.get(showsurl, params=showsparams)
resp = requests.get(r.url)
try:
shows = resp.json()
for show in shows['nodes']:
if show['mimetype'] == 'audio/mpeg':
path = show['path']
filename = path.split('/')[-1]
filesize = show['fileSize']
filetype = show['mediaType']
description = filename.split('.')[0].replace('-', ' ')
airdate = description.split(' ')[3]
showdate = datetime.datetime.strptime(airdate.split('_')[0], '%Y%m%d')
fileurl = downloadurl(path)
if "Sundaynight" in description:
rss.append(createitem(filename, description, showdate, fileurl, filesize, filetype))
except:
pass
return rss
def main():
rssfeed = get_latest() + get_shows()
f = open('/var/www/html/rsdh-ssl.xml', 'w')
f.write(createfeed(rssfeed))
f.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment