Просмотр исходного кода

Use global variables, and validate parameters

wivb 6 лет назад
Родитель
Сommit
5af083e3fb
3 измененных файлов с 15 добавлено и 7 удалено
  1. 4 4
      pyinstalive/auth.py
  2. 1 0
      pyinstalive/pil.py
  3. 10 3
      pyinstalive/startup.py

+ 4 - 4
pyinstalive/auth.py

@@ -45,7 +45,7 @@ def onlogin_callback(api, cookie_file):
         logger.separator()
 
 
-def authenticate(username, password, force_use_login_args=False, proxy=None):
+def authenticate(username, password, force_use_login_args=False):
     ig_api = None
     try:
         if force_use_login_args:
@@ -60,7 +60,7 @@ def authenticate(username, password, force_use_login_args=False, proxy=None):
             # login new
             ig_api = Client(
                 username, password,
-                on_login=lambda x: onlogin_callback(x, cookie_file), proxy=proxy)
+                on_login=lambda x: onlogin_callback(x, cookie_file), proxy=pil.proxy)
         else:
             with open(cookie_file) as file_data:
                 cached_settings = json.load(file_data, object_hook=from_json)
@@ -71,7 +71,7 @@ def authenticate(username, password, force_use_login_args=False, proxy=None):
             try:
                 ig_api = Client(
                     username, password,
-                    settings=cached_settings, proxy=proxy)
+                    settings=cached_settings, proxy=pil.proxy)
 
             except ClientCookieExpiredError as e:
                 logger.warn('The current cookie file has expired, creating a new one.')
@@ -79,7 +79,7 @@ def authenticate(username, password, force_use_login_args=False, proxy=None):
                 ig_api = Client(
                     username, password,
                     device_id=device_id,
-                    on_login=lambda x: onlogin_callback(x, cookie_file), proxy=proxy)
+                    on_login=lambda x: onlogin_callback(x, cookie_file), proxy=pil.proxy)
 
     except (ClientLoginError, ClientError) as e:
         logger.separator()

+ 1 - 0
pyinstalive/pil.py

@@ -43,6 +43,7 @@ def initialize():
     global clear_temp_files
     global has_guest
     global do_heartbeat
+    global proxy
     ig_api = None
     ig_user = ""
     ig_pass = ""

+ 10 - 3
pyinstalive/startup.py

@@ -4,6 +4,7 @@ import os
 import logging
 import platform
 import subprocess
+from urllib.parse import urlparse
 
 try:
     import pil
@@ -189,6 +190,12 @@ def validate_inputs(config, args, unknown_args):
                 logger.warn("Custom config path is invalid, falling back to default path: {:s}".format(pil.dl_path))
                 logger.separator()
 
+        if pil.proxy != None:
+            parsed_url = urlparse(pil.proxy)
+            if (not parsed_url.netloc or not parsed_url.scheme):
+                error_arr.append(['proxy', 'None'])
+                pil.proxy = None
+
         if error_arr:
             for error in error_arr:
                 logger.warn("Invalid value for '{:s}'. Using default value: {:s}".format(error[0], error[1]))
@@ -269,13 +276,13 @@ def run():
 
     if validate_inputs(config, args, unknown_args):
         if not args.username and not args.password:
-            pil.ig_api = auth.authenticate(username=pil.ig_user, password=pil.ig_pass, proxy=pil.proxy)
+            pil.ig_api = auth.authenticate(username=pil.ig_user, password=pil.ig_pass)
         elif (args.username and not args.password) or (args.password and not args.username):
             logger.warn("Missing --username or --password argument. Falling back to config file.")
             logger.separator()
-            pil.ig_api = auth.authenticate(username=pil.ig_user, password=pil.ig_pass, proxy=pil.proxy)
+            pil.ig_api = auth.authenticate(username=pil.ig_user, password=pil.ig_pass)
         elif args.username and args.password:
-            pil.ig_api = auth.authenticate(username=args.username, password=args.password, force_use_login_args=True, proxy=pil.proxy)
+            pil.ig_api = auth.authenticate(username=args.username, password=args.password, force_use_login_args=True)
 
         if pil.ig_api:
             if pil.dl_user or pil.args.downloadfollowing: