mirror of
				https://gitlab.com/gpvkt/twitchtts.git
				synced 2025-10-31 09:07:34 +01:00 
			
		
		
		
	Added/Improved docstrings
This commit is contained in:
		
							parent
							
								
									1cf77afbcc
								
							
						
					
					
						commit
						41a7269855
					
				
					 1 changed files with 75 additions and 28 deletions
				
			
		
							
								
								
									
										103
									
								
								tts.py
									
										
									
									
									
								
							
							
						
						
									
										103
									
								
								tts.py
									
										
									
									
									
								
							|  | @ -131,7 +131,10 @@ class IRC: | ||||||
|                 sys.exit(251) |                 sys.exit(251) | ||||||
| 
 | 
 | ||||||
|     def resp_clearmsg(self, resp): |     def resp_clearmsg(self, resp): | ||||||
|         """ Respond to CLEARMSG """ |         """ Respond to CLEARMSG | ||||||
|  | 
 | ||||||
|  |             :param str resp: IRC Server message | ||||||
|  |         """ | ||||||
|         logging.info('CLEARMSG received') |         logging.info('CLEARMSG received') | ||||||
|         msgid = False |         msgid = False | ||||||
| 
 | 
 | ||||||
|  | @ -154,7 +157,10 @@ class IRC: | ||||||
|                 MSG_QUEUE_RAW = filtered_msg_queue |                 MSG_QUEUE_RAW = filtered_msg_queue | ||||||
| 
 | 
 | ||||||
|     def resp_privmsg(self, resp): |     def resp_privmsg(self, resp): | ||||||
|         """ Respond to PRIVMSG """ |         """ Respond to PRIVMSG | ||||||
|  | 
 | ||||||
|  |             :param str resp: IRC Server message | ||||||
|  |         """ | ||||||
|         logging.debug('PRIVMSG received') |         logging.debug('PRIVMSG received') | ||||||
| 
 | 
 | ||||||
|         tags = self.get_tags(resp) |         tags = self.get_tags(resp) | ||||||
|  | @ -207,7 +213,12 @@ class IRC: | ||||||
|                 return |                 return | ||||||
| 
 | 
 | ||||||
|     def get_tags(self, resp): |     def get_tags(self, resp): | ||||||
|         """ Strip tags from response """ |         """ Strip tags from response | ||||||
|  | 
 | ||||||
|  |             :param str resp: IRC Server message | ||||||
|  | 
 | ||||||
|  |             :return dict tags: Message metadata (tags) | ||||||
|  |         """ | ||||||
| 
 | 
 | ||||||
|         tags = resp.split(';') |         tags = resp.split(';') | ||||||
|         for tag in tags: |         for tag in tags: | ||||||
|  | @ -232,7 +243,12 @@ class IRC: | ||||||
|         return tags |         return tags | ||||||
| 
 | 
 | ||||||
|     def get_message(self, resp): |     def get_message(self, resp): | ||||||
|         """ Process message """ |         """ Transform IRC server message and determine length | ||||||
|  | 
 | ||||||
|  |             :param str resp: IRC Server message | ||||||
|  | 
 | ||||||
|  |             :return dict msg: Processed message | ||||||
|  |         """ | ||||||
| 
 | 
 | ||||||
|         msg = {} |         msg = {} | ||||||
|         msg['message'] = resp.rsplit('PRIVMSG #',1)[1].split(':',1)[1].replace('\r\n','') |         msg['message'] = resp.rsplit('PRIVMSG #',1)[1].split(':',1)[1].replace('\r\n','') | ||||||
|  | @ -241,7 +257,11 @@ class IRC: | ||||||
|         return msg |         return msg | ||||||
| 
 | 
 | ||||||
|     def priviledged_commands(self, message, tags): |     def priviledged_commands(self, message, tags): | ||||||
|         """ Process priviledged commands """ |         """ Process priviledged commands | ||||||
|  | 
 | ||||||
|  |             :param dict message: Message | ||||||
|  |             :param dict tags: Message metadata (tags) | ||||||
|  |         """ | ||||||
| 
 | 
 | ||||||
