Browse Source

Bug fix for Python 3.11, Add Player Stock amounts on Market Cards

KeyMasterOfGozer 5 months ago
parent
commit
0b1ff0dc23
2 changed files with 25 additions and 10 deletions
  1. 7 1
      market.py
  2. 18 9
      player.py

+ 7 - 1
market.py

@@ -16,7 +16,7 @@ class Market():
     Cards:List[dict] = field(default_factory=list)
     asOf:datetime = datetime.utcnow()
     df:pd.DataFrame = field(default_factory=pd.DataFrame)
-    player:Player = Player()
+    player:Player = None
 
     def fetchData(self):
         self.loadPage()
@@ -51,7 +51,9 @@ class Market():
         self.driver.close()
 
     def getPlayerInfo(self):
+        if self.player is None: self.player = Player()
         self.player.fetchData()
+        self.player.closePage()
 
     def filterMarketCards(self):
         self.getPlayerInfo()
@@ -62,6 +64,10 @@ class Market():
             cards=document.getElementsByClassName('wrapper-market-card')
             for (var i = 0; i < cards.length; i++) {
                 cardNum = cards.item(i).getElementsByClassName('pornstar-number')[0].outerText;
+                innerCard = cards.item(i).getElementsByClassName('inner-market-card')[0]
+                let qty = document.createElement('div');
+                qty.innerText = "Stock: " + clist[cardNum]
+                innerCard.appendChild(qty)
                 if (clist[cardNum] == 'CRYSTAL'){
                     cards.item(i).style.setProperty('Display','None');
                 }

+ 18 - 9
player.py

@@ -11,6 +11,7 @@ from config import Config
 @dataclass
 class Player():
     url:str = 'https://play.boobylegends.com/player/'
+    driver:webdriver = None
     Cards:List[dict] = field(default_factory=list)
     asOf:datetime = datetime.utcnow()
     df:pd.DataFrame = field(default_factory=pd.DataFrame)
@@ -19,17 +20,13 @@ class Player():
 
 
     def fetchData(self):
-        driver = webdriver.Chrome()
-        driver.get(self.url)
-        driver.add_cookie(Config["cookie"])
-        driver.get(self.url)
-        self.asOf=datetime.utcnow()
-        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
-        userInfo=driver.find_element(By.CLASS_NAME, 'user-infos')
+        self.loadPage()
+        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
+        userInfo=self.driver.find_element(By.CLASS_NAME, 'user-infos')
         self.score=int(userInfo.find_element(By.CLASS_NAME,'my-score').text)
         regex=re.compile('[^0-9]')
         self.rank=int(regex.sub('',userInfo.find_element(By.TAG_NAME,'span').text))
-        collection=driver.find_element(By.CLASS_NAME, 'container-collection')
+        collection=self.driver.find_element(By.CLASS_NAME, 'container-collection')
         cards=collection.find_elements(By.CLASS_NAME, 'wrapper-card')
         for card in cards:
             Card={}
@@ -45,9 +42,21 @@ class Player():
             except:
                 Card['stock']="Quantity Not Found"
             self.Cards.append(Card)
-        driver.close()
         self.loadDF()
 
+    def initPage(self):
+        self.driver = webdriver.Chrome()
+        self.driver.get(self.url)
+        self.driver.add_cookie(Config["cookie"])
+
+    def loadPage(self):
+        if self.driver is None: self.initPage()
+        self.driver.get(self.url)
+        self.asOf=datetime.utcnow()
+
+    def closePage(self):
+        self.driver.close()
+
     def loadDF(self):
         self.df=pd.DataFrame(self.Cards)
         self.df.sort_values(by='card-num', ascending=True, inplace=True)