3 # tvfs - a simple fuse-module to mount a tv-guide as a filesystem
4 # Copyright (C) 2008, Kristian Rumberg (kristianrumberg@gmail.com)
6 # Permission to use, copy, modify, and/or distribute this software for any
7 # purpose with or without fee is hereby granted, provided that the above
8 # copyright notice and this permission notice appear in all copies.
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
25 def __init__(self
, url
):
29 stream
= urllib
.urlopen(self
.url
)
31 f
= tempfile
.NamedTemporaryFile()
34 gs
= gzip
.open(f
.name
)
41 def __init__(self
, url
):
45 def __init__(self
, name
, baseurl
):
47 self
.baseurl
= baseurl
51 if None == self
.today
:
52 d
= datetime
.datetime
.now()
53 path
= self
.baseurl
+ "_" + d
.strftime("%Y-%m-%d") + ".xml.gz"
54 self
.today
= ProgramListing(path
)
62 basepath
= "http://tv.swedb.se/xmltv/"
65 istream
= GZStream(basepath
+ "channels.xml.gz")
66 doc
= libxml2
.parseDoc(istream
.read())
68 namelist
= doc
.xpathEval('//display-name/text()')
69 idlist
= doc
.xpathEval('//channel/attribute::id')
70 baselist
= doc
.xpathEval('//base-url/text()')
72 for name
,idn
,base
in zip(namelist
,idlist
,baselist
):
73 name
= str(name
.content
)
74 idn
= str(idn
.content
)
75 base
= str(base
.content
)
76 self
.cl
.append( Channel(name
, base
+ idn
))
79 return self
.cl
.__iter
__()
87 if __name__
== "__main__":