Dink0 commited on
Commit
ffbd715
·
verified ·
1 Parent(s): 92eba83

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -72
app.py CHANGED
@@ -18,8 +18,9 @@ TELEGRAM_STRING_SESSION = "1ApWapzMBu8a9o9Wu1GexPdkO7Jsr6po1xym67EcfAxkEbVx1oxw6
18
 
19
  # ----------- Настройки ВКонтакте -----------
20
  # Вставляем ваши токены
21
- VK_ACCESS_TOKEN = "vk2.a.ankDHXsA1GZodkWhbdptbHT3c3avdPOZySVHuXC5Akt0W1ACTG8X1D0P1gZ7X3vGH9dGcFhIUqqYwcmmXWiXEjHn5F9k4SaDJ29l4TSdzLVprYg8_XB-VmzgaMaA15eTakPELNVuAqh0_Z10MkPX-rol0SfvJiHX1oyjUpZ8jGERVdxNHUYQ2zF_YCRCuL0uOwp6jIjWY3kbBOUNr9TAGGCfWwjDI9j1LqU6Z_CAQWljTLesDa7d5G2CqLDpR8WV"
22
- VK_REFRESH_TOKEN = "vk2.a.J9NgIEDDjePSb5ucS6wQGJzExbipqWs_wanF5cbaYuSVT0ztWId67eUvqG5y0nPQZ4YZmGiI3QqrLFYTKmM_5qNUaML3ulwFwOg_sJc8QopBije3CIHJDKGBGK1wQA_UCHVZL5Non75ZMH8qmx6EBIu1sGHnnwn5tl58QNtiMw1pUkebr3sZdjXpnDRPoC_b-BJ3_0lUfFmQPaeS3mo3sspi38Gn3Ev6PPpRY8GBDBLcjC1Jmm-Tj5ALll66AdcK"
 
23
 
24
  # Остальные настройки ВКонтакте
25
  VK_CLIENT_ID = os.environ.get("VK_CLIENT_ID", "")
@@ -55,6 +56,8 @@ if "VK_ACCESS_TOKEN" not in st.session_state:
55
  st.session_state["VK_ACCESS_TOKEN"] = VK_ACCESS_TOKEN
56
  if "VK_REFRESH_TOKEN" not in st.session_state:
57
  st.session_state["VK_REFRESH_TOKEN"] = VK_REFRESH_TOKEN
 
 
58
 
59
  def human_format_views(num: int) -> str:
60
  if num < 1000:
@@ -75,17 +78,18 @@ def refresh_vk_token() -> bool:
75
  """
76
  # Берём текущие значения из session_state
77
  current_refresh = st.session_state["VK_REFRESH_TOKEN"]
78
- if not current_refresh or not VK_CLIENT_ID or not VK_CLIENT_SECRET:
79
- st.error("Невозможно обновить токен: нет refresh_token, client_id или client_secret.")
 
80
  return False
81
 
82
- url = "https://id.vk.com/oauth2/auth" # либо https://id.vk.com/vkid/oauth2/token - зависит от вашей схемы
83
  data = {
84
  "grant_type": "refresh_token",
85
  "client_id": VK_CLIENT_ID,
86
  "client_secret": VK_CLIENT_SECRET,
87
- "refresh_token": current_refresh
88
- # Возможно, нужно device_id, если схема требует
89
  }
90
 
91
  resp = requests.post(url, data=data)
@@ -249,68 +253,4 @@ if st.button("Обработать"):
249
  vk_total_views = 0
250
 
251
  for link in lines:
252
- platform = detect_platform(link)
253
- if platform == "telegram":
254
- res_line, views = process_telegram_link(link)
255
- tg_results.append((res_line, views))
256
- tg_total_views += views
257
- elif platform == "vk":
258
- res_line, views = process_vk_link(link)
259
- vk_results.append((res_line, views))
260
- vk_total_views += views
261
- else:
262
- st.markdown(f"**Ошибка**: не распознал платформу — {link}", unsafe_allow_html=True)
263
-
264
- tg_results.sort(key=lambda x: x[1], reverse=True)
265
- vk_results.sort(key=lambda x: x[1], reverse=True)
266
-
267
- md_lines = []
268
-
269
- # --- Telegram ---
270
- md_lines.append("## Telegram")
271
- md_lines.append(f"**Суммарный охват постов — {human_format_views(tg_total_views)} просмотров**")
272
- if tg_results:
273
- for r_line, _ in tg_results:
274
- md_lines.append(r_line)
275
- else:
276
- md_lines.append("_Нет ссылок на Telegram_")
277
- md_lines.append("")
278
-
279
- # --- ВКонтакте ---
280
- md_lines.append("## ВКонтакте")
281
- md_lines.append(f"**Суммарный охват постов — {human_format_views(vk_total_views)} просмотров**")
282
- if vk_results:
283
- for r_line, _ in vk_results:
284
- md_lines.append(r_line)
285
- else:
286
- md_lines.append("_Нет ссылок на ВКонтакте_")
287
- md_lines.append("")
288
-
289
- st.markdown("### Результат:")
290
- for line in md_lines:
291
- st.markdown(line, unsafe_allow_html=True)
292
-
293
- markdown_result = "\n".join(md_lines)
294
-
295
- # Кнопка копирования
296
- copy_button_html = f"""
297
- <html>
298
- <head>
299
- <script>
300
- function copyToClipboard() {{
301
- const btn = document.getElementById("copy-btn");
302
- const text = `{markdown_result}`;
303
- navigator.clipboard.writeText(text).then(function() {{
304
- btn.innerText = "Скопировано успешно";
305
- }}, function(err) {{
306
- btn.innerText = "Ошибка при копировании";
307
- }});
308
- }}
309
- </script>
310
- </head>
311
- <body>
312
- <button id="copy-btn" onclick="copyToClipboard()" style="padding: 8px 16px; font-size: 16px;">Скопировать код</button>
313
- </body>
314
- </html>
315
- """
316
- components.html(copy_button_html, height=80)
 
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", "")
 
56
  st.session_state["VK_ACCESS_TOKEN"] = VK_ACCESS_TOKEN
57
  if "VK_REFRESH_TOKEN" not in st.session_state:
58
  st.session_state["VK_REFRESH_TOKEN"] = VK_REFRESH_TOKEN
59
+ if "VK_DEVICE_ID" not in st.session_state:
60
+ st.session_state["VK_DEVICE_ID"] = VK_DEVICE_ID
61
 
62
  def human_format_views(num: int) -> str:
63
  if num < 1000:
 
78
  """
79
  # Берём текущие значения из session_state
80
  current_refresh = st.session_state["VK_REFRESH_TOKEN"]
81
+ device_id = st.session_state.get("VK_DEVICE_ID", "") # Получаем device_id
82
+ if not current_refresh or not VK_CLIENT_ID or not VK_CLIENT_SECRET or not device_id:
83
+ st.error("Невозможно обновить токен: нет refresh_token, client_id, client_secret или device_id.")
84
  return False
85
 
86
+ url = "https://id.vk.com/oauth2/auth" # Endpoint для обновления токена
87
  data = {
88
  "grant_type": "refresh_token",
89
  "client_id": VK_CLIENT_ID,
90
  "client_secret": VK_CLIENT_SECRET,
91
+ "refresh_token": current_refresh,
92
+ "device_id": device_id # Передаем device_id
93
  }
94
 
95
  resp = requests.post(url, data=data)
 
253
  vk_total_views = 0
254
 
255
  for link in lines:
256
+ platform = detect_platform(