def furkJsonRequest(method,
                    req,
                    args={},
                    returnStatus=False,
                    anon=False,
                    conn=False,
                    silent=False,
                    passVersions=False):
    if settings.getSetting("proxy") == 'true':
        http_proxy = settings.getSetting("proxyurl")
        https_proxy = settings.getSetting("proxyurl")
        proxyDict = {"http": http_proxy, "https": https_proxy}
    else:
        proxyDict = {}

    apikey = settings.getSetting('furk_apikey')
    req = 'https://www.furk.net/api/' + req
    req = req.replace("%%API_KEY%%", apikey)
    if method == 'POST':
        if not anon:
            args['username'] = username
            args['password'] = pwd
            args['hide_watchlisted'] = 'true'

        jdata = json.dumps(args)
        print(req)
        print(jdata)
        request = requests.post(req, data=jdata, proxies=proxyDict)
    elif method == 'GET':
        jdata = json.dumps(args)
        request = requests.post(req, params=jdata, proxies=proxyDict)
        #print(req)
        #print("trakt json url: "+req)
    #conn.go()

    #print request.json()
    try:
        data = request.json()
    except:
        data = None
    if data == None:
        return None
    if 'status' in data:
        if data['status'] == 'error':
            print("traktQuery: Error: " + str(data['error']))
            if returnStatus:
                return data
            if not silent: print("Furk Library", str(data['error']))  # Error
        #login(settings.getSetting('furk_login'),settings.getSetting('furk_password'))
        return data

    return data
Beispiel #2
0
def startup():
	if len(settings.getSetting('username')) < 1:
		dialog = xbmcgui.Dialog()
		dialog.ok("Login", "Please login to your Streamcub account.",
			"Get a free account at www.streamcub.com")
		settings.openSettings()

	if len(settings.getSetting('username')) > 0:
		dialog = xbmcgui.Dialog()
		login_ok = furklib.login(settings.getSetting('username'),settings.getSetting('password'));
		if not login_ok and dialog.yesno("Login failed", "Do you want to view your settings?"):
			settings.openSettings()
		return login_ok
	else:
		return False
def furkJsonRequest(method, req, args={}, returnStatus=False, anon=False, conn=False, silent=False, passVersions=False):
    if settings.getSetting("proxy") == 'true':
        http_proxy = settings.getSetting("proxyurl")
        https_proxy = settings.getSetting("proxyurl")
        proxyDict = {
              "http"  : http_proxy,
              "https" : https_proxy
            }
    else:
        proxyDict = {}

    apikey = settings.getSetting('furk_apikey')
    req = 'https://www.furk.net/api/' + req
    req = req.replace("%%API_KEY%%",apikey)
    if method == 'POST':
            if not anon:
                args['username'] = username
                args['password'] = pwd
                args['hide_watchlisted']= 'true'

            jdata = json.dumps(args)
            print(req)
            print(jdata)
            request = requests.post(req, data=jdata , proxies=proxyDict)
    elif method == 'GET':
            jdata = json.dumps(args)
            request = requests.post(req, params=jdata , proxies=proxyDict)
            #print(req)
            #print("trakt json url: "+req)
    #conn.go()

    #print request.json()
    try:
       data = request.json()
    except:
       data = None
    if data == None:
       return None
    if 'status' in data:
        if data['status'] == 'error':
            print("traktQuery: Error: " + str(data['error']))
            if returnStatus:
                return data
            if not silent: print ("Furk Library", str(data['error'])) # Error
        #login(settings.getSetting('furk_login'),settings.getSetting('furk_password'))
        return data

    return data
def getCriticker():
	apikey = settings.getSetting('criticker_apikey')
	if len(apikey) < 5 :
		common.Notification ('Error','Please set up Criticker key in settings')
		settings.openSettings()
		return
	url = 'http://api.criticker.com/handler.php?CritickerKey=%%API_KEY%%&Function=RecommendFilm'
        url = url.replace("%%API_KEY%%",apikey)
	print url
        req = urllib2.Request(url)
        req.add_header('User-Agent', "%s %s" % (sys.modules[ "__main__" ].__plugin__, sys.modules[ "__main__" ].__version__))
        response = urllib2.urlopen(req)
        dom = parse(response)
        try:
		title = dom.getElementsByTagName("FilmName")[0].firstChild.data
		year = dom.getElementsByTagName("FilmYear")[0].firstChild.data
		avgtier = dom.getElementsByTagName("AvgTier")[0].firstChild.data
	except:
		common.Notification ('Error','Please check your Criticker key in settings')
		settings.openSettings()
		return

	s= '{0} ({1}) r:{2}'.format(title,year,avgtier)
	common.createMovieListItem(s,title,year)
	url = sys.argv[0]+'?action=' 
	common.createListItem('Another',True, url + 'criticker')
	common.endofDir()
        return 
Beispiel #5
0
def displayTraktMenu():
	
	url = sys.argv[0]+'?action='
	common.createListItem('Search in Furk cache', True, url+'search')
	common.createListItem('My Furk files', True, url+'myFiles')
	common.createListItem('Search Movie', True, url+'trakt_SearchMovies')	
	common.createListItem('Search TV Show', True, url+'trakt_SearchShows')
	#common.createListItem('Recommended Movies', True, url+'trakt_MovieGenres')
	common.createListItem('Trending Movies', True, url +'trakt_TrendingMovies')
	#common.createListItem('Recommended TV Shows', True, url +'trakt_ShowGenres')
	common.createListItem('Trending TV Shows', True, url +'trakt_TrendingShows')
	common.createListItem('Movies', True, url +'trakt_ShowLists&user=cloudberry&type=Movie')
	common.createListItem('TV Shows', True, url +'trakt_ShowLists&user=cloudberry&type=Show')

	common.createListItem('Featured', True, url +'trakt_getList&user=cloudberry&slug=movie-featured')
	common.createListItem('Most Popular', True, url +'trakt_getList&user=cloudberry&slug=movie-most-popular')
	common.createListItem('Highly rated', True, url +'trakt_getList&user=cloudberry&slug=movie-highly-rated')
	
	common.createListItem('Featured', True, url +'trakt_getList&user=cloudberry&slug=show-featured')
	common.createListItem('Most Popular', True, url +'trakt_getList&user=cloudberry&slug=show-most-popular')
	common.createListItem('Highly rated', True, url +'trakt_getList&user=cloudberry&slug=show-highly-rated')

	if settings.getSetting('adult_menu') == 'true':
		common.createListItem('Adult', True, url +'trakt_ShowAdultLists')

	common.createListItem('IMDB Top 250', True, url +'trakt_getList&user=mmounirou&slug=imdb-best-250-movies')
	common.createListItem('Movies of 2013', True, url +'trakt_getList&user=BenFranklin&slug=movies-of-2013')
	common.endofDir()
