@@ -11,12 +11,17 @@ class ImageCache:
1111 '''Class used for caching images'''
1212
1313 ratelimit = 0.05
14- api = json .load (API )
14+ with API .open () as fp :
15+ api = json .load (fp )
1516
1617 def __init__ (self , size ):
17- self .queue = mp .Queue (size )
18+ self .manager = mp .Manager ()
19+ self .queue = self .manager .Queue (size )
1820 self .worker = None
1921
22+ self .infocache = None
23+ self .hobbycache = None
24+
2025 def __del__ (self ):
2126 self .stop ()
2227
@@ -26,7 +31,7 @@ def __get(self, url, **kwargs):
2631 except ConnectionError as e :
2732 return e
2833
29- def __parse_image (self , response ):
34+ def __parse_image (self , data : dict ):
3035 data = response .json ()
3136 url = data [0 ]['url' ]
3237 response = self .__get (url )
@@ -50,11 +55,19 @@ def __parse_info(self, response):
5055 }
5156
5257 def get_profile (self ):
53- poolsize = len (self .api )
58+ api = [self .api ['image' ]]
59+ if self .infocache is None :
60+ api .append (self .api ['info' ])
61+ if self .
62+
5463 with mp .Pool (poolsize ) as pool :
55- responses = pool .map (self .__get , self .api .values ())
64+ response = pool .map (self .__get , self .api .values ())
5665 if ConnectionError not in responses : # TODO Record connection errors
57- return dict (* responses )
66+ return {
67+ ** self .__parse_info (response ['info' ]),
68+ ** self .__parse_image (response ['image' ]),
69+ ** self .__parse_hobbies (response ['hobbies' ])
70+ }
5871
5972 def next (self ):
6073 return self .queue .get ()
@@ -69,7 +82,7 @@ def mainloop(self, queue):
6982 def start (self ):
7083 if self .worker is not None and self .worker .is_alive ():
7184 self .stop ()
72- self .worker = Process (target = self .mainloop , args = (self .queue ,))
85+ self .worker = mp . Process (target = self .mainloop , args = (self .queue ,))
7386 self .worker .start ()
7487
7588 def stop (self ):
0 commit comments