|         msg = message['message'] |         msg = message['message'] | ||||||
|         badges = tags['badges'] |         badges = tags['badges'] | ||||||
|  | @ -299,7 +319,12 @@ class IRC: | ||||||
|                 self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['TON']) |                 self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['TON']) | ||||||
| 
 | 
 | ||||||
|     def check_subonly(self, tags): |     def check_subonly(self, tags): | ||||||
|         """ subonly """ |         """ Check if subonly mode is enabled and sender is sub | ||||||
|  | 
 | ||||||
|  |             :param dict tags: Message metadata (tags) | ||||||
|  | 
 | ||||||
|  |             :return bool: | ||||||
|  |         """ | ||||||
| 
 | 
 | ||||||
|         if not CONF['IRC_SUBONLY']: |         if not CONF['IRC_SUBONLY']: | ||||||
|             return False |             return False | ||||||
|  | @ -317,7 +342,12 @@ class IRC: | ||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|     def check_modonly(self, tags): |     def check_modonly(self, tags): | ||||||
|         """ modonly """ |         """ Check if modonly mode is enabled and sender is mod | ||||||
|  | 
 | ||||||
|  |             :param dict tags: Message metadata (tags) | ||||||
|  | 
 | ||||||
|  |             :return bool: | ||||||
|  |         """ | ||||||
| 
 | 
 | ||||||
|         if not CONF['IRC_MODONLY']: |         if not CONF['IRC_MODONLY']: | ||||||
|             return False |             return False | ||||||
|  | @ -334,7 +364,12 @@ class IRC: | ||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|     def check_tts_disabled(self, user): |     def check_tts_disabled(self, user): | ||||||
|         """ Check if TTS is disabled """ |         """ Check if TTS is disabled | ||||||
|  | 
 | ||||||
|  |             :param str user: Username | ||||||
|  | 
 | ||||||
|  |             :return bool: | ||||||
|  |         """ | ||||||
|         if not self.tts_status: |         if not self.tts_status: | ||||||
|             self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['DISABLED']) |             self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['DISABLED']) | ||||||
|             return True |             return True | ||||||
|  | @ -343,7 +378,13 @@ class IRC: | ||||||
|         return False |         return False | ||||||
| 
 | 
 | ||||||
|     def check_msg_too_long(self, message, user): |     def check_msg_too_long(self, message, user): | ||||||
|         """ Check if message is too long """ |         """ Check if message is too long | ||||||
|  | 
 | ||||||
|  |             :param dict message: Message | ||||||
|  |             :param str user: Username | ||||||
|  | 
 | ||||||
|  |             :return bool: | ||||||
|  |         """ | ||||||
| 
 | 
 | ||||||
|         if message['length'] > CONF['IRC_TTS_LEN']: |         if message['length'] > CONF['IRC_TTS_LEN']: | ||||||
|             self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['TOO_LONG']) |             self.sendmsg(CONF['IRC_CHANNEL'], "@"+str(user), CONF['MESSAGE']['TOO_LONG']) | ||||||
|  | @ -358,6 +399,8 @@ class IRC: | ||||||
|             Check if the given user is on the TTS blacklist |             Check if the given user is on the TTS blacklist | ||||||
| 
 | 
 | ||||||
|             :param str user: Username |             :param str user: Username | ||||||
|  | 
 | ||||||
|  |             :return bool: | ||||||
|         """ |         """ | ||||||
| 
 | 
 | ||||||
|         if user in self.tts_denied: |         if user in self.tts_denied: | ||||||
|  | @ -374,6 +417,8 @@ class IRC: | ||||||
|             Checks if the given user is on the TTS whitelist |             Checks if the given user is on the TTS whitelist | ||||||
| 
 | 
 | ||||||
|             :param str user: Username |             :param str user: Username | ||||||
|  | 
 | ||||||