def SearchDialog(type,title,year,season,number,go=False):
	if go:
		updateDialog = xbmcgui.DialogProgress()
		updateDialog.create("Furk Library", "Searching")
		updateDialog.update(20, "searching", title)
	oneclick = settings.getSetting("oneclick")
	if type == 'Show':
		search = searcherLib.ShowSearch(title, season, number, oneclick)
	else:
		search = searcherLib.MovieSearch(title, year, oneclick)

	if len(search.qualities) < 2 and search.oneClickSatisfied == False and search.mediatype=='Show':
			common.Notification('Furk Library 2', 'making a deep search')
			search.deepsearch()
	if search.oneclick:
		if search.oneClickSatisfied:
			common.Notification('Furk Library 2', 'found one click')
			return search.best_quality_result.dir['name'],search.best_quality_result.mediaUrl()
		elif search.best_quality_result:
			common.Notification('Furk Library 2', 'one click not found playing nearest')
			quality_select = 0
		else:
			pass #see what are our options
	if  search.valids > 1 :
		dialog = xbmcgui.Dialog()
        if go: #list items as list item
            for myresult in search.results:
                common.createListItem(myresult.text, False, myresult.mediaUrl())
            common.endofDir()
        else:
		    quality_select = dialog.select('Select quality', search.quality_options())
	elif search.valids == 1:
		common.Notification('Found only:',search.results[0].text.split(' ',1)[0])
		quality_select = 0
    def onInit(self):
        self.background = self.getControl(101)
        self.getControl(102).setVisible(False)
        self.background.setVisible(True)
        self.currentIdx=settings.getSetting('last_trailer')
        

        self.playerTimer = threading.Timer(2.0, self.playerTimerAction)
        self.playerTimer.name = "PlayerTimer"
        self.infoTimer = threading.Timer(5.0, self.hideInfo)
        # self.myEPG = EPGWindow("script.FurkTrailers.EPG.xml", ADDON_INFO, "default")
        # self.myEPG.MyOverlayWindow = self
        # Don't allow any actions during initialization
        #self.actionSemaphore.acquire()
        if self.currentIdx == '' or self.currentIdx > :
            self.currentIdx = 0
        
    
    # Akin
        refresh = createTrailers.getReco(1)
        if refresh:
            self.currentIdx = 0
        
        self.timeStarted = time.time()
        self.notificationTimer = threading.Timer(5, self.notificationAction)
        self.currentChannel = 1
        self.setChannel(self.currentChannel)
        self.background.setVisible(False)
        self.startNotificationTimer()
        self.playerTimer.start()



        #self.actionSemaphore.release()
        self.log('onInit return')
Beispiel #8
0
def getCriticker():
    apikey = settings.getSetting('criticker_apikey')
    if len(apikey) < 5:
        common.Notification('Error', 'Please set up Criticker key in settings')
        settings.openSettings()
        return
    url = 'http://api.criticker.com/handler.php?CritickerKey=%%API_KEY%%&Function=RecommendFilm'
    url = url.replace("%%API_KEY%%", apikey)
    print url
    req = urllib2.Request(url)
    req.add_header(
        'User-Agent', "%s %s" % (sys.modules["__main__"].__plugin__,
                                 sys.modules["__main__"].__version__))
    response = urllib2.urlopen(req)
    dom = parse(response)
    try:
        title = dom.getElementsByTagName("FilmName")[0].firstChild.data
        year = dom.getElementsByTagName("FilmYear")[0].firstChild.data
        avgtier = dom.getElementsByTagName("AvgTier")[0].firstChild.data
    except:
        common.Notification('Error',
                            'Please check your Criticker key in settings')
        settings.openSettings()
        return

    s = '{0} ({1}) r:{2}'.format(title, year, avgtier)
    common.createMovieListItem(s, title, year)
    url = sys.argv[0] + '?action='
    common.createListItem('Another', True, url + 'criticker')
    common.endofDir()
    return
Beispiel #9
0
def searchFurk(query, limit=300):
    filter = 'all'
    if settings.getSetting('search_only_cached_files') == 'true':
        filter = 'cached'
    moderated = 'no'
    if settings.getSetting('adult_filter') == 'true':
        moderated = 'yes'

    data = furkJsonRequest('GET', ('plugins/metasearch?api_key=%%API_KEY%%&filter='+filter+'&q={0}&moderated='+moderated+'&limit=' + str(limit)).format(urllib.quote(query)))

    if data == None:
        print("Error in request from 'searchFurk'")
	return None
    try:	
        return data['files']
    except:
	return None
