PageRenderTime 28ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/plugin.video.nbc.universal/scifi.py

http://bluecop-xbmc-repo.googlecode.com/
Python | 115 lines | 93 code | 17 blank | 5 comment | 8 complexity | 0ecea6ee034ecab984d7512c004b963b MD5 | raw file
Possible License(s): MIT
  1. import urllib, urllib2
  2. import os, re, sys, md5, string
  3. import xbmc, xbmcgui, xbmcplugin
  4. from elementtree.ElementTree import *
  5. from pyamf.remoting.client import RemotingService
  6. baseurl = 'http://www.scifi.com/rewind/'
  7. class ElementWrapper:
  8. def __init__(self, element):
  9. self._element = element
  10. def __getattr__(self, tag):
  11. if tag.startswith("__"):
  12. raise AttributeError(tag)
  13. return self._element.findtext(tag)
  14. class RSSWrapper(ElementWrapper):
  15. def __init__(self, feed):
  16. channel = feed.find("channel")
  17. ElementWrapper.__init__(self, channel)
  18. self._items = channel.findall("item")
  19. def __getitem__(self, index):
  20. return ElementWrapper(self._items[index])
  21. def getHTML( url ):
  22. try:
  23. print 'USA --> getHTML :: url = '+url
  24. req = urllib2.Request(url)
  25. req.addheaders = [('Referer', 'http://www.usa.com'),
  26. ('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7)')]
  27. response = urllib2.urlopen(req)
  28. link=response.read()
  29. response.close()
  30. except urllib2.URLError, e:
  31. print 'Error code: ', e.code
  32. return False
  33. else:
  34. return link
  35. def shows():
  36. url = 'http://www.scifi.com/rewind/playlist.xml'
  37. showsxml=getHTML(url)
  38. xml = ElementTree(fromstring(showsxml))
  39. shows = []
  40. for item in xml.getroot().findall('series'):
  41. show = []
  42. show.append(item.find('id').text)
  43. show.append(item.find('name').text)
  44. show.append(baseurl + item.find('thumbnailUrl').text)
  45. shows.append(show)
  46. return shows
  47. def episodes(url):
  48. rssurl = 'http://video.scifi.com/player/feeds/?level=' + url + '&type=placement&showall=1'
  49. showsxml=str(getHTML(rssurl))
  50. tree = ElementTree(fromstring(showsxml))
  51. feed = RSSWrapper(tree.getroot())
  52. print "FEED", repr(feed.title)
  53. episodes = []
  54. for item in feed:
  55. episode = []
  56. url = item.link.replace('&dst=rss|scififullepisode|','')
  57. episode.append(url)
  58. name = item.title.title()
  59. episode.append(name)
  60. episode.append('')#Blank thumb right now don't know how to handle : in rss values
  61. episodes.append(episode)
  62. return episodes
  63. def getsmil(vid):
  64. gw = RemotingService(url='http://video.nbcuni.com/amfphp/gateway.php',
  65. referer='http://video.nbcuni.com/embed/player_3-x/External.swf',
  66. user_agent='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7)',
  67. )
  68. ClipAll_service = gw.getService('getClipInfo.getClipAll')
  69. geo ="US"
  70. num1 = " "
  71. #num2 = "-1"
  72. response = ClipAll_service(vid,geo,num1)#,num2)
  73. print response
  74. if 'errordis' in response.keys():
  75. xbmcgui.Dialog().ok(xbmc.getLocalizedString(30005), xbmc.getLocalizedString(30005))
  76. return
  77. else:
  78. url = 'http://video.nbcuni.com/' + response['clipurl']
  79. return url
  80. #get from amf server congfig.
  81. def getrtmp():
  82. #rtmpurl = 'rtmp://cp37307.edgefcs.net:443/ondemand'
  83. gw = RemotingService(url='http://video.nbcuni.com/amfphp/gateway.php',
  84. referer='http://video.nbcuni.com/embed/player_3-x/External.swf',
  85. user_agent='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7)',
  86. )
  87. ClipAll_service = gw.getService('getConfigInfo.getConfigAll')
  88. #Not sure where this number is coming from need to look further at action script.
  89. num1 = "19100"
  90. response = ClipAll_service(num1)
  91. rtmphost= response['akamaiHostName']
  92. app = response['akamaiAppName']
  93. rtmpurl = 'rtmp://'+rtmphost+':443/'+app
  94. return rtmpurl
  95. #constant right now. not sure how to get this be cause sometimes its another swf module the player loads that access the rtmp server
  96. def getswfUrl():
  97. swfUrl = "http://video.nbcuni.com/embed/player_3-x/External.swf"
  98. return swfUrl