|  |             :return bool: | ||||||
|         """ |         """ | ||||||
| 
 | 
 | ||||||
|         if CONF['WHITELIST']: |         if CONF['WHITELIST']: | ||||||
|  | @ -423,11 +468,10 @@ class IRC: | ||||||
|         MSG_QUEUE_RAW.append(msg) |         MSG_QUEUE_RAW.append(msg) | ||||||
| 
 | 
 | ||||||
|     def get_response(self): |     def get_response(self): | ||||||
|         """Get and process response from IRC""" |         """ Get and process response from IRC """ | ||||||
|         try: |         try: | ||||||
|             resp = self.irc.recv(2048).decode("UTF-8") |             resp = self.irc.recv(2048).decode("UTF-8") | ||||||
|             logging.debug('resp:') |             logging.debug('resp: %s', resp) | ||||||
|             logging.debug(resp) |  | ||||||
|         except socket.timeout: |         except socket.timeout: | ||||||
|             return |             return | ||||||
|         except Exception: |         except Exception: | ||||||
|  | @ -731,7 +775,7 @@ class IRC: | ||||||
|         def usermap(self, msg): |         def usermap(self, msg): | ||||||
|             """ !usermap command |             """ !usermap command | ||||||
| 
 | 
 | ||||||
|                 Adds new entries to usermapping in config.yml |                 Adds a new entry to usermapping in config.yml | ||||||
| 
 | 
 | ||||||
|                 :param str msg: The IRC message triggering the command |                 :param str msg: The IRC message triggering the command | ||||||
|             """ |             """ | ||||||
|  | @ -756,7 +800,13 @@ class IRC: | ||||||
|                         load_config() |                         load_config() | ||||||
| 
 | 
 | ||||||
|         def pick(self, msg): |         def pick(self, msg): | ||||||
|             """ !pick command """ |             """ !pick command | ||||||
|  | 
 | ||||||
|  |                 Pick a number of users who typed #pickme in the chat | ||||||
|  |                 after the pick command was started. | ||||||
|  | 
 | ||||||
|  |                 :param str msg: Number of users to pick | ||||||
|  |             """ | ||||||
| 
 | 
 | ||||||
|             if self.pick_status: |             if self.pick_status: | ||||||
|                 logging.info('Pick stopped') |                 logging.info('Pick stopped') | ||||||
|  | @ -918,9 +968,8 @@ class IRC: | ||||||
|                 If no file is given in msg a standard file will be used |                 If no file is given in msg a standard file will be used | ||||||
| 
 | 
 | ||||||
|                 :param str msg: The IRC message triggering the command |                 :param str msg: The IRC message triggering the command | ||||||
|                 :raise: FileNotFoundError if randomfile does not exists | 
 | ||||||
|                 :return: True if line was successfully read and added to msg_queue |                 :return bool: | ||||||
|                 :rtype: bool |  | ||||||
|             """ |             """ | ||||||
| 
 | 
 | ||||||
|             randomfile = msg.replace('!random', '').strip().lower() |             randomfile = msg.replace('!random', '').strip().lower() | ||||||
|  | @ -974,8 +1023,6 @@ class IRC: | ||||||
|                 logging.info("Removing %s from deny list", user) |                 logging.info("Removing %s from deny list", user) | ||||||
|                 self.tts_denied.remove(user) |                 self.tts_denied.remove(user) | ||||||
| 
 | 
 | ||||||
|             return |  | ||||||
| 
 |  | ||||||
|         def dtts(self, msg): |         def dtts(self, msg): | ||||||
|             """ !dtts command |             """ !dtts command | ||||||
| 
 | 
 | ||||||
|  | @ -998,20 +1045,18 @@ class IRC: | ||||||
|                 logging.info("Removing %s from allowed list", user) |                 logging.info("Removing %s from allowed list", user) | ||||||
|                 self.tts_allowed.remove(user) |                 self.tts_allowed.remove(user) | ||||||
| 
 | 
 | ||||||