def traktJsonRequest(method,
                     req,
                     args={},
                     returnStatus=False,
                     anon=False,
                     conn=False,
                     silent=False,
                     passVersions=False):
    if settings.getSetting("proxy") == 'true':
        http_proxy = settings.getSetting("proxyurl")
        https_proxy = settings.getSetting("proxyurl")
        proxyDict = {"http": http_proxy, "https": https_proxy}
    else:
        proxyDict = {}
    req = 'http://api.trakt.tv' + req
    req = req.replace("%%API_KEY%%", apikey)
    req = req.replace("%%USERNAME%%", settings.getSetting('trakt_login'))
    print req
    if method == 'POST':
        if not anon:
            args['username'] = settings.getSetting('trakt_login')
            args['password'] = settings.getSetting('trakt_password')
        if passVersions:
            args['plugin_version'] = __settings__.getAddonInfo("version")
            args['media_center'] = 'xbmc'
            args['media_center_version'] = xbmc.getInfoLabel(
                "system.buildversion")
            args['media_center_date'] = xbmc.getInfoLabel("system.builddate")
        jdata = json.dumps(args)
        # print(req)
        # print(jdata)
        request = requests.post(req, data=jdata, proxies=proxyDict)

    elif method == 'GET':
        args['username'] = settings.getSetting('trakt_login')
        args['password'] = settings.getSetting('trakt_password')
        request = requests.get(req, params=args, proxies=proxyDict)
        print request.encoding

    print 'Response: ' + request.content
    #data = response.json()
    try:
        #response = conn.getresponse()
        data = request.json()

    except:
        return None

    if 'status' in data:
        if data['status'] == 'failure':
            print("traktQuery: Error: " + str(data['error']))
            if returnStatus:
                return data
            return None

    return data
def setup():
    if FIRST_TIME_STARTUP:
        dialog = xbmcgui.Dialog()
        dialog.ok("Furk Library BY alicanlakot", "..", "Welcome to first time",
                  "setup")
        if not check_sources_xml(MOVIES_PATH) or not check_sources_xml(
                TV_SHOWS_PATH):
            if dialog.yesno(
                    "Setup folder",
                    "The directories used are not listed as video sources.",
                    "Do you want to add them to sources.xml now?"):
                setup_sources()
        data = traktlib.testUser(settings.getSetting('trakt_login'),
                                 settings.getSetting('trakt_password'))
        if data['status'] == 'failure':
            common.Notification(
                data['status'],
                'Please check your username for Trakt and Furk in config')
            settings.openSettings()
            data = traktlib.testUser(settings.getSetting('trakt_login'),
                                     settings.getSetting('trakt_password'))
            common.Notification('Tried again:', data['status'])
        if len(settings.getSetting('furk_apikey')) < 5:
            furklib.login(settings.getSetting('furk_login'),
                          settings.getSetting('furk_password'))

        dialog.ok("Furk Library BY alicanlakot", "..",
                  "You can start this again", "from menu")
        settings.setSetting('first_time_startup', 'false')
    def onInit(self):
        self.log('onInit')

        self.background = self.getControl(101)
        self.getControl(102).setVisible(False)
        self.background.setVisible(True)
        updateDialog = xbmcgui.DialogProgress()
        updateDialog.create("FurkTrailers", "Initializing")
           self.currentIdx=settings.getSetting('last_trailer')
Beispiel #13
0
def traktJsonRequest(method, req, args={}, returnStatus=False, anon=False, conn=False, silent=False, passVersions=False):
    closeConnection = False
    conn = getTraktConnection()
    closeConnection = True
    #req = 'http://api.trakt.tv' + req
    req = 'http://streamcub.com/api/tmdb/?q=' + req
    req = req.replace("%%API_KEY%%",apikey)
    req = req.replace("%%USERNAME%%",settings.getSetting('trakt_login'))
    if method == 'POST':
            if not anon:
                args['username'] = settings.getSetting('trakt_login')
                args['password'] = settings.getSetting('trakt_password')
            if passVersions:
                args['plugin_version'] = __settings__.getAddonInfo("version")
                args['media_center'] = 'xbmc'
                args['media_center_version'] = xbmc.getInfoLabel("system.buildversion")
                args['media_center_date'] = xbmc.getInfoLabel("system.builddate")
            jdata = json.dumps(args)
            print(req)
            print(jdata)
            conn.request('POST', req, jdata)
    elif method == 'GET':
            args['username'] = settings.getSetting('trakt_login')
            args['password'] = settings.getSetting('trakt_password')
            jdata = json.dumps(args)
            conn.request('GET', req, jdata)
            print("trakt json url: "+req)
    #conn.go()
    try:
	response = conn.getresponse()
	raw = response.read()
	data = json.loads(raw)

    except:
	return None
    
    if 'status' in data:
        if data['status'] == 'failure':
            print("traktQuery: Error: " + str(data['error']))
            if returnStatus:
                return data
            return None

    return data
Beispiel #14
0
def furkJsonRequest(method, req, args={}, returnStatus=False, anon=False, conn=False, silent=False, passVersions=False):
    apikey = settings.getSetting('furk_apikey')
    closeConnection = False
    conn = getTraktConnection()
    closeConnection = True

    req = 'http://api.streamcub.com/api/?fq=/api/' + req + '&username='******'username') + '&password='******'password')
    req = req.replace("api_key=%%API_KEY%%",'')
    if method == 'POST':
            if not anon:
                args['username'] = username
                args['password'] = pwd
                args['hide_watchlisted']= 'true'
            if passVersions:
                args['plugin_version'] = __settings__.getAddonInfo("version")
                args['media_center'] = 'xbmc'
                args['media_center_version'] = xbmc.getInfoLabel("system.buildversion")
                args['media_center_date'] = xbmc.getInfoLabel("system.builddate")
            jdata = json.dumps(args)
            print(req)
            print(jdata)
            conn.request('POST', req, jdata)
    elif method == 'GET':
            jdata = json.dumps(args)
            conn.request('GET', req, jdata)
            print(req)
            #print("furk json url: "+req)
    #conn.go()

    response = conn.getresponse()
    raw = response.read()
    try:
	   data = json.loads(raw)
    except:
	   data = None
    if data == None:
	   return None
    if 'status' in data:
        if data['status'] == 'error':
            xbmcgui.Dialog().ok('Error', data['error'])
            if returnStatus:
                return data

    return data
