History of PyPodcastGen

SnippSnappHome | RecentChanges | Preferences


Revision 2 . . February 15, 2006 9:46 am by 81-232-78-86-no46.tbcn.telia.com
Revision 1 . . February 15, 2006 9:44 am by 81-232-78-86-no46.tbcn.telia.com
  

Difference (from prior major revision) (no other diffs)

Changed: 1,7c1,114

code



code2


#/usr/bin/python2.3
import datetime,urlparse,os
import PyRSS2Gen
import eyeD3



class Audiofile:
def __init__(self, collection, basename):
self.basename = basename
self.path = os.path.join(collection.dirname, basename)
self.link = urlparse.urljoin(collection.urlbase, basename)

tag = eyeD3.Tag()
tag.link(self.path)

mp3file = eyeD3.Mp3AudioFile(self.path)

title = tag.getTitle()
if title: self.title = title
else: self.title = basename[:-4]

description = tag.getComment()
if description: self.description = description
else: self.description = basename[:-4]

self.guid = PyRSS2Gen.Guid(self.link)
self.size = os.path.getsize(self.path)
self.enclosure = PyRSS2Gen.Enclosure(self.link, mp3file.getPlayTimeString(), "audio/mpeg")
self.pubdate = datetime.datetime.fromtimestamp(os.path.getmtime(self.path))


class Audiofiles:
"""
A collection of audiofiles and some metadata, used as the basis for at

"""

def __init__(self,urlbase,title, link, description, language):


self.urlbase = urlbase
self.title = title
self.link = link
self.description = description
self.language = language

self.data = []

self.generator = PyRSS2Gen._generator_name

def append(self,audiofile):
self.data.append(audiofile)

def readfolder(self,dirname):
self.dirname = dirname
files = os.listdir(dirname)
for f in files:
path = os.path.join(dirname,f)
if os.path.exists(path) and os.path.isfile(path) and path.endswith(".mp3"):


audiofile = Audiofile(self, f)
self.append(audiofile)

def rssitems(self,n=10):
result = []
for audiofile in self.data:

rssitem = PyRSS2Gen.RSSItem(title = audiofile.title,
link = audiofile.link,
description = audiofile.description,
guid = audiofile.guid,
pubDate = audiofile.pubdate,
enclosure = audiofile.enclosure)
result.append(rssitem)

waste = [(i.pubDate,i) for i in result]
waste.sort()
waste.reverse()
waste = waste[:n]
result = [pair[1] for pair in waste]

return result

def getrss(self):
return PyRSS2Gen.RSS2(title = self.title,
link = self.link,
description = self.description,
language = self.language,
generator = self.generator,
lastBuildDate = datetime.datetime.now(),
items = self.rssitems())



if __name__ == "__main__":
#Example usage

audiofiles = Audiofiles("http://path/to/mp3/",
"A title for your podcast",
"http://yourdomain.com/aboutyourpodcast",
"A long winded description of your very fine podcast",
"en")

audiofiles.readfolder("/path/to/your/mp3/folder")
outfilename = "/path/to/your/feedfile.xml"

rss = audiofiles.getrss()
rss.write_xml(open(outfilename, "w"))




SnippSnappHome | RecentChanges | Preferences
Search: