Parcourir la source

Add verbose argument

Cammy il y a 6 ans
Parent
commit
22bf25579c
5 fichiers modifiés avec 32 ajouts et 4 suppressions
  1. 6 2
      pyinstalive/auth.py
  2. 4 0
      pyinstalive/comments.py
  3. 8 0
      pyinstalive/dlfuncs.py
  4. 3 1
      pyinstalive/pil.py
  5. 11 1
      pyinstalive/startup.py

+ 6 - 2
pyinstalive/auth.py

@@ -83,12 +83,16 @@ def authenticate(username, password, force_use_login_args=False):
 
     except (ClientLoginError, ClientError) as e:
         logger.separator()
+        if pil.verbose:
+            logger.plain(json.dumps(e.error_response))
         logger.error('Could not login: {:s}'.format(
-            json.loads(e.error_response).get("error_title", "Error title not available.")))
-        logger.error('{:s}'.format(json.loads(e.error_response).get("message", "Not available")))
+            json.loads(e.error_response).get("error_title", e.error_response)))
+        logger.error('{:s}'.format(json.loads(e.error_response).get("message", e.error_response)))
         # logger.error('{:s}'.format(e.error_response))
         logger.separator()
     except Exception as e:
+        if pil.verbose:
+            logger.plain(json.dumps(e.error_response))
         if str(e).startswith("unsupported pickle protocol"):
             logger.warn("This cookie file is not compatible with Python {}.".format(sys.version.split(' ')[0][0]))
             logger.warn("Please delete your cookie file '{}.json' and try again.".format(username))

+ 4 - 0
pyinstalive/comments.py

@@ -54,6 +54,8 @@ class CommentsDownloader(object):
         try:
             comments_res = self.api.broadcast_comments(
                 self.broadcast.get('id'), last_comment_ts=first_comment_created_at)
+            if pil.verbose:
+                logger.plain(json.dumps(comments_res))
             comments = comments_res.get('comments', [])
             first_comment_created_at = (
                 comments[0]['created_at_utc'] if comments else int(time.time() - 5))
@@ -91,6 +93,8 @@ class CommentsDownloader(object):
             try:
                 comments_res = self.api.replay_broadcast_comments(
                     self.broadcast.get('id'), starting_offset=starting_offset, encoding_tag=encoding_tag)
+                if pil.verbose:
+                    logger.plain(json.dumps(comments_res))
                 starting_offset = comments_res.get('ending_offset', 0)
                 comments = comments_res.get('comments', [])
                 comments_collected.extend(comments)

+ 8 - 0
pyinstalive/dlfuncs.py

@@ -64,6 +64,8 @@ def get_user_id():
     except ValueError:
         try:
             user_res = pil.ig_api.username_info(pil.dl_user)
+            if pil.verbose:
+                logger.plain(json.dumps(user_res))
             user_id = user_res.get('user', {}).get('pk')
         except ClientConnectionError as cce:
             logger.error(
@@ -101,6 +103,8 @@ def get_broadcasts_info():
         user_id = get_user_id()
         if user_id:
             broadcasts = pil.ig_api.user_story_feed(user_id)
+            if pil.verbose:
+                logger.plain(json.dumps(broadcasts))
             pil.livestream_obj = broadcasts.get('broadcast')
             pil.replays_obj = broadcasts.get('post_live_item', {}).get('broadcasts', [])
             return True
@@ -178,6 +182,8 @@ def download_livestream():
         def print_status(sep=True):
             if pil.do_heartbeat:
                 heartbeat_info = pil.ig_api.broadcast_heartbeat_and_viewercount(pil.livestream_obj.get('id'))
+                if pil.verbose:
+                    logger.plain(json.dumps(heartbeat_info))
             viewers = pil.livestream_obj.get('viewer_count', 0)
             if sep:
                 logger.separator()
@@ -362,6 +368,8 @@ def download_following():
             is_checking = 'replays'
         logger.info("Checking following users for any {:s}.".format(is_checking))
         broadcast_f_list = pil.ig_api.reels_tray()
+        if pil.verbose:
+            logger.plain(json.dumps(broadcast_f_list))
         usernames_available_livestreams = []
         usernames_available_replays = []
         if broadcast_f_list['broadcasts'] and pil.dl_lives:

+ 3 - 1
pyinstalive/pil.py

@@ -44,6 +44,7 @@ def initialize():
     global has_guest
     global do_heartbeat
     global proxy
+    global verbose
     ig_api = None
     ig_user = ""
     ig_pass = ""
@@ -75,4 +76,5 @@ def initialize():
     clear_temp_files = False
     has_guest = None
     do_heartbeat = False
-    proxy = None
+    proxy = None
+    verbose = False

+ 11 - 1
pyinstalive/startup.py

@@ -82,6 +82,7 @@ def validate_inputs(config, args, unknown_args):
         pil.run_at_start = config.get('pyinstalive', 'run_at_start')
         pil.run_at_finish = config.get('pyinstalive', 'run_at_finish')
         pil.ffmpeg_path = config.get('pyinstalive', 'ffmpeg_path')
+        pil.verbose = config.get('pyinstalive', 'verbose')
         pil.args = args
         pil.config = config
         pil.proxy = config.get('pyinstalive', 'proxy')
@@ -104,6 +105,14 @@ def validate_inputs(config, args, unknown_args):
         else:
             pil.show_cookie_expiry = False
 
+        if helpers.bool_str_parse(config.get('pyinstalive', 'verbose')) == "Invalid":
+            pil.verbose = False
+            error_arr.append(['verbose', 'False'])
+        elif helpers.bool_str_parse(config.get('pyinstalive', 'verbose')):
+            pil.verbose = True
+        else:
+            pil.verbose = False
+
         if helpers.bool_str_parse(config.get('pyinstalive', 'use_locks')) == "Invalid":
             pil.use_locks = False
             error_arr.append(['use_locks', 'False'])
@@ -256,7 +265,8 @@ def run():
     parser.add_argument('-nhb', '--no-heartbeat', dest='noheartbeat', action='store_true', help="Disable heartbeat "
                                                                                                 "check for "
                                                                                                 "livestreams.")
-
+    parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', help="PyInstaLive will output JSON "
+                                                                                     "responses.")
     # Workaround to 'disable' argument abbreviations
     parser.add_argument('--usernamx', help=argparse.SUPPRESS, metavar='IGNORE')
     parser.add_argument('--passworx', help=argparse.SUPPRESS, metavar='IGNORE')