def traktJsonRequest(method, req, args={}, returnStatus=False, anon=False, conn=False, silent=False, passVersions=False):
	if settings.getSetting("proxy") == 'true':
		http_proxy = settings.getSetting("proxyurl")
		https_proxy = settings.getSetting("proxyurl")
		proxyDict = {
              "http"  : http_proxy,
              "https" : https_proxy
            }
	else:
		proxyDict = {}
	req = 'http://api.trakt.tv' + req
	req = req.replace("%%API_KEY%%", apikey)
	req = req.replace("%%USERNAME%%", settings.getSetting('trakt_login'))
	print req
	if method == 'POST':
            if not anon:
                args['username'] = settings.getSetting('trakt_login')
                args['password'] = settings.getSetting('trakt_password')
            if passVersions:
                args['plugin_version'] = __settings__.getAddonInfo("version")
                args['media_center'] = 'xbmc'
                args['media_center_version'] = xbmc.getInfoLabel("system.buildversion")
                args['media_center_date'	] = xbmc.getInfoLabel("system.builddate")
            jdata = json.dumps(args)
            # print(req)
            # print(jdata)
            request = requests.post(req, data=jdata , proxies=proxyDict)

	elif method == 'GET':
            args['username'] = settings.getSetting('trakt_login')
            args['password'] = settings.getSetting('trakt_password')
            request = requests.get(req, params=args, proxies=proxyDict)
            print request.encoding

	print 'Response: ' + request.content
	#data = response.json()
	try:
		#response = conn.getresponse()
		data = request.json()


	except:
		return None

	if 'status' in data:
		if data['status'] == 'failure':
			print("traktQuery: Error: " + str(data['error']))
			if returnStatus:
				return data
			return None

	return data
Beispiel #16
0
def traktJsonRequest(method, req, args={}, returnStatus=False, anon=False, conn=False, silent=False, passVersions=False):
    conn = getTraktConnection()
    #req = 'http://api.rottentomatoes.com' + req
    req = req.replace("%%API_KEY%%",apikey)
    req = req.replace("%%USERNAME%%",settings.getSetting('trakt_login'))
    if method == 'POST':
            if not anon:
                args['username'] = settings.getSetting('trakt_login')
                args['password'] = settings.getSetting('trakt_password')
            if passVersions:
                args['plugin_version'] = __settings__.getAddonInfo("version")
                args['media_center'] = 'xbmc'
                args['media_center_version'] = xbmc.getInfoLabel("system.buildversion")
                args['media_center_date'] = xbmc.getInfoLabel("system.builddate")
            jdata = json.dumps(args)
            #print(req)
            #print(jdata)
            conn.request('POST', req, jdata)
    elif method == 'GET':
            jdata = json.dumps(args)
            conn.request('GET', req, jdata)
            #print("trakt json url: "+req)
    #conn.go()
    try:
	response = conn.getresponse()
	raw = response.read()
	data = json.loads(raw)

    except:
	return None
    
    if 'status' in data:
        if data['status'] == 'failure':
            print("traktQuery: Error: " + str(data['error']))
            if returnStatus:
                return data
            return None

    return data
Beispiel #17
0
def AddonMenu():  #homescreen
	print 'Streamcub menu'
	url = sys.argv[0]+'?action=' 
	#common.createListItem(params['content_type'],True,url + 'myFiles')
	#params['action'] = 'trakt_Menu'
	#trakt.traktAction(params)

	common.createListItem('Movies', True, url +'MovieMenu')
	common.createListItem('TV Shows', True, url +'ShowMenu')
	if settings.getSetting('adult_menu') == 'true':
		common.createListItem('Adult', True, url +'trakt_ShowAdultLists')
	common.createListItem('My Files',True,url + 'myFiles')
	#common.createListItem('Live TV',True,url + 'LiveTVMenu')
	common.createListItem('Search all torrents', True, url+'search')
	common.createListItem('Setup',False,url +'setup')
	common.createListItem('Account usage', True, url+'accountUsage')
	xbmcplugin.endOfDirectory(int(sys.argv[1]))
def SearchDialog(type, title, year, season, number, go=False):
    if go:
        updateDialog = xbmcgui.DialogProgress()
        updateDialog.create("Furk Library", "Searching")
        updateDialog.update(20, "searching", title)
    oneclick = settings.getSetting("oneclick")
    if type == 'Show':
        search = searcherLib.ShowSearch(title, season, number, oneclick)
    else:
        search = searcherLib.MovieSearch(title, year, oneclick)

    if len(
            search.qualities
    ) < 2 and search.oneClickSatisfied == False and search.mediatype == 'Show':
        common.Notification('Furk Library 2', 'making a deep search')
        search.deepsearch()
    if search.oneclick:
        if search.oneClickSatisfied:
            common.Notification('Furk Library 2', 'found one click')
            return search.best_quality_result.dir[
                'name'], search.best_quality_result.mediaUrl()
        elif search.best_quality_result:
            common.Notification('Furk Library 2',
                                'one click not found playing nearest')
            quality_select = 0
        else:
            pass  #see what are our options
    if search.valids > 1:
        dialog = xbmcgui.Dialog()
        quality_select = dialog.select('Select quality',
                                       search.quality_options())
    elif search.valids == 1:
        common.Notification('Found only:',
                            search.results[0].text.split(' ', 1)[0])
        quality_select = 0
    else:
        dialog = xbmcgui.Dialog()
        dialog.ok("Error", "Nothing found", "Try searching in FurkLib Plugin")
        quality_select = -1
    if quality_select == -1:
        return None, None
    else:
        print 'Quality' + str(quality_select)
        return search.results[quality_select].dir['name'], search.results[
            quality_select].mediaUrl()
