Example #1
0
	def raise_error(self, code, title, message):
		if code in [500, 502, 503, 504, 520, 521, 522, 524]:
			message = "Temporary " + message
		from dudehere.routines.plugin import Plugin
		image = vfs.join(ARTWORK, 'trakt_error.png')
		if vfs.exists(image) is False:
			image = vfs.join(ROOT_PATH, 'icon.png')
		Plugin().error_message(title, message, image=image)
Example #2
0
 def raise_error(self, code, title, message):
     from dudehere.routines.plugin import Plugin
     from dudehere.routines.vfs import VFSClass
     image = VFSClass().join(ROOT_PATH, 'icon.png')
     Plugin().error_message(title, message, image=image)
Example #3
0
 def clean_queue(self):
     from dudehere.routines.plugin import Plugin
     ok = Plugin().confirm("Clean Queue", "Remove complete and failed?")
     if ok: self._call("clear_queue")
     return ok
Example #4
0
 def search_movies(self,
                   title,
                   year,
                   imdb_id=None,
                   tmdb_id=None,
                   return_sources=False):
     self._start_time = time.time()
     DB.connect()
     self.hashid = hashlib.md5(title + str(year)).hexdigest()
     last_hash_id = Plugin().get_property('last_hash_id')
     if self.hashid == last_hash_id:
         self.skip_autoplay = True
     else:
         self.skip_autoplay = False
         Plugin().set_property('last_hash_id', self.hashid)
     if self.cache_results:
         self.processor = Thread(target=self.process_queue)
         self.processor.start()
     self._get_active_resolvers()
     args = {
         "title": title,
         "year": year,
         "domains": self.domains,
         "imdb_id": imdb_id,
         "tmdb_id": tmdb_id
     }
     workers = ThreadPool(self.threadpool_size)
     if self.show_scraper_progress:
         self.PB = ProgressBar()
         self.PB.new('Searching for Movie Sources', self.enabled_scrapers)
         self.PB.results = 0
     self.threadpool_size = self.enabled_scrapers if self.threadpool_size == 0 else self.threadpool_size
     for index in range(0, self.enabled_scrapers):
         if self.show_scraper_progress and self.PB:
             if self.PB.is_canceled(): break
         service = self.get_scraper_by_index(index).service
         if self.cache_results:
             SQL = "SELECT result FROM fresh_cache WHERE hash=? AND service=?"
             results = DB.query(SQL, [self.hashid, service],
                                force_double_array=True)
             cached = [pickle.loads(r[0]) for r in results]
         else:
             cached = False
         if cached:
             number = len(cached)
             ADDON.log("Search returned %s cached links from %s" %
                       (number, service))
             if self.show_scraper_progress and self.PB:
                 self.PB.results += number
                 self.PB.next(
                     'Found [COLOR yellow]%s[/COLOR] cached sources (%s total)'
                     % (number, self.PB.results))
             self.search_results += cached
         else:
             if 'search_movie' in dir(self.get_scraper_by_index(index)):
                 if self.get_scraper_by_index(index).require_auth and (
                         ADDON.get_setting(service + '_username') == ''
                         or ADDON.get_setting(service + '_password') == ''):
                     continue
                 workers.queueTask(
                     self.get_scraper_by_index(index).search_movie,
                     args=args,
                     taskCallback=self.process_results)
             else:
                 print "bbbbbasdf"
                 print self.get_scraper_by_index(index).service
     workers.joinAll()
     resolved_url = None
     if self.cache_results:
         self.queue_SQL('EOL')
     DB.disconnect()
     if return_sources:
         return self.process_sources(self)
     else:
         raw_url, autoplay = self.select_stream()
         if raw_url:
             resolved_url = self.resolve_url(raw_url, autoplay)
         return resolved_url
Example #5
0
	def notify(self, title, message):
		from dudehere.routines.plugin import Plugin
		image = vfs.join(ROOT_PATH, 'icon.png')
		Plugin().error_message(title, message, image=image)
Example #6
0
import json
import urllib
import urllib2
import cookielib
import math
from dudehere.routines import *
from dudehere.routines.vfs import VFSClass
from dudehere.routines.plugin import Plugin
vfs = VFSClass()
plugin = Plugin()
COOKIE_PATH = vfs.join(DATA_PATH,'cookies')
MAX_PAGES = 3

class KatAPI():
	def __init__(self):
		self.base_url = 'https://kat.cr/'
		self.search_uri = 'json.php'
		self.headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
			'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
			'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
			'Accept-Encoding': 'none',
			'Accept-Language': 'pl-PL,pl;q=0.8',
			'Connection': 'keep-alive'
		}
	
	def search(self, title, season='', episode='', year='', return_results=False, finished=True):
		if season and episode:
			query = "%s S%sE%s" % (title, str(season).zfill(2), str(episode).zfill(2))
			media = 'episode'
		elif year:
			query = "%s %s" % (title, year)