From 3edfd24181fe0534d90c78392037bce77fa96ab3 Mon Sep 17 00:00:00 2001 From: Christian Colglazier Date: Sat, 14 Aug 2021 21:03:27 -0400 Subject: [PATCH] Create podcast feed --- audible-converter.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/audible-converter.py b/audible-converter.py index 6d98bad..2880da0 100644 --- a/audible-converter.py +++ b/audible-converter.py @@ -1,5 +1,7 @@ import configparser from requests import get +from feedgen.feed import FeedGenerator +import datetime import os import re import json @@ -37,6 +39,9 @@ class AudibleBook(object): def getTitle(self): return self.getMetadata()['title'] + def getAuthor(self): + return self.getMetadata()['artist'] + def setTargetDir(self, targetDir): self.targetDir = targetDir @@ -88,6 +93,7 @@ def createConfig(configFilePath, filePath): configFilePath='./settings.conf' audibleBookPath=sys.argv[1] +serverURL=sys.argv[2] targetDir='.' # Check if config file exists and creates one if needed. @@ -112,3 +118,27 @@ book.removeDRM(name) book.splitChapters() book.getCover() +fg = FeedGenerator() +fg.id(name) +fg.title(book.getTitle()) +fg.author( {'name': book.getAuthor()} ) +fg.link( href='https://audible.com', rel='alternate' ) +fg.logo('{}/{}/cover.jpg'.format(serverURL, name)) +fg.subtitle(book.getMetadata()['copyright']) +fg.language('en') + +count = 0 +for c in book.getChapters(): + key = osSafeName(c['tags']['title']) + fe = fg.add_entry() + fe.id(key) + fe.title(c['tags']['title']) + fe.link(href='{0}/{1}/{1}-{2}.m4a'.format(serverURL, name, key)) + fe.enclosure('{0}/{1}/{1}-{2}.m4a'.format(serverURL, name, key), 0, 'audio') + fe.published(datetime.datetime(int(book.getMetadata()['date']), 6, 1, 0, count, tzinfo=datetime.timezone.utc)) + count += 1 + +rssfeed = fg.rss_str(pretty=True) +fg.rss_file('{}/rss.xml'.format(outputDir)) + +print()