Advertisement
Guest User

bestreams.net

a guest
Feb 19th, 2014
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. """
  2. urlresolver XBMC Addon
  3. Copyright (C) 2011 t0mm0
  4.  
  5. This program is free software: you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation, either version 3 of the License, or
  8. (at your option) any later version.
  9.  
  10. This program is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. """
  18.  
  19. from t0mm0.common.net import Net
  20. from urlresolver.plugnplay.interfaces import UrlResolver
  21. from urlresolver.plugnplay.interfaces import PluginSettings
  22. from urlresolver.plugnplay import Plugin
  23. import urllib,urllib2
  24. from urlresolver import common
  25. import re,xbmc
  26.  
  27. class FilenukeResolver(Plugin, UrlResolver, PluginSettings):
  28. implements = [UrlResolver, PluginSettings]
  29. name = "bestreams.net"
  30.  
  31. def __init__(self):
  32. p = self.get_setting('priority') or 100
  33. self.priority = int(p)
  34. self.net = Net()
  35. # http://bestreams.net/9hf2d7bjk5zd
  36. self.pattern = 'http://((?:www.)?bestreams.net)/([0-9a-zA-Z]+)*'
  37. #self.pattern = 'http://((?:www.)?play44.net)/embed\.php?.*?vid=([0-9a-zA-Z_\-\./]+)[\?&]*'
  38. #self.pattern = 'http://((?:www.)?videofun.me)/embed/(.+?)'
  39.  
  40. def get_url(self, host, media_id):
  41. return 'http://bestreams.net/%s' % (media_id)
  42.  
  43. def get_host_and_id(self, url):
  44. r = re.search(self.pattern, url)
  45. if r: return r.groups()
  46. else: return False
  47.  
  48. def valid_url(self, url, host):
  49. if self.get_setting('enabled') == 'false': return False
  50. return re.match(self.pattern, url) or self.name in host
  51.  
  52. def get_media_url(self, host, media_id):
  53. web_url = self.get_url(host, media_id)
  54. post_url = web_url
  55. hostname = self.name
  56. common.addon.log(media_id)
  57. common.addon.log(web_url)
  58. try:
  59. resp = self.net.http_GET(web_url)
  60. html = resp.content
  61. except urllib2.URLError, e:
  62. common.addon.log_error(hostname+': got http error %d fetching 1st url %s' % (e.code, web_url))
  63. return self.unresolvable(code=3, msg='Exception: %s' % e) #return False
  64.  
  65. try:
  66. #print html
  67. #print "---"
  68. data = {}; r = re.findall(r'type="hidden" name="(.+?)"\s* value="?(.+?)">', html); data['usr_login']=''
  69. for name, value in r: data[name] = value
  70. data['imhuman']='Proceed to video'; data['btn_download']='Proceed to video'
  71. xbmc.sleep(8000)
  72. html = self.net.http_POST(post_url, data).content
  73. except urllib2.URLError, e:
  74. common.addon.log_error(hostname+': got http error %d fetching 2nd url %s' % (e.code, web_url))
  75. return self.unresolvable(code=3, msg='Exception: %s' % e) #return False
  76.  
  77. r = re.search('file\s*:\s*"(http://.+?)"', html)
  78. if r:
  79. #stream_url = urllib.unquote_plus(r.group(1))
  80. stream_url = str(r.group(1))
  81. print stream_url
  82. else:
  83. common.addon.log_error(hostname+': stream url not found')
  84. return self.unresolvable(code=0, msg='no file located') #return False
  85. return stream_url
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement