GitHub Action commited on
Commit
1d0d2aa
·
1 Parent(s): 7e5aed1

Sync from GitHub with Git LFS

Browse files
Files changed (1) hide show
  1. scripts/publish_to_blogger.py +14 -46
scripts/publish_to_blogger.py CHANGED
@@ -2,34 +2,28 @@ import json
2
  import os
3
  import hashlib
4
  import markdown2
5
- from googleapiclient.discovery import build
6
- from google.oauth2.credentials import Credentials
7
- from googleapiclient.errors import HttpError
8
  import pickle
9
  import sys
10
 
11
  # Файлы — всегда в корне репозитория
12
  JSON_FILE = os.path.join(os.getcwd(), "published_posts.json")
13
 
14
- # Загружаем токен
15
- TOKEN_FILE = os.environ.get('TOKEN_FILE', 'token.pkl')
16
- with open(TOKEN_FILE, 'rb') as f:
17
- creds = pickle.load(f)
18
-
19
- service = build('blogger', 'v3', credentials=creds)
20
- BLOG_ID = os.environ['BLOG_ID']
21
-
22
  # Загружаем список опубликованных постов
23
  if os.path.exists(JSON_FILE):
24
  try:
25
  with open(JSON_FILE, 'r', encoding='utf-8') as f:
26
  published = json.load(f)
27
  print(f"✅ Загружен список опубликованных постов: {list(published.keys())}")
 
28
  except json.JSONDecodeError:
29
  print("⚠ published_posts.json пустой или поврежден — начинаем с нуля.")
30
  published = {}
31
  else:
32
  published = {}
 
33
 
34
  # Обход markdown файлов
35
  for root, _, files in os.walk("docs"):
@@ -43,47 +37,21 @@ for root, _, files in os.walk("docs"):
43
  with open(path, 'r', encoding='utf-8') as f:
44
  md_content = f.read()
45
 
46
- html_content = markdown2.markdown(md_content)
47
  content_hash = hashlib.md5(md_content.encode('utf-8')).hexdigest()
48
 
49
- # Пропускаем если ничего не изменилось
50
  if title in published and published[title]['hash'] == content_hash:
51
  print(f"⏭ Без изменений: {title}")
52
  continue
53
 
54
- post = {
55
- "kind": "blogger#post",
56
- "title": title,
57
- "content": html_content
58
- }
59
-
60
- try:
61
- if title in published:
62
- post_id = published[title]['id']
63
- updated_post = service.posts().update(
64
- blogId=BLOG_ID, postId=post_id, body=post
65
- ).execute()
66
- print(f"♻️ Пост обновлён: {updated_post['url']}")
67
- published[title] = {"id": post_id, "hash": content_hash}
68
- else:
69
- new_post = service.posts().insert(
70
- blogId=BLOG_ID, body=post, isDraft=False
71
- ).execute()
72
- print(f"🆕 Пост опубликован: {new_post['url']}")
73
- published[title] = {"id": new_post['id'], "hash": content_hash}
74
-
75
- # 💾 сохраняем прогресс
76
- with open(JSON_FILE, 'w', encoding='utf-8') as f:
77
- json.dump(published, f, ensure_ascii=False, indent=2)
78
 
79
- print("✅ Завершаем выполнение после первого поста.")
80
- sys.exit(0)
81
 
82
- except HttpError as e:
83
- if e.resp.status == 403 and "quotaExceeded" in str(e):
84
- print("⚠ Достигнут лимит Blogger API. Попробуйте снова позже.")
85
- sys.exit(1)
86
- else:
87
- raise
88
 
89
- print("🎉 Все посты уже актуальны — новых публикаций нет.")
 
2
  import os
3
  import hashlib
4
  import markdown2
5
+ # from googleapiclient.discovery import build
6
+ # from google.oauth2.credentials import Credentials
7
+ # from googleapiclient.errors import HttpError
8
  import pickle
9
  import sys
10
 
11
  # Файлы — всегда в корне репозитория
12
  JSON_FILE = os.path.join(os.getcwd(), "published_posts.json")
13
 
 
 
 
 
 
 
 
 
14
  # Загружаем список опубликованных постов
15
  if os.path.exists(JSON_FILE):
16
  try:
17
  with open(JSON_FILE, 'r', encoding='utf-8') as f:
18
  published = json.load(f)
19
  print(f"✅ Загружен список опубликованных постов: {list(published.keys())}")
20
+ print(f"Содержимое JSON при загрузке:\n{json.dumps(published, ensure_ascii=False, indent=2)}")
21
  except json.JSONDecodeError:
22
  print("⚠ published_posts.json пустой или поврежден — начинаем с нуля.")
23
  published = {}
24
  else:
25
  published = {}
26
+ print("⚠ published_posts.json не найден — начинаем с нуля.")
27
 
28
  # Обход markdown файлов
29
  for root, _, files in os.walk("docs"):
 
37
  with open(path, 'r', encoding='utf-8') as f:
38
  md_content = f.read()
39
 
 
40
  content_hash = hashlib.md5(md_content.encode('utf-8')).hexdigest()
41
 
 
42
  if title in published and published[title]['hash'] == content_hash:
43
  print(f"⏭ Без изменений: {title}")
44
  continue
45
 
46
+ # В отладочном режиме пропускаем публикацию в Blogger
47
+ print(f"📝 Новый или изменённый пост: {title}")
48
+ published[title] = {"id": "DUMMY_ID", "hash": content_hash}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
+ # Логируем JSON перед записью
51
+ print(f"Содержимое JSON перед записью:\n{json.dumps(published, ensure_ascii=False, indent=2)}")
52
 
53
+ # Сохраняем JSON (можно оставить)
54
+ with open(JSON_FILE, 'w', encoding='utf-8') as f:
55
+ json.dump(published, f, ensure_ascii=False, indent=2)
 
 
 
56
 
57
+ print(" Скрипт завершён в отладочном режиме (публикация отключена).")