コード例 #1
0
ファイル: Jokes.py プロジェクト: civilwargeeky/GroupMeServer3
 def acquireJokes(self): #Gets new fact(s)
   XML_Dict = {"_":"http://www.w3.org/2005/Atom"}
 
   log.joke("Obtaining new",self.title+"s")
   log.network.low("Suppressing network for joke acquisition")
   try:
     webContent, code = self.connection.get(self.url, query = self.query, headers = self.headers, timeout = self.TIMEOUT)
   except OSError:
     log.web.debug("Socket Timed Out!")
     return False
   log.joke.debug("Code Received:",code)
   if code != 200: return False
   
   #Here is where most of the struggle comes from
   self.onJokeAcquire(webContent, self.jokes)
   
   if len(self.jokes) > 0:
     log.joke.debug("Acquired",len(self.jokes), self.title+"(s)")
   else:
     log.joke.error("No",self.title,"jokes were acquired!")
     return False
     
   #Save all jokes we got
   self.save()
   
   return True
コード例 #2
0
ファイル: Jokes.py プロジェクト: civilwargeeky/GroupMeServer3
 def postAllJokes(self, group):
   log.joke("Posting all",self.title," jokes")
   jokeCopy = copy.copy(self.jokes)
   random.shuffle(jokeCopy)
   counter = 0
   for joke in jokeCopy:
     counter += int(self._postJoke(group, joke))
   log.joke("Posted",counter,"/",len(jokeCopy),"jokes")
コード例 #3
0
ファイル: Jokes.py プロジェクト: civilwargeeky/GroupMeServer3
 def getJoke(self):
   self.load()
   
   if len(self.jokes) == 0:
     if not self.acquireJokes():
       return self.defaultJoke #DEFAULT FACT
       
   #Will remove jokes so we don't get repeat jokes
   num = random.randrange(len(self.jokes))
   joke = self.jokes.pop(num)
   self.save() #Record that we removed the fact
   
   log.joke("Joke gotten,",len(self.jokes),"remaining")
   
   #Add in fun messages
   joke = (self.makeMessageFun(joke[0]), joke[1])
   
   #If we have a picture, return with a picture, otherwise just the joke
   #This is always a tuple here, so joke[1] would be None if no pic
   if joke[1]:
     return joke
   return joke[0]
コード例 #4
0
ファイル: Jokes.py プロジェクト: civilwargeeky/GroupMeServer3
 def getJoke(self):
   #This part is mostly copied from SimpleJoke
   if len(self._handlers) > 0:
     joke = None
     tries = 0 #We will only try a few different handlers
     while tries < (len(self._handlers) // 2 + 1): #Until we get a proper joke
       tries += 1
       #Pick a handler that hasn't been picked recently
       choice = random.choice([i for i in range(len(self._handlers)) if i not in self._chosen])
       joke = self._handlers[choice].getJoke()
       if joke:
         log.joke("Got a joke successfully from",self._handlers[choice])
         self._chosen.append(choice) #Add the handler to blacklist if it yielded a joke
         break
       else:
         log.joke.error("Joke get failed from", self._handlers[choice])
     #If we have gone through at least 3/4 of the jokes, start removing jokes from the blacklist
     if len(self._chosen) > (len(self._handlers) * 3 // 4):
       self._chosen.pop(0) #Will only fire if at least one element in list. No Error.
     return joke #Will return the joke regardless of us having one or not. Hopefully we got one
       
   #If we have no jokes, return the default one
   return defaultDefaultJoke