def setup():
    if FIRST_TIME_STARTUP:
        dialog = xbmcgui.Dialog()
        dialog.ok("Furk Library BY alicanlakot","..","Welcome to first time", "setup")
	if not check_sources_xml(MOVIES_PATH) or not check_sources_xml(TV_SHOWS_PATH):
            if dialog.yesno("Setup folder", "The directories used are not listed as video sources.", "Do you want to add them to sources.xml now?"):
                setup_sources()
	data = traktlib.testUser(settings.getSetting('trakt_login'),settings.getSetting('trakt_password'))
	if data['status'] =='failure' :
		common.Notification(data['status'],'Please check your username for Trakt and Furk in config')
		settings.openSettings()
		data = traktlib.testUser(settings.getSetting('trakt_login'),settings.getSetting('trakt_password'))
		common.Notification('Tried again:',data['status'])
	if len(settings.getSetting('furk_apikey')) < 5:
		furklib.login(settings.getSetting('furk_login'),settings.getSetting('furk_password'))

	dialog.ok("Furk Library BY alicanlakot","..","You can start this again", "from menu")
        settings.setSetting('first_time_startup', 'false')
def SearchDialog(type,title,year,season,number,go=False):
	if go:
		updateDialog = xbmcgui.DialogProgress()
		updateDialog.create("Furk Library", "Searching")
		updateDialog.update(20, "searching", title)
	oneclick = settings.getSetting("oneclick")
	if type == 'Show':
		search = searcherLib.ShowSearch(title, season, number, oneclick)
	else:
		search = searcherLib.MovieSearch(title, year, oneclick)

	if len(search.qualities) < 2 and search.oneClickSatisfied == False and search.mediatype=='Show':
			common.Notification('Furk Library 2', 'making a deep search')
			search.deepsearch()
	if search.oneclick:
		if search.oneClickSatisfied:
			common.Notification('Furk Library 2', 'found one click')
			return search.best_quality_result.dir['name'],search.best_quality_result.mediaUrl()
		elif search.best_quality_result:
			common.Notification('Furk Library 2', 'one click not found playing nearest')
			quality_select = 0
		else:
			pass #see what are our options
	if  search.valids > 1 :
		dialog = xbmcgui.Dialog()
		quality_select = dialog.select('Select quality', search.quality_options())
	elif search.valids == 1:
		common.Notification('Found only:',search.results[0].text.split(' ',1)[0])
		quality_select = 0
	else:
		dialog = xbmcgui.Dialog()
		dialog.ok("Error", "Nothing found", "Try searching in FurkLib Plugin" )
		quality_select = -1
	if quality_select == -1:
		return None,None
	else:
		print 'Quality' + str(quality_select)
		return search.results[quality_select].dir['name'],search.results[quality_select].mediaUrl()
Beispiel #21
0
def addToXbmcLib(fg=None):
    totalAdded = 0
    if settings.getSetting("auto_addImdb") == 'true':
        url = settings.getSetting("imdb_watchlist")
        imdbmovies = imdb.watchlist_movies(url, 0)
        traktlib.addMoviestoWatchlist(imdbmovies)
        imdbshows = imdb.watchlist_shows(url, 0)
        traktlib.addShowstoWatchList(imdbshows)

        if settings.getSetting("add_trending") == 'true':
            if fg == 'True':
    	       common.Notification('Getting:', 'Trending')
            movies = traktlib.getTrendingMoviesFromTrakt()
            if movies:
                for movie in movies:
                    if not movie['watched'] and movie['watchers'] > 1:
                          totalAdded = totalAdded + common.createMovieStrm(movie['title'], movie['year'], movie['imdb_id'])
                          common.createMovieNfo(movie['title'], movie['year'], movie['imdb_id'])
	if settings.getSetting("add_recommended") == True:
		if fg == 'True':
			common.Notification('Getting:', 'Recommended')
		movies = traktlib.getRecommendedMoviesFromTrakt()
		if movies:
		    for movie in movies:
			totalAdded = totalAdded + common.createMovieStrm(movie['title'], movie['year'], movie['imdb_id'])
			common.createMovieNfo(movie['title'], movie['year'], movie['imdb_id'])
    if fg == 'True':
            common.Notification('Getting:', 'Watchlist Movies')

    if settings.getSetting("add_watchlistmovies") == 'true':
		if fg == 'True':
			common.Notification('Getting:', 'Watchlist Movies')
		movies = traktlib.getWatchlistMoviesFromTrakt()
		for movie in movies:
			totalAdded = totalAdded + common.createMovieStrm(movie['title'], movie['year'], movie['imdb_id'])
			common.createMovieNfo(movie['title'], movie['year'], movie['imdb_id'])

    if settings.getSetting("add_watchlistshows") == 'true':
		if fg == 'True':
			common.Notification('Getting:', 'Watchlist Shows')
		totalAdded = totalAdded + getWatchlistShows()

    if fg == 'True':
		common.Notification('Total:', str(totalAdded))
    return totalAdded
