habulaj commited on
Commit
9ee9c50
·
verified ·
1 Parent(s): 7c43e5e

Update gemini_client/core.py

Browse files
Files changed (1) hide show
  1. gemini_client/core.py +135 -28
gemini_client/core.py CHANGED
@@ -370,13 +370,21 @@ class AsyncChatbot:
370
  else:
371
  error_message += f" Response status: {resp.status_code}. Check cookie validity and network."
372
  raise ValueError(error_message)
 
 
 
373
  except Exception as rotate_error:
374
  console.log(f"[red]Falha ao atualizar cookie: {rotate_error}[/red]")
375
  error_message = "SNlM0e value not found in response."
376
  if resp.status_code == 429:
377
  error_message += " Rate limit likely exceeded."
378
  else:
379
- error_message += f" Response status: {resp.status_code}. Cookie update failed. Check cookie validity and network."
 
 
 
 
 
380
  raise ValueError(error_message)
381
 
382
  # Try to refresh PSIDTS if needed
@@ -429,37 +437,136 @@ class AsyncChatbot:
429
  """
430
  try:
431
  console.log("[yellow]Atualizando cookie __Secure-1PSIDTS automaticamente...[/yellow]")
432
- response = await self.session.post(
433
- Endpoint.ROTATE_COOKIES.value,
434
- headers=Headers.ROTATE_COOKIES.value,
435
- data='[000,"-0000000000000000000"]',
436
- timeout=self.timeout
437
- )
438
- response.raise_for_status()
439
-
440
- if new_1psidts := response.cookies.get("__Secure-1PSIDTS"):
441
- self.secure_1psidts = new_1psidts
442
- self.session.cookies.set("__Secure-1PSIDTS", new_1psidts)
 
 
443
 
444
- # Salvar automaticamente no arquivo se cookie_path estiver definido
445
- if self.cookie_path:
446
- try:
447
- save_cookies(
448
- self.cookie_path,
449
- self.secure_1psid,
450
- self.secure_1psidts,
451
- self.additional_cookies
452
- )
453
- console.log("[green]✓ Cookie atualizado e salvo automaticamente![/green]")
454
- except Exception as save_error:
455
- console.log(f"[yellow]Aviso: Cookie atualizado mas não foi possível salvar no arquivo: {save_error}[/yellow]")
 
 
 
 
 
 
 
 
456
 
457
- return new_1psidts
458
- else:
459
- raise ValueError("Novo cookie __Secure-1PSIDTS não encontrado na resposta")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
460
  except Exception as e:
461
  console.log(f"[red]Falha ao atualizar cookie: {e}[/red]")
462
- raise
 
 
 
 
463
 
464
 
465
  async def ask(
 
370
  else:
371
  error_message += f" Response status: {resp.status_code}. Check cookie validity and network."
372
  raise ValueError(error_message)
373
+ except ValueError as rotate_error:
374
+ # Re-raise ValueError (já tem mensagem clara sobre atualização manual)
375
+ raise
376
  except Exception as rotate_error:
377
  console.log(f"[red]Falha ao atualizar cookie: {rotate_error}[/red]")
378
  error_message = "SNlM0e value not found in response."
379
  if resp.status_code == 429:
380
  error_message += " Rate limit likely exceeded."
381
  else:
382
+ error_message += (
383
+ f" Response status: {resp.status_code}. "
384
+ f"Falha ao atualizar cookie automaticamente. "
385
+ f"Por favor, acesse https://gemini.google.com/app e copie os novos cookies "
386
+ f"__Secure-1PSID e __Secure-1PSIDTS manualmente."
387
+ )
388
  raise ValueError(error_message)
389
 
390
  # Try to refresh PSIDTS if needed
 
437
  """
438
  try:
439
  console.log("[yellow]Atualizando cookie __Secure-1PSIDTS automaticamente...[/yellow]")
440
+
441
+ # Tentar método 1: Endpoint de rotação direto
442
+ try:
443
+ response = await self.session.post(
444
+ Endpoint.ROTATE_COOKIES.value,
445
+ headers={
446
+ "Content-Type": "application/json",
447
+ "Origin": "https://accounts.google.com",
448
+ "Referer": "https://accounts.google.com/"
449
+ },
450
+ json=[0, "-0000000000000000000"],
451
+ timeout=self.timeout
452
+ )
453
 
454
+ # Se retornou 200, verificar se tem novo cookie
455
+ if response.status_code == 200:
456
+ new_1psidts = response.cookies.get("__Secure-1PSIDTS")
457
+ if new_1psidts:
458
+ self.secure_1psidts = new_1psidts
459
+ self.session.cookies.set("__Secure-1PSIDTS", new_1psidts)
460
+
461
+ if self.cookie_path:
462
+ try:
463
+ save_cookies(
464
+ self.cookie_path,
465
+ self.secure_1psid,
466
+ self.secure_1psidts,
467
+ self.additional_cookies
468
+ )
469
+ console.log("[green]✓ Cookie atualizado e salvo automaticamente![/green]")
470
+ except Exception as save_error:
471
+ console.log(f"[yellow]Aviso: Cookie atualizado mas não foi possível salvar: {save_error}[/yellow]")
472
+
473
+ return new_1psidts
474
 
