Dink0 commited on
Commit
c8c54d2
·
verified ·
1 Parent(s): a09afe0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -78
app.py CHANGED
@@ -17,87 +17,26 @@ TELEGRAM_API_HASH = "102edf31d404cb72d17ee4831d4e8c7b"
17
  TELEGRAM_STRING_SESSION = "1ApWapzMBu8a9o9Wu1GexPdkO7Jsr6po1xym67EcfAxkEbVx1oxw6wW7LINb9Xf0VYcyEAP-b-D0RQ_4x0RDAW8Di_0P2r4bj7xNeV9xO3wBMcaeq7FJux3UMq5buq89gqG8JarZG04tIyWoVnH__dq1_6G2Zkr0GF4WJCS2UN7mmwBacIIUEjUryEA97tXYC8jD14J-1MDgFsNNZTJ6uurD5RzH2DIhphChebxOkDBdXmpLGlanEzYzVOlx4p6Mo2zYorRG968o64CxKEh-WiJaPSNrS3IEfIVWFVd_tHKWzQSPD1zHHhcw0v2_ZjCKbZnTMcT3uMYuyLwA55_dckzcw0wZgAZQ="
18
 
19
  # ----------- Настройки ВКонтакте -----------
20
- # Вставляем ваши токены
21
- VK_ACCESS_TOKEN = os.environ.get("VK_ACCESS_TOKEN", "")
22
- VK_REFRESH_TOKEN = os.environ.get("VK_REFRESH_TOKEN", "")
23
- VK_DEVICE_ID = os.environ.get("VK_DEVICE_ID", "") # Добавляем device_id
 
 
 
24
 
25
  # Остальные настройки ВКонтакте
26
  VK_CLIENT_ID = os.environ.get("VK_CLIENT_ID", "")
27
  VK_CLIENT_SECRET = os.environ.get("VK_CLIENT_SECRET", "")
28
  VK_API_VERSION = "5.131"
29
 
30
- if not VK_ACCESS_TOKEN:
31
  st.warning("Не найден VK_ACCESS_TOKEN. Добавьте его в Secrets или переменные окружения!")
32
- if not VK_REFRESH_TOKEN:
33
  st.warning("Не найден VK_REFRESH_TOKEN. Без него не сможем обновлять токен!")
34
  if not VK_CLIENT_ID or not VK_CLIENT_SECRET:
35
  st.warning("Не найдены VK_CLIENT_ID / VK_CLIENT_SECRET. Без них не сможем обновлять токен!")
36
 
37
- def refresh_vk_token() -> bool:
38
- """
39
- Отправляем запрос на обновление токена через refresh_token.
40
- По новой схеме VK ID:
41
- grant_type=refresh_token, endpoint может быть https://id.vk.com/oauth2/auth (или другой, согласно документации).
42
- """
43
- st.write("Пытаемся обновить токен...") # Отладочное сообщение
44
-
45
- # Берём текущие значения из session_state
46
- current_refresh = st.session_state["VK_REFRESH_TOKEN"]
47
- device_id = st.session_state.get("VK_DEVICE_ID", "") # Получаем device_id
48
-
49
- st.write(f"Текущий refresh_token: {current_refresh}") # Отладочное сообщение
50
- st.write(f"Текущий device_id: {device_id}") # Отладочное сообщение
51
-
52
- if not current_refresh or not VK_CLIENT_ID or not VK_CLIENT_SECRET or not device_id:
53
- st.error("Невозможно обновить токен: нет refresh_token, client_id, client_secret или device_id.")
54
- return False
55
-
56
- url = "https://id.vk.com/oauth2/auth" # Endpoint для обновления токена
57
- data = {
58
- "grant_type": "refresh_token",
59
- "client_id": VK_CLIENT_ID,
60
- "client_secret": VK_CLIENT_SECRET,
61
- "refresh_token": current_refresh,
62
- "device_id": device_id # Передаем device_id
63
- }
64
-
65
- st.write(f"Отправляем запрос на обновление токена: {url}") # Отладочное сообщение
66
- st.write(f"Данные запроса: {data}") # Отладочное сообщение
67
-
68
- resp = requests.post(url, data=data)
69
- st.write(f"Статус ответа: {resp.status_code}") # Отладочное сообщение
70
- st.write(f"Текст ответа: {resp.text}") # Отладочное сообщение
71
-
72
- if resp.status_code != 200:
73
- st.error(f"Ошибка обновления токена (HTTP {resp.status_code}): {resp.text}")
74
- return False
75
-
76
- try:
77
- result = resp.json()
78
- st.write(f"Ответ от VK API: {result}") # Отладочное сообщение
79
- except Exception as e:
80
- st.error(f"Не удалось распарсить ответ при обновлении токена: {e}")
81
- return False
82
-
83
- if "access_token" not in result:
84
- err_desc = result.get("error_description", result)
85
- st.error(f"Не удалось получить новый access_token: {err_desc}")
86
- return False
87
-
88
- # Сохраняем новые значения
89
- new_access = result["access_token"]
90
- st.session_state["VK_ACCESS_TOKEN"] = new_access
91
- if "refresh_token" in result:
92
- st.session_state["VK_REFRESH_TOKEN"] = result["refresh_token"]
93
-
94
- st.success("VK-токен обновлён успешно!")
95
- st.write(f"Новый access_token: {new_access}") # Отладочное сообщение
96
- if "refresh_token" in result:
97
- st.write(f"Новый refresh_token: {result['refresh_token']}") # Отладочное сообщение
98
-
99
- return True
100
-
101
  # --- Инициализация Telethon-клиента (Telegram) ---