Beispiel #22
0
def SearchDialog(type,title,year,season,number,go=False):
	global quality_options
	global quality_urls
	global quality_cleanname 
	global quality_ids
	global unquality_options
	global unquality_urls
	global unquality_cleanname
	global unquality_ids
	global unique_qualities

	if go:
		updateDialog = xbmcgui.DialogProgress()
		updateDialog.create("Streamcub Library", "Searching")
		updateDialog.update(20, "searching", title)	
	

	title = common.CleanFileName(title)

	if type=='Movie':
		if year==0:
			query = '{0} -cam'.format(title)
			dirs = furklib.searchFurk(query)
		else:
			query = '{0} {1} -cam'.format(title,year)
			dirs = furklib.searchFurk(query)
	elif type=='Show':

		query = '''{0} S{1:0>2}E{2:0>2}'''.format(title, season, number)
		dirs = furklib.searchFurk(query)
		
	else:
		query = title
		dirs = furklib.searchFurk(title)
	if go:
		updateDialog.close()
	k = 0
	found720p = False
	foundDvd = False
	foundAtleastOneCached = False
	if go:
		pDialog = xbmcgui.DialogProgress()
		pDialog.create('Searching for files')
	count = 0
	
	if dirs:
		for file in dirs:
			# Test some variables if they exist
			try:
				file['is_ready']
				file['size']
			except:
				continue
				pass

			count = count + 1
			percent = int(float(count * 100) / len(dirs))
			text = "%s files found ->" % len(quality_options) 
			for qual in unique_qualities:
				text = text + qual +','
			if go:
				pDialog.update(percent, text)
				if pDialog.iscanceled(): 
					pDialog.close()
					break

			if settings.getSetting('search_only_cached_files')=='true' and file['is_ready']=='0':
				continue
			id = file['info_hash']
			dirname = file['name']
			mysize = size(int(file['size']))
			valid = False

			#print ('Dirname ' + dirname)
			dirname =  common.CleanFileName(dirname)

			if type=='Show':

				myParser= guess_series(dirname)
				if myParser:
					myParser.parse()
					myName = myParser.name 
					mySeason = myParser.season
					myNumber = myParser.episode
					myYear = 0
					myNametoCheck = common.CleanFileName(myName).lower().replace(' ','')
					titletoCheck = common.CleanFileName(title).lower().replace(' ','')
					if myParser.quality: myquality = myParser.quality
					movie_name =  '''{0} {1} S{2:0>2}E{3:0>2}'''.format(myquality,myNametoCheck, mySeason, myNumber)					
					
					if int(mySeason) <> int(season):
						break
					elif titletoCheck == myNametoCheck and int(mySeason)==int(season) and int(myNumber)==int(number) and myquality.value>0:
						valid= True

					#Notification(mycheck.lower(),query.lower())
					if valid:
						if file['is_ready']=='0':
							movie_name =  '[COLOR red]' + dirname + '[/COLOR]'
						else:
							movie_name =  dirname
							foundAtleastOneCached = True

						#Notification('Quality:',str(myquality))
						quality_options.append('[' + mysize + '] '+str(myquality) + ' ' + movie_name)
						quality_ids.append(file['info_hash'])
						quality_cleanname.append(dirname)
						quality_urls.append(None)
						if not str(myquality) in unique_qualities:
							unique_qualities.append(str(myquality))
				else:
					# Notification ('cannot parse' , dirname)
					continue
	
			elif type=='Movie':
				valid = False
				parser = MovieParser()
				parser.data = dirname
				parser.parse()
				myName = parser.name 
				myYear = parser.year
				myquality = parser.quality
				movie_name = ''
				if file['is_ready']=='0':
					if file.has_key('type') and file['type'] == 'video':
						movie_name =  '[COLOR red]' + str(myquality) + ' ' + dirname + '[/COLOR]'
					else:
						continue
				else:
					movie_name = str(myquality) + ' ' + dirname
				movie_name2 = str(myquality) + ' ' + title.strip() + ' (' + str(year) + ')'
			

				if int(settings.getSetting('file_size_filter')) > 0 and int(file['size']) > (int(settings.getSetting('file_size_filter')) * 1024 * 1024 * 1024):
					continue

				if year==0 and title.lower() in myName.lower():
					valid = True
				if not myYear:
					myYear = 0
					valid = False
				title = unicodedata.normalize('NFKD',unicode(title,'utf-8')).encode('ASCII', 'ignore')
				#print 'T:' + title.lower()
				#print 'M:' + myName.lower() 
				if title.lower() in myName.lower() and myquality.value>250:
					valid = True

				if valid:
					quality_options.append('[' + mysize + '] '+ movie_name)
					quality_cleanname.append(dirname)
					quality_ids.append(file['info_hash'])
					if not str(myquality) in unique_qualities:
						unique_qualities.append(str(myquality))
					
				else:
					unquality_options.append(str(myquality) + ' ' + dirname)
					unquality_ids.append(file['info_hash'])
					unquality_cleanname.append(dirname)

			

	if not foundAtleastOneCached and type=='Show':
		season_episode = "s%.2de%.2d" % (int(season), int(number))
		season_episode2 = "%d%.2d" % (int(season), int(number))
	
		tv_show_season = "%s season %d" % (title, int(season))
		tv_show_episode = "%s %s" % (title, season_episode)

		dirs2 = []
		try:
			dirs2.extend(furklib.searchFurk(tv_show_episode))
		except:
			pass
		try:
			dirs2.extend(furklib.searchFurk(tv_show_season))
		except:
			pass

		# dirs2 = files
		titletoCheck = re.sub(r'\([^)]*\)', '', title)
		titletoCheck = common.CleanFileName(titletoCheck).lower()

		dir_names = []
		dir_ids = []
		
		count = 0

		for d in dirs2:
			
			count = count + 1
			percent = int(float(count * 100) / len(dirs2))
			text = "%s files found ->" % len(quality_options) 
			for qual in unique_qualities:
				text = text + qual +','
			if go:
				pDialog.update(percent, text)
			if pDialog.iscanceled(): 
				pDialog.close()
				break

			if settings.getSetting('search_only_cached_files')=='true' and d['is_ready']=='0':
				continue
			
			dirnametoCheck=common.CleanFileName(d['name']).lower()
			print 'title:'+titletoCheck
			print 'dirname:'+dirnametoCheck
			if dirnametoCheck.startswith(titletoCheck) and 'season' in dirnametoCheck and str(season) in dirnametoCheck:
				print 'filebyfile for:'+dirnametoCheck
				filebyfile(False,d['info_hash'],d['name'],title,year,season,number)
			
		
		for d in dirs2:
			if d['is_ready']=='0':
				continue
			if not (d['name'].lower().startswith(title.lower())):
				continue
			dir_names.append(d['name'])
			dir_ids.append(d['info_hash'])
					
		
		if len(dir_names)>0:
			idx = 0
			for dirname in dir_names:
				id = dir_ids[idx]
				idx = idx + 1 
				filebyfile(False,id,dirname,title,year,season,number)
				if pDialog.iscanceled(): 
					pDialog.close()
	        		break
		else:
			pass

	if go:	
		pDialog.close()
	
	if len(quality_options) >= 1:
		dialog = xbmcgui.Dialog()
		quality_select = dialog.select('Select quality', quality_options)
	else:
		quality_select = -1
	
	if len(quality_options) == 0:
		dialog = xbmcgui.Dialog()	
		dialog.ok("Error", "Nothing found", "" )	

	# common.Notification ('Selected' , str(quality_select))
	if quality_select == -1:
		return None,None
	else:
		if type=='Show':
			
			try:
				myurl = quality_urls[quality_select]
				if myurl:
					myname = quality_cleanname[quality_select]
				else:
					raise Exception("empty url")
			except: 
				myid = quality_ids[quality_select]
				files = furklib.fileInfo(myid)
				
				if not files:
					download(myid)
					return None,None
				
				k = k + 1
				for f in files:
					myname = f['name']
					#print myname
					if 'sample' in myname.lower():
						continue
					if myname.endswith('avi') or myname.endswith('mkv') or myname.endswith('mp4') or myname.endswith('wmv'):
						myurl = f['url_dl']
						break
					else:
						continue
								
		elif type=='Movie':
			myid = quality_ids[quality_select]
			files = furklib.fileInfo(myid)
			myurl = None
			if not files:
				download(myid)
				return None,None
			
			for f in files:
				myname = f['name'].lower()
				#print myname
				if 'sample' in myname or int(f['length']) < 30:
					continue
				if myname.endswith('avi') or myname.endswith('mkv') or myname.endswith('mp4') or myname.endswith('iso') or myname.endswith('wmv'):
					myurl = f['url_dl']
					myname = f['name']
					break
				else:
					continue

		#common.Notification('Found',myname)
		if myurl:
			return myname,myurl
		else:
			common.Notification('Not Found' , 'Please try again')
			return None,None
