GitHub Action commited on
Commit
28f91f7
·
1 Parent(s): af8360f

Sync from GitHub with Git LFS

Browse files
Files changed (1) hide show
  1. scripts/publish_to_blogger.py +10 -9
scripts/publish_to_blogger.py CHANGED
@@ -3,7 +3,7 @@ import json
3
  import hashlib
4
  import time
5
  import re
6
- import pickle
7
  from pathlib import Path
8
 
9
  import markdown2
@@ -26,7 +26,6 @@ def convert_md_links(md_text: str) -> str:
26
  text = match.group(1)
27
  link = match.group(2)
28
 
29
- # если это абсолютный URL или не .md — оставляем как есть
30
  if link.startswith("http://") or link.startswith("https://") or not link.endswith(".md"):
31
  return match.group(0)
32
 
@@ -53,20 +52,18 @@ def file_hash(path):
53
  return hashlib.md5(Path(path).read_bytes()).hexdigest()
54
 
55
 
56
- def main():
57
- # Загружаем токен.json (который кладём через secrets.TOKEN_JSON)
58
  creds = None
59
  if os.path.exists(TOKEN_FILE):
60
  creds = Credentials.from_authorized_user_file(TOKEN_FILE, ["https://www.googleapis.com/auth/blogger"])
61
 
62
- # Если токен просрочен, обновим
63
  if creds and creds.expired and creds.refresh_token:
64
  creds.refresh(Request())
65
  with open(TOKEN_FILE, "w") as token_file:
66
  token_file.write(creds.to_json())
67
 
68
  service = build("blogger", "v3", credentials=creds)
69
-
70
  published = load_published()
71
 
72
  md_files = list(Path("docs").rglob("*.md"))
@@ -74,10 +71,10 @@ def main():
74
  name = md_file.stem
75
  h = file_hash(md_file)
76
 
77
- if name in published and published[name]["hash"] == h:
78
  continue # ничего не изменилось
79
 
80
- print(f"📝 Новый или изменённый пост: {name}")
81
 
82
  md_text = md_file.read_text(encoding="utf-8")
83
  md_text = convert_md_links(md_text)
@@ -112,4 +109,8 @@ def main():
112
 
113
 
114
  if __name__ == "__main__":
115
- main()
 
 
 
 
 
3
  import hashlib
4
  import time
5
  import re
6
+ import argparse
7
  from pathlib import Path
8
 
9
  import markdown2
 
26
  text = match.group(1)
27
  link = match.group(2)
28
 
 
29
  if link.startswith("http://") or link.startswith("https://") or not link.endswith(".md"):
30
  return match.group(0)
31
 
 
52
  return hashlib.md5(Path(path).read_bytes()).hexdigest()
53
 
54
 
55
+ def main(force: bool = False):
56
+ # Загружаем токен.json
57
  creds = None
58
  if os.path.exists(TOKEN_FILE):
59
  creds = Credentials.from_authorized_user_file(TOKEN_FILE, ["https://www.googleapis.com/auth/blogger"])
60
 
 
61
  if creds and creds.expired and creds.refresh_token:
62
  creds.refresh(Request())
63
  with open(TOKEN_FILE, "w") as token_file:
64
  token_file.write(creds.to_json())
65
 
66
  service = build("blogger", "v3", credentials=creds)
 
67
  published = load_published()
68
 
69
  md_files = list(Path("docs").rglob("*.md"))
 
71
  name = md_file.stem
72
  h = file_hash(md_file)
73
 
74
+ if not force and name in published and published[name]["hash"] == h:
75
  continue # ничего не изменилось
76
 
77
+ print(f"📝 {'Форс-обновление' if force else 'Новый или изменённый'} пост: {name}")
78
 
79
  md_text = md_file.read_text(encoding="utf-8")
80
  md_text = convert_md_links(md_text)
 
109
 
110
 
111
  if __name__ == "__main__":
112
+ parser = argparse.ArgumentParser()
113
+ parser.add_argument("--force", action="store_true", help="Обновить все посты, даже без изменений")
114
+ args = parser.parse_args()
115
+
116
+ main(force=args.force)