gi2h270 commited on
Commit
2ef405f
·
verified ·
1 Parent(s): 2a19c86

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -6
app.py CHANGED
@@ -208,8 +208,18 @@ class LitecoinFarmBot:
208
  return None
209
 
210
  def extract_reset_timer(self, html):
211
- """Ekstrak waktu reset dari elemen dengan id 'hourResetTimer' (format MM:SS)"""
212
  soup = BeautifulSoup(html, 'html.parser')
 
 
 
 
 
 
 
 
 
 
213
  timer_span = soup.find(id='hourResetTimer')
214
  if timer_span:
215
  text = timer_span.get_text(strip=True)
@@ -671,6 +681,9 @@ class LitecoinFarmBot:
671
  log_error(f"Exception saat load bonus page: {e}", self.email)
672
  return
673
 
 
 
 
674
  # Ekstrak CSRF token
675
  csrf = self.extract_csrf_token(html)
676
  if not csrf:
@@ -732,7 +745,7 @@ class LitecoinFarmBot:
732
  log_warning(f"Klaim bonus gagal: {msg}", self.email)
733
  # Cek apakah karena limit
734
  if any(kw in msg.lower() for kw in ['hourly limit', 'daily limit', 'cooldown', 'terlalu sering', 'limit']):
735
- self._set_bonus_cooldown_from_dashboard()
736
  return
737
  except ValueError:
738
  # Respons bukan JSON, cek teks HTML
@@ -740,7 +753,7 @@ class LitecoinFarmBot:
740
  if error_msg:
741
  log_error(f"Bonus error: {error_msg}", self.email)
742
  if any(kw in error_msg.lower() for kw in ['hourly limit', 'daily limit', 'cooldown']):
743
- self._set_bonus_cooldown_from_dashboard()
744
  else:
745
  # Mungkin sukses tapi tidak JSON
746
  if 'success' in post_resp.text.lower() or 'bonus added' in post_resp.text.lower():
@@ -758,7 +771,22 @@ class LitecoinFarmBot:
758
  return
759
 
760
  if claims_done >= max_claims:
761
- self._set_bonus_cooldown_from_dashboard(success=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
762
 
763
  def _set_bonus_cooldown_from_dashboard(self, success=False):
764
  """Ambil reset timer dari dashboard dan set bonus_cooldown."""
@@ -770,9 +798,9 @@ class LitecoinFarmBot:
770
  if reset_seconds:
771
  self.bonus_cooldown = time.time() + reset_seconds
772
  if success:
773
- log_success(f"Berhasil melakukan 50 klaim bonus. Menunggu reset dalam {reset_seconds//60} menit {reset_seconds%60} detik.", self.email)
774
  else:
775
- log_info(f"Bonus limit tercapai, cooldown hingga reset ({reset_seconds//60} menit {reset_seconds%60} detik).", self.email)
776
  return
777
  except Exception as e:
778
  log_warning(f"Gagal mengambil reset timer dari dashboard: {e}", self.email)
 
208
  return None
209
 
210
  def extract_reset_timer(self, html):
211
+ """Ekstrak waktu reset dari elemen dengan id 'hourResetTimer' atau 'resetTimer' (format MM:SS)"""
212
  soup = BeautifulSoup(html, 'html.parser')
213
+ # Coba cari id 'resetTimer' (di halaman bonus)
214
+ timer_span = soup.find(id='resetTimer')
215
+ if timer_span:
216
+ text = timer_span.get_text(strip=True)
217
+ match = re.search(r'(\d+):(\d+)', text)
218
+ if match:
219
+ minutes = int(match.group(1))
220
+ seconds = int(match.group(2))
221
+ return minutes * 60 + seconds
222
+ # Fallback ke hourResetTimer (di dashboard)
223
  timer_span = soup.find(id='hourResetTimer')
224
  if timer_span:
225
  text = timer_span.get_text(strip=True)
 
681
  log_error(f"Exception saat load bonus page: {e}", self.email)
682
  return
683
 
684
+ # Ekstrak reset timer dari halaman ini (untuk digunakan jika limit)
685
+ reset_seconds = self.extract_reset_timer(html)
686
+
687
  # Ekstrak CSRF token
688
  csrf = self.extract_csrf_token(html)
689
  if not csrf:
 
745
  log_warning(f"Klaim bonus gagal: {msg}", self.email)
746
  # Cek apakah karena limit
747
  if any(kw in msg.lower() for kw in ['hourly limit', 'daily limit', 'cooldown', 'terlalu sering', 'limit']):
748
+ self._set_bonus_cooldown(reset_seconds)
749
  return
750
  except ValueError:
751
  # Respons bukan JSON, cek teks HTML
 
753
  if error_msg:
754
  log_error(f"Bonus error: {error_msg}", self.email)
755
  if any(kw in error_msg.lower() for kw in ['hourly limit', 'daily limit', 'cooldown']):
756
+ self._set_bonus_cooldown(reset_seconds)
757
  else:
758
  # Mungkin sukses tapi tidak JSON
759
  if 'success' in post_resp.text.lower() or 'bonus added' in post_resp.text.lower():
 
771
  return
772
 
773
  if claims_done >= max_claims:
774
+ # Setelah mencapai 50, ambil reset timer dari halaman terakhir (seharusnya masih ada)
775
+ # Jika tidak ada, fallback ke dashboard
776
+ if reset_seconds:
777
+ self.bonus_cooldown = time.time() + reset_seconds
778
+ log_success(f"Berhasil melakukan 50 klaim bonus. Menunggu reset dalam {reset_seconds//60} menit {reset_seconds%60} detik.", self.email)
779
+ else:
780
+ self._set_bonus_cooldown_from_dashboard(success=True)
781
+
782
+ def _set_bonus_cooldown(self, reset_seconds=None):
783
+ """Set bonus cooldown berdasarkan reset_seconds yang diberikan, atau fallback."""
784
+ if reset_seconds:
785
+ self.bonus_cooldown = time.time() + reset_seconds
786
+ log_info(f"Bonus limit tercapai, cooldown hingga reset ({reset_seconds//60} menit {reset_seconds%60} detik).", self.email)
787
+ else:
788
+ # Fallback ke dashboard
789
+ self._set_bonus_cooldown_from_dashboard()
790
 
791
  def _set_bonus_cooldown_from_dashboard(self, success=False):
792
  """Ambil reset timer dari dashboard dan set bonus_cooldown."""
 
798
  if reset_seconds:
799
  self.bonus_cooldown = time.time() + reset_seconds
800
  if success:
801
+ log_success(f"Berhasil melakukan 50 klaim bonus. Menunggu reset dalam {reset_seconds//60} menit {reset_seconds%60} detik (dari dashboard).", self.email)
802
  else:
803
+ log_info(f"Bonus limit tercapai, cooldown hingga reset ({reset_seconds//60} menit {reset_seconds%60} detik) dari dashboard.", self.email)
804
  return
805
  except Exception as e:
806
  log_warning(f"Gagal mengambil reset timer dari dashboard: {e}", self.email)