102
  def init_telethon():
103
  loop = asyncio.new_event_loop()
@@ -125,14 +64,6 @@ if st.session_state.get("VK_REFRESH_TOKEN"):
125
  else:
126
  st.warning("Не найден refresh_token. Авторизуйтесь через workingtoken.py.")
127
 
128
- # Сохраняем в session_state, чтобы при обновлении токена переопределять
129
- if "VK_ACCESS_TOKEN" not in st.session_state:
130
- st.session_state["VK_ACCESS_TOKEN"] = VK_ACCESS_TOKEN
131
- if "VK_REFRESH_TOKEN" not in st.session_state:
132
- st.session_state["VK_REFRESH_TOKEN"] = VK_REFRESH_TOKEN
133
- if "VK_DEVICE_ID" not in st.session_state:
134
- st.session_state["VK_DEVICE_ID"] = VK_DEVICE_ID
135
-
136
  def human_format_views(num: int) -> str:
137
  if num < 1000:
138
  return f"{num / 1000:.1f}K"
@@ -150,9 +81,15 @@ def refresh_vk_token() -> bool:
150
  По новой схеме VK ID:
151
  grant_type=refresh_token, endpoint может быть https://id.vk.com/oauth2/auth (или другой, согласно документации).
152
  """
 
 
153
  # Берём текущие значения из session_state
154
  current_refresh = st.session_state["VK_REFRESH_TOKEN"]
155
  device_id = st.session_state.get("VK_DEVICE_ID", "") # Получаем device_id
 
 
 
 
156
  if not current_refresh or not VK_CLIENT_ID or not VK_CLIENT_SECRET or not device_id:
157
  st.error("Невозможно обновить токен: нет refresh_token, client_id, client_secret или device_id.")
158
  return False
@@ -166,13 +103,20 @@ def refresh_vk_token() -> bool:
166
  "device_id": device_id # Передаем device_id
167
  }
168
 
 
 
 
169
  resp = requests.post(url, data=data)
 
 
 
170
  if resp.status_code != 200:
171
  st.error(f"Ошибка обновления токена (HTTP {resp.status_code}): {resp.text}")
172
  return False
173
 
174
  try:
175
  result = resp.json()
 
176
  except Exception as e:
177
  st.error(f"Не удалось распарсить ответ при обновлении токена: {e}")
178
  return False
@@ -189,6 +133,10 @@ def refresh_vk_token() -> bool:
189
  st.session_state["VK_REFRESH_TOKEN"] = result["refresh_token"]
190
 
191
  st.success("VK-токен обновлён успешно!")
 
 
 
 
192
  return True
193
 
194
  # ------------- Парсер Telegram -------------
 
17
  TELEGRAM_STRING_SESSION = "1ApWapzMBu8a9o9Wu1GexPdkO7Jsr6po1xym67EcfAxkEbVx1oxw6wW7LINb9Xf0VYcyEAP-b-D0RQ_4x0RDAW8Di_0P2r4bj7xNeV9xO3wBMcaeq7FJux3UMq5buq89gqG8JarZG04tIyWoVnH__dq1_6G2Zkr0GF4WJCS2UN7mmwBacIIUEjUryEA97tXYC8jD14J-1MDgFsNNZTJ6uurD5RzH2DIhphChebxOkDBdXmpLGlanEzYzVOlx4p6Mo2zYorRG968o64CxKEh-WiJaPSNrS3IEfIVWFVd_tHKWzQSPD1zHHhcw0v2_ZjCKbZnTMcT3uMYuyLwA55_dckzcw0wZgAZQ="
18
 
19
  # ----------- Настройки ВКонтакте -----------
20
+ # Инициализация токенов в session_state
21
+ if "VK_ACCESS_TOKEN" not in st.session_state:
22
+ st.session_state["VK_ACCESS_TOKEN"] = os.environ.get("VK_ACCESS_TOKEN", "")
23
+ if "VK_REFRESH_TOKEN" not in st.session_state:
24
+ st.session_state["VK_REFRESH_TOKEN"] = os.environ.get("VK_REFRESH_TOKEN", "")
25
+ if "VK_DEVICE_ID" not in st.session_state:
26
+ st.session_state["VK_DEVICE_ID"] = os.environ.get("VK_DEVICE_ID", "")
27
 
28
  # Остальные настройки ВКонтакте
29
  VK_CLIENT_ID = os.environ.get("VK_CLIENT_ID", "")
30
  VK_CLIENT_SECRET = os.environ.get("VK_CLIENT_SECRET", "")
31
  VK_API_VERSION = "5.131"
32
 
33
+ if not st.session_state["VK_ACCESS_TOKEN"]:
34
  st.warning("Не найден VK_ACCESS_TOKEN. Добавьте его в Secrets или переменные окружения!")
35
+ if not st.session_state["VK_REFRESH_TOKEN"]:
36
  st.warning("Не найден VK_REFRESH_TOKEN. Без него не сможем обновлять токен!")
37
  if not VK_CLIENT_ID or not VK_CLIENT_SECRET:
38
  st.warning("Не найдены VK_CLIENT_ID / VK_CLIENT_SECRET. Без них не сможем обновлять токен!")
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  # --- Инициализация Telethon-клиента (Telegram) ---
41
  def init_telethon():
42
  loop = asyncio.new_event_loop()
 
64
  else:
65
  st.warning("Не найден refresh_token. Авторизуйтесь через workingtoken.py.")
66
 
 
 
 
 
 
 
 
 
67
  def human_format_views(num: int) -> str:
68
  if num < 1000:
69
  return f"{num / 1000:.1f}K"
 
81
  По новой схеме VK ID:
82
  grant_type=refresh_token, endpoint может быть https://id.vk.com/oauth2/auth (или другой, согласно документации).
83
  """
