@@ -85,22 +85,38 @@ def scrape_session_tokens():
8585 try :
8686 import browser_cookie3 as bc3 # soft dependency
8787 except ImportError :
88- sys .exit ("To use this feature you must install browser-cookie3" )
88+ sys .exit ("To use this feature you must pip install browser-cookie3" )
8989
9090 log .info ("checking browser cookies storage for auth tokens, this might pop up an auth dialog!" )
9191 log .info ("checking chrome cookie jar..." )
92- cookie_jar_chrome = bc3 .chrome (domain_name = ".adventofcode.com" )
93- chrome = [c for c in cookie_jar_chrome if c .name == "session" ]
94- log .info ("%d candidates from chrome" , len (chrome ))
92+ try :
93+ chrome = bc3 .chrome (domain_name = ".adventofcode.com" )
94+ # TODO: check non-default profile for chrome/linux
95+ except Exception as err :
96+ log .debug ("Couldn't scrape chrome - %s: %s" , type (err ), err )
97+ chrome = []
98+ else :
99+ chrome = [c for c in chrome if c .name == "session" ]
100+ log .info ("%d candidates from chrome" , len (chrome ))
95101
96102 log .info ("checking firefox cookie jar..." )
97- cookie_jar_firefox = bc3 .firefox (domain_name = ".adventofcode.com" )
98- firefox = [c for c in cookie_jar_firefox if c .name == "session" ]
99- log .info ("%d candidates from firefox" , len (firefox ))
103+ try :
104+ firefox = bc3 .firefox (domain_name = ".adventofcode.com" )
105+ except Exception as err :
106+ log .debug ("Couldn't scrape firefox - %s: %s" , type (err ), err )
107+ firefox = []
108+ else :
109+ firefox = [c for c in firefox if c .name == "session" ]
110+ log .info ("%d candidates from firefox" , len (firefox ))
111+
112+ # order preserving de-dupe
113+ tokens = list ({}.fromkeys ([c .value for c in chrome + firefox ]))
114+ removed = len (chrome + firefox ) - len (tokens )
115+ if removed :
116+ log .info ("Removed %d duplicate%s" , removed , "s" [:removed - 1 ])
100117
101118 working = {} # map of {token: auth source}
102- for cookie in chrome + firefox :
103- token = cookie .value
119+ for token in tokens :
104120 owner = get_owner (token )
105121 if owner is not None :
106122 working [token ] = owner
0 commit comments