475
+ # Se não funcionou, tentar método alternativo: acessar Gemini para obter novo cookie
476
+ if response.status_code in (401, 403, 404):
477
+ console.log("[yellow]Endpoint de rotação não disponível, tentando método alternativo...[/yellow]")
478
+ # Acessar a página do Gemini para obter novos cookies
479
+ init_response = await self.session.get(
480
+ Endpoint.INIT.value,
481
+ timeout=self.timeout
482
+ )
483
+
484
+ # Verificar se obteve novo cookie na resposta
485
+ new_1psidts = init_response.cookies.get("__Secure-1PSIDTS")
486
+ if new_1psidts and new_1psidts != self.secure_1psidts:
487
+ self.secure_1psidts = new_1psidts
488
+ self.session.cookies.set("__Secure-1PSIDTS", new_1psidts)
489
+
490
+ if self.cookie_path:
491
+ try:
492
+ save_cookies(
493
+ self.cookie_path,
494
+ self.secure_1psid,
495
+ self.secure_1psidts,
496
+ self.additional_cookies
497
+ )
498
+ console.log("[green]✓ Cookie atualizado via método alternativo![/green]")
499
+ except Exception as save_error:
500
+ console.log(f"[yellow]Aviso: Cookie atualizado mas não foi possível salvar: {save_error}[/yellow]")
501
+
502
+ return new_1psidts
503
+ else:
504
+ raise ValueError("Não foi possível obter novo cookie - cookies podem estar completamente expirados")
505
+
506
+ response.raise_for_status()
507
+
508
+ except Exception as rotate_error:
509
+ # Se falhou, tentar método alternativo apenas se não for 401/403/404
510
+ error_str = str(rotate_error).lower()
511
+ if "401" in error_str or "403" in error_str or "404" in error_str:
512
+ # Se for erro de autenticação, cookies estão completamente expirados
513
+ raise ValueError(
514
+ "Cookies completamente expirados. Não é possível atualizar automaticamente. "
515
+ "Por favor, acesse https://gemini.google.com/app e copie os novos cookies "
516
+ "__Secure-1PSID e __Secure-1PSIDTS manualmente."
517
+ )
518
+
519
+ # Tentar método alternativo apenas para outros erros
520
+ console.log(f"[yellow]Método de rotação falhou ({rotate_error}), tentando método alternativo...[/yellow]")
521
+ try:
522
+ # Acessar a página do Gemini para obter novos cookies
523
+ init_response = await self.session.get(
524
+ Endpoint.INIT.value,
525
+ timeout=self.timeout
526
+ )
527
+
528
+ new_1psidts = init_response.cookies.get("__Secure-1PSIDTS")
529
+ if new_1psidts and new_1psidts != self.secure_1psidts:
530
+ self.secure_1psidts = new_1psidts
531
+ self.session.cookies.set("__Secure-1PSIDTS", new_1psidts)
532
+
533
+ if self.cookie_path:
534
+ try:
535
+ save_cookies(
536
+ self.cookie_path,
537
+ self.secure_1psid,
538
+ self.secure_1psidts,
539
+ self.additional_cookies
540
+ )
541
+ console.log("[green]✓ Cookie atualizado via método alternativo![/green]")
542
+ except Exception as save_error:
543
+ console.log(f"[yellow]Aviso: Cookie atualizado mas não foi possível salvar: {save_error}[/yellow]")
544
+
545
+ return new_1psidts
546
+ else:
547
+ raise ValueError(
548
+ "Não foi possível obter novo cookie. Cookies podem estar completamente expirados. "
549
+ "Por favor, acesse https://gemini.google.com/app e copie os novos cookies manualmente."
550
+ )
551
+ except Exception as alt_error:
552
+ console.log(f"[red]Método alternativo também falhou: {alt_error}[/red]")
553
+ raise ValueError(
554
+ f"Não foi possível atualizar cookie automaticamente. "
555
+ f"Por favor, acesse https://gemini.google.com/app e copie os novos cookies "
556
+ f"__Secure-1PSID e __Secure-1PSIDTS manualmente. Erro: {rotate_error}"
557
+ )
558
+
559
+ raise ValueError("Novo cookie __Secure-1PSIDTS não encontrado na resposta")
560
+ except ValueError:
561
+ # Re-raise ValueError sem modificar (já tem mensagem clara)
562
+ raise
563
  except Exception as e:
564
  console.log(f"[red]Falha ao atualizar cookie: {e}[/red]")
565
+ raise ValueError(
566
+ f"Não foi possível atualizar cookie automaticamente. "
567
+ f"Por favor, acesse https://gemini.google.com/app e copie os novos cookies "
568
+ f"__Secure-1PSID e __Secure-1PSIDTS manualmente. Erro: {e}"
569
+ )
570
 
571
 
572
  async def ask(