84
+ st.write("Пытаемся обновить токен...") # Отладочное сообщение
85
+
86
  # Берём текущие значения из session_state
87
  current_refresh = st.session_state["VK_REFRESH_TOKEN"]
88
  device_id = st.session_state.get("VK_DEVICE_ID", "") # Получаем device_id
89
+
90
+ st.write(f"Текущий refresh_token: {current_refresh}") # Отладочное сообщение
91
+ st.write(f"Текущий device_id: {device_id}") # Отладочное сообщение
92
+
93
  if not current_refresh or not VK_CLIENT_ID or not VK_CLIENT_SECRET or not device_id:
94
  st.error("Невозможно обновить токен: нет refresh_token, client_id, client_secret или device_id.")
95
  return False
 
103
  "device_id": device_id # Передаем device_id
104
  }
105
 
106
+ st.write(f"Отправляем запрос на обновление токена: {url}") # Отладочное сообщение
107
+ st.write(f"Данные запроса: {data}") # Отладочное сообщение
108
+
109
  resp = requests.post(url, data=data)
110
+ st.write(f"Статус ответа: {resp.status_code}") # Отладочное сообщение
111
+ st.write(f"Текст ответа: {resp.text}") # Отладочное сообщение
112
+
113
  if resp.status_code != 200:
114
  st.error(f"Ошибка обновления токена (HTTP {resp.status_code}): {resp.text}")
115
  return False
116
 
117
  try:
118
  result = resp.json()
119
+ st.write(f"Ответ от VK API: {result}") # Отладочное сообщение
120
  except Exception as e:
121
  st.error(f"Не удалось распарсить ответ при обновлении токена: {e}")
122
  return False
 
133
  st.session_state["VK_REFRESH_TOKEN"] = result["refresh_token"]
134
 
135
  st.success("VK-токен обновлён успешно!")
136
+ st.write(f"Новый access_token: {new_access}") # Отладочное сообщение
137
+ if "refresh_token" in result:
138
+ st.write(f"Новый refresh_token: {result['refresh_token']}") # Отладочное сообщение
139
+
140
  return True
141
 
142
  # ------------- Парсер Telegram -------------