import sys, urllib, time, re, os
import xbmc, xbmcaddon, xbmcgui, xbmcplugin
import context
from utils import settings

# Plugin constants
__plugin__ = 'Furk.net Library X'
__author__ = 'Alican Lakot'
__url__ = 'http://www.furk.net/?INVITE=1216084'
__version__ = '1.2.0'

FIRST_TIME_STARTUP = settings.first_time_startup()

print "[PLUGIN] '%s: version %s' initialized!" % (__plugin__, __version__)

if settings.getSetting('tv_show_custom_directory') == "true":
	TV_SHOWS_PATH = settings.getSetting('tv_show_directory')
else:
	TV_SHOWS_PATH = os.path.join(xbmc.translatePath('special://profile/addon_data/plugin.video.furklibraryx/tvshows'), '')

if settings.getSetting('movie_custom_directory') == "true":
	MOVIES_PATH = settings.getSetting('movie_directory')
else:
	MOVIES_PATH = os.path.join(xbmc.translatePath('special://profile/addon_data/plugin.video.furklibraryx/movies'), '')

CACHE_PATH= os.path.join(xbmc.translatePath('special://profile/addon_data/plugin.video.furklibraryx/traktcache'), '')
try:
	MYCONTEXT = context.context().getContext()
except:
	MYCONTEXT = 'video'
import sys, urllib, time, re, os
import xbmc, xbmcaddon, xbmcgui, xbmcplugin
import context
from utils import settings

# Plugin constants
__plugin__ = 'Furk.net Library X'
__author__ = 'Alican Lakot'
__url__ = 'http://www.furk.net/?INVITE=1216084'
__version__ = '1.2.0'

FIRST_TIME_STARTUP = settings.first_time_startup()

print "[PLUGIN] '%s: version %s' initialized!" % (__plugin__, __version__)

if settings.getSetting('tv_show_custom_directory') == "true":
    TV_SHOWS_PATH = settings.getSetting('tv_show_directory')
else:
    TV_SHOWS_PATH = os.path.join(
        xbmc.translatePath(
            'special://profile/addon_data/plugin.video.furklibraryx/tvshows'),
        '')

if settings.getSetting('movie_custom_directory') == "true":
    MOVIES_PATH = settings.getSetting('movie_directory')
else:
    MOVIES_PATH = os.path.join(
        xbmc.translatePath(
            'special://profile/addon_data/plugin.video.furklibraryx/movies'),
        '')