|             return |  | ||||||
| 
 |  | ||||||
| class ThreadingSimpleServer(ThreadingMixIn, HTTPServer): | class ThreadingSimpleServer(ThreadingMixIn, HTTPServer): | ||||||
|     """ Threaded HTTP Server """ |     """ Threaded HTTP Server """ | ||||||
| 
 | 
 | ||||||
| class HTTPserv(BaseHTTPRequestHandler): | class HTTPserv(BaseHTTPRequestHandler): | ||||||
|     """Simple HTTP Server""" |     """ Simple HTTP Server """ | ||||||
| 
 | 
 | ||||||
|     def log_message(self, format, *args): # pylint: disable=redefined-builtin |     def log_message(self, format, *args): # pylint: disable=redefined-builtin | ||||||
|         """Suppress HTTP log messages""" |         """ Suppress HTTP log messages """ | ||||||
|         return |         return | ||||||
| 
 | 
 | ||||||
|     def do_GET(self): # pylint: disable=invalid-name |     def do_GET(self): # pylint: disable=invalid-name | ||||||
|         """Process GET requests""" |         """ Process GET requests """ | ||||||
|         if self.path == '/': |         if self.path == '/': | ||||||
|             self.send_response(200) |             self.send_response(200) | ||||||
|             self.send_header('Content-type', 'text/html') |             self.send_header('Content-type', 'text/html') | ||||||
|  | @ -1132,14 +1177,14 @@ class HTTPserv(BaseHTTPRequestHandler): | ||||||
|             self.end_headers() |             self.end_headers() | ||||||
|             self.wfile.write(bytes("File not found.\n", "utf-8")) |             self.wfile.write(bytes("File not found.\n", "utf-8")) | ||||||
| 
 | 
 | ||||||
|         return |         return True | ||||||
| 
 | 
 | ||||||
| def http_serve_forever(httpd): | def http_serve_forever(httpd): | ||||||
|     """httpd loop""" |     """ httpd loop """ | ||||||
|     httpd.serve_forever() |     httpd.serve_forever() | ||||||
| 
 | 
 | ||||||
| def load_config(): | def load_config(): | ||||||
|     """Loading config variables""" |     """ Loading config variables """ | ||||||
| 
 | 
 | ||||||
|     logging.info("Loading configfile") |     logging.info("Loading configfile") | ||||||
| 
 | 
 | ||||||
|  | @ -1253,6 +1298,7 @@ def send_tts_queue(): | ||||||
| 
 | 
 | ||||||
| def get_url(path=False): | def get_url(path=False): | ||||||
|     """ Generate a valid URL from config values """ |     """ Generate a valid URL from config values """ | ||||||
|  | 
 | ||||||
|     if CONF['HTTP_BIND'] == "0.0.0.0": |     if CONF['HTTP_BIND'] == "0.0.0.0": | ||||||
|         url = "localhost" |         url = "localhost" | ||||||
|     else: |     else: | ||||||
|  | @ -1267,6 +1313,7 @@ def get_url(path=False): | ||||||
| 
 | 
 | ||||||
| def check_oauth_token(): | def check_oauth_token(): | ||||||
|     """ Check for valid authentication via Twitch API """ |     """ Check for valid authentication via Twitch API """ | ||||||
|  | 
 | ||||||
|     global CONF |     global CONF | ||||||
|     logging.debug('Checking OAuth Token') |     logging.debug('Checking OAuth Token') | ||||||
| 
 | 
 | ||||||
|  | @ -1291,7 +1338,7 @@ def check_oauth_token(): | ||||||
|     return CONF |     return CONF | ||||||
| 
 | 
 | ||||||
| def main(): | def main(): | ||||||
|     """Main loop""" |     """ Main loop """ | ||||||
| 
 | 
 | ||||||
|     global CONF |     global CONF | ||||||
|     CONF = load_config() |     CONF = load_config() | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue