コード例 #1
0
ファイル: search.py プロジェクト: dny238/Sick-Beard
def _downloadResult(result):

	resProvider = providers.getProviderModule(result.provider)

	newResult = False

	if resProvider == None:
		logger.log("Invalid provider name - this is a coding error, report it please", logger.ERROR)
		return False

	if result.resultType == "nzb":
		newResult = resProvider.downloadNZB(result)
	elif result.resultType == "nzbdata":
		fileName = os.path.join(sickbeard.NZB_DIR, result.name + ".nzb")
		
		logger.log("Saving NZB to " + fileName)
		
		newResult = True

		try:
			fileOut = open(fileName, "w")
			fileOut.write(result.extraInfo[0])
			fileOut.close()
		except IOError, e:
			logger.log("Error trying to save NZB to black hole: "+str(e), logger.ERROR)
			newResult = False
コード例 #2
0
ファイル: classes.py プロジェクト: basti1/Sick-Beard
 def __str__(self):
     
     providerModule = providers.getProviderModule(self.provider)
     
     if providerModule == None:
         return "Invalid provider, unable to print self"
     
     myString = providerModule.providerName + " @ " + self.url + "\n"
     myString += "Extra Info:\n"
     for extra in self.extraInfo:
         myString += "  " + extra + "\n"
     return myString
コード例 #3
0
ファイル: search.py プロジェクト: mattsch/Sickbeard
def _downloadResult(result):

	resProvider = providers.getProviderModule(result.provider)

	if resProvider == None:
		logger.log("Invalid provider name - this is a coding error, report it please", logger.ERROR)
		return False

	if resProvider.providerType == "nzb":
		resProvider.downloadNZB(result)
	elif resProvider.providerType == "torrent":
		resProvider.downloadTorrent(result)
	else:
		logger.log("Invalid provider type - this is a coding error, report it please", logger.ERROR)
		return False
コード例 #4
0
ファイル: history.py プロジェクト: styx-tdo/Sick-Beard
def logSnatch(searchResult):
    
    showid = int(searchResult.episode.show.tvdbid)
    season = int(searchResult.episode.season)
    episode = int(searchResult.episode.episode)
    quality = searchResult.quality
    
    providerModule = providers.getProviderModule(searchResult.provider)
    if providerModule != None:
        provider = providerModule.providerName
    else:
        provider = "unknown"
    
    action = Quality.compositeStatus(SNATCHED, searchResult.quality)

    resource = searchResult.extraInfo[0]
    
    _logHistoryItem(action, showid, season, episode, quality, resource, provider)
コード例 #5
0
ファイル: history.py プロジェクト: mattsch/Sickbeard
def logSnatch(searchResult):
    
    showid = int(searchResult.episode.show.tvdbid)
    season = int(searchResult.episode.season)
    episode = int(searchResult.episode.episode)
    quality = searchResult.quality
    
    providerModule = providers.getProviderModule(searchResult.provider)
    if providerModule != None:
        provider = providerModule.providerName
    else:
        provider = "unknown"
    
    if searchResult.predownloaded:
        action = ACTION_PRESNATCHED
    else:
        action = ACTION_SNATCHED

    resource = searchResult.extraInfo[0]
    
    _logHistoryItem(action, showid, season, episode, quality, resource, provider)
コード例 #6
0
ファイル: webserve.py プロジェクト: censer/Sick-Beard
    def searchEpisode(self, show=None, season=None, episode=None):
        
        outStr = ""
        epObj = _getEpisode(show, season, episode)
        
        if isinstance(epObj, str):
            return _genericMessage("Error", epObj)
        
        tempStr = "Searching for download for " + epObj.prettyName(True)
        logger.log(tempStr)
        outStr += tempStr + "<br />\n"
        foundEpisodes = search.findEpisode(epObj)
        
        if len(foundEpisodes) == 0:
            message = 'No downloads were found'
            flash.error(message,
                        "Couldn't find a download for <i>%s</i>" % epObj.prettyName(True))
            logger.log(message)
        
        else:

            # just use the first result for now
            logger.log("Downloading episode from " + foundEpisodes[0].url + "<br />\n")
            result = search.snatchEpisode(foundEpisodes[0])
            providerModule = providers.getProviderModule(foundEpisodes[0].provider)
            if providerModule == None:
                flash.error('Provider is configured incorrectly, unable to download')
            else: 
                flash.message('Episode snatched from <b>%s</b>' % providerModule.providerName)
            
            #TODO: check if the download was successful

            # update our lists to reflect the result if this search
            sickbeard.updateMissingList()
            sickbeard.updateAiringList()
            sickbeard.updateComingList()

        redirect("/home/displayShow?show=" + str(epObj.show.tvdbid))
コード例 #7
0
ファイル: tvcache.py プロジェクト: RickDB/Sick-Beard
    def findNeededEpisodes(self, episode = None, manualSearch=False):
        neededEps = {}

        if episode:
            neededEps[episode] = []

        myDB = self._getDB()
        
        if not episode:
            sqlResults = myDB.select("SELECT * FROM "+self.providerName)
        else:
            sqlResults = myDB.select("SELECT * FROM "+self.providerName+" WHERE tvdbid = ? AND season = ? AND episodes LIKE ?", [episode.show.tvdbid, episode.season, "|"+str(episode.episode)+"|"])

        # for each cache entry
        for curResult in sqlResults:

            # get the show object, or if it's not one of our shows then ignore it
            showObj = helpers.findCertainShow(sickbeard.showList, int(curResult["tvdbid"]))
            if not showObj:
                continue
            
            # get season and ep data (ignoring multi-eps for now)
            curSeason = int(curResult["season"])
            if curSeason == -1:
                continue
            curEp = curResult["episodes"].split("|")[1]
            if not curEp:
                continue
            curEp = int(curEp)
            curQuality = int(curResult["quality"])

            # if the show says we want that episode then add it to the list
            if not showObj.wantEpisode(curSeason, curEp, curQuality, manualSearch):
                logger.log("Skipping "+curResult["name"]+" because we don't want an episode that's "+Quality.qualityStrings[curQuality], logger.DEBUG)
            
            else:
                
                if episode:
                    epObj = episode
                else:
                    epObj = showObj.getEpisode(curSeason, curEp)
                
                # build a result object
                title = curResult["name"]
                url = curResult["url"]
            
                logger.log("Found result " + title + " at " + url)
        
                resProvider = providers.getProviderModule(self.providerName.lower())
                resultType = resProvider.providerType

                if resultType == "nzb":
                    result = classes.NZBSearchResult([epObj])
                elif resultType == "torrent":
                    result = classes.TorrentSearchResult([epObj])
                result.provider = self.providerName.lower()
                result.url = url 
                result.name = title
                result.quality = curQuality
                
                # add it to the list
                if epObj not in neededEps:
                    neededEps[epObj] = [result]
                else:
                    neededEps[epObj].append(result)
                    
        return neededEps