Beispiel #25
0
def traktAction(params):
	if(params['action'] == 'trakt_Menu'):
		displayTraktMenu()
	
	elif(params['action'] == 'trakt_SearchMovies'):
	        # Search
	        keyboard = xbmc.Keyboard(settings.getSetting('last_movie_search'), 'Search')
		keyboard.doModal()
	        if keyboard.isConfirmed():
		        query = keyboard.getText()
		        settings.setSetting('last_movie_search', query)
			movies = traktlib.getMovieInfobySearch(unicode(query))
			for movie in movies:
				common.createMovieListItemTrakt(movie,totalItems = len(movies))
			common.endofDir()
	
	elif(params['action'] == 'trakt_SearchShows'):
	        # Search
	        keyboard = xbmc.Keyboard(settings.getSetting('last_tv_show_search'), 'Search')
		keyboard.doModal()
	        if keyboard.isConfirmed():
		        query = keyboard.getText()
		        settings.setSetting('last_tv_show_search', query)
			shows = traktlib.getShowInfobySearch(unicode(query))
			for show in shows:
				common.createShowListItemTrakt(show,totalItems = len(shows))
			common.endofDir()
	
		
	elif(params['action'] == 'trakt_SeenRate'):
		imdbid = params['imdbid']
		traktSeenRate(imdbid)

	elif(params['action'] == 'trakt_DismissMovie'):
		imdbid = params['imdbid']
		traktDismissMovie(imdbid)

	elif(params['action'] == 'trakt_MovieGenres'):
		displayGenres(type='Movie')

	elif(params['action'] == 'trakt_ShowGenres'):
		displayGenres(type='Show')

	elif(params['action'] == 'trakt_ShowLists'):
		displayLists(type=params['type'])

	elif(params['action'] == 'trakt_ShowAdultLists'):
		displayAdultGenres()
		
	elif(params['action'] == 'trakt_SearchCache'):
		query = params['query']
		searcher.SearchFromMenu(query)

	elif(params['action'] == 'trakt_RecommendedShows'):
		try:
			genre = params['genre']
		except:
			genre = None
		if genre:
			displayRecommendedShows(genre)
		else :			
			url = sys.argv[0]+'?action=trakt_ShowGenres' 
			common.createListItem('Filter by Genre', True, url)
			displayRecommendedShows(genre)

	elif(params['action'] == 'trakt_listfeeds'):
			myfeeds = furklib.myFeeds()['feeds']
			myfeeds = sorted(myfeeds,key=lambda feed: feed['name'])
			url = sys.argv[0]+'?action=trakt_addfeeds' 
			common.createListItem('Add Feeds from trakt', True, url)
			for feed in myfeeds:
				url = sys.argv[0]+'?action=trakt_MovieGenres' 
				common.createListItem(feed['name'], True, url)
			common.endofDir()
	
	elif(params['action'] == 'trakt_addfeeds'):
			myfeeds = furklib.myFeeds()['feeds']
			shows = traktlib.getWatchlistShowsfromTrakt()
			progress = traktlib.getProgress()
			series = []
			for current in progress:
				series.append(current['show'])
			shows = shows + series
			for show in shows:
				check = [feed for feed in myfeeds if feed['name'] == show['title']]
				if len(check)==0:
					furklib.addFeed(show['title'])
					url = sys.argv[0]+'?action=trakt_MovieGenres' 
					common.createListItem(show['title'], False, '')
			common.endofDir()

	elif(params['action'] == 'trakt_RecommendedMovies'):
		try:
			genre = params['genre']
		except:
			genre = None
		if genre:
			displayRecommendedMovies(genre)
		else :			
			url = sys.argv[0]+'?action=trakt_MovieGenres' 
			common.createListItem('Filter by Genre', True, url)
			displayRecommendedMovies(genre)
			
	elif(params['action'] == 'trakt_Seasons'):
		tvdbid = params['tvdbid']
		displaySeasons(tvdbid)

	elif(params['action'] == 'trakt_Episodes'):
		tvdbid = params['tvdbid']
		season = params['season']
		displayEpisodes(season, tvdbid)

	elif(params['action'] == 'trakt_AddShowtoWatchlist'):
		tvdbid = params['tvdbid']
		addShowtoWatchlist(tvdbid)
	
	elif(params['action'] == 'trakt_AddMovietoWatchlist'):
		imdbid = params['imdbid']
		addMovietoWatchlist(imdbid)

	elif(params['action'] == 'trakt_RemoveMoviefromWatchlist'):
		imdbid = params['imdbid']
		response = traktlib.removeMoviefromWatchlist(imdbid)
		common.traktResponse(response)

	elif(params['action'] == 'trakt_DismissShow'):
		tvdbid = params['tvdbid']
		traktDismissShow(tvdbid)
	
	elif(params['action'] == 'trakt_SetShowSeen'):
		tvdbid = params['tvdbid']
		try:
			season = params['season']
			episode = params['episode']
		except:
			season = 100
			episode = 100
		response = traktSeenShow(tvdbid,season,episode)

	elif(params['action'] == 'trakt_TrendingMovies'):
		xbmcplugin.setContent(int(sys.argv[1]), 'movies')
		movies = traktlib.getTrendingMoviesFromTrakt()
		for movie in movies:
			common.createMovieListItemTrakt(movie,totalItems = len(movies))
		common.endofDir()

	elif(params['action'] == 'trakt_TrendingShows'):
		xbmcplugin.setContent(int(sys.argv[1]), 'tvshows')
		shows = traktlib.getTrendingShowsFromTrakt()
		progressShows = calculateProgress()
		for show in shows:
			if show['title'] in progressShows:
				common.createShowListItemTrakt(show,len(shows))#,progressShows[show['title']][0],progressShows[show['title']][1])
			else:
				common.createShowListItemTrakt(show,totalItems = len(shows))
		common.endofDir()
	
	elif(params['action'] == 'trakt_Progress'):
		displayProgress()
	elif(params['action'] == 'trakt_getList'):
		user=params['user']
		slug=params['slug']
		displayList(user,slug)
	else:
		common.Notification('Action Not found:' , params['action'])
Beispiel #26
0
def showAccountPicture():
	xbmc.executebuiltin("ShowPicture(http://streamcub.com/api/bwusage.php?username="******"&password="******")");
	return
Beispiel #27
0
import sys, urllib, time, re, os
import xbmc, xbmcaddon, xbmcgui, xbmcplugin
import context
from utils import settings


# Plugin constants
__plugin__ = 'Streamcub Library'
__author__ = 'Streamcub Team'
__url__ = 'http://www.streamcub.com'
__version__ = '1.3.4'

print "[PLUGIN] '%s: version %s' initialized!" % (__plugin__, __version__)

if settings.getSetting('tv_show_custom_directory') == "true":
	TV_SHOWS_PATH = settings.getSetting('tv_show_directory')
else:
	TV_SHOWS_PATH = os.path.join(xbmc.translatePath('special://profile/addon_data/plugin.video.streamcub/tvshows'), '')

if settings.getSetting('movie_custom_directory') == "true":
	MOVIES_PATH = settings.getSetting('movie_directory')
else:
	MOVIES_PATH = os.path.join(xbmc.translatePath('special://profile/addon_data/plugin.video.streamcub/movies'), '')

CACHE_PATH= os.path.join(xbmc.translatePath('special://profile/addon_data/plugin.video.streamcub/traktcache'), '')
try:
	MYCONTEXT = context.context().getContext()
except:
	MYCONTEXT = 'video'