iflytek summary + cleanup
This commit is contained in:
68
analyzers/cross_analysis.py
Normal file
68
analyzers/cross_analysis.py
Normal file
@ -0,0 +1,68 @@
|
||||
import sys, os
|
||||
sys.path.insert(0, "/home/ubuntu/inspiration-collector")
|
||||
from tools.config import load_secrets, get_output_dir
|
||||
from tools.llm import DeepSeekClient
|
||||
from tools.memos_client import MemosClient
|
||||
from datetime import datetime, timezone, timedelta
|
||||
import subprocess
|
||||
|
||||
secrets = load_secrets()
|
||||
mc = MemosClient(secrets.get("memos_url", "http://localhost:5230"), secrets["memos_token"])
|
||||
llm = DeepSeekClient(secrets["deepseek_api_key"], secrets.get("deepseek_model", "deepseek-chat"), temperature=0.5)
|
||||
|
||||
TZ_BJ = timezone(timedelta(hours=8))
|
||||
|
||||
memos = mc.list_memos(days=7)
|
||||
|
||||
zju_keys = ["浙大", "浙江大学", "章丰", "有为与有效", "王坚", "黑土地", "牧场", "蓝天", "AI驱动", "产业发展新逻辑"]
|
||||
thu_keys = ["清华", "清华大学", "企业战略", "价值网", "战略转折点", "只有偏执狂", "创新者的窘境", "精益创业", "反脆弱", "第二曲线"]
|
||||
|
||||
zju_memos = [m for m in memos if any(k in m["content"] for k in zju_keys)]
|
||||
thu_memos = [m for m in memos if any(k in m["content"] for k in thu_keys)]
|
||||
|
||||
def fmt_memos(ms):
|
||||
lines = []
|
||||
for m in ms:
|
||||
ct = m["created_at"]
|
||||
try:
|
||||
dt = datetime.fromisoformat(ct.replace("Z", "+00:00")) + timedelta(hours=8)
|
||||
ts = dt.strftime("%m/%d %H:%M")
|
||||
except:
|
||||
ts = ct[:16]
|
||||
lines.append("- **[" + ts + "]** " + m["content"].strip())
|
||||
return "\n\n".join(lines)
|
||||
|
||||
zju_text = fmt_memos(zju_memos) or "(无浙大相关内容)"
|
||||
thu_text = fmt_memos(thu_memos) or "(无清华相关内容)"
|
||||
|
||||
user_prompt = "以下是我在浙大和清华两所大学学习的记录,请分析两者之间的关联:\n\n"
|
||||
user_prompt += "## 浙大学习内容\n\n" + zju_text + "\n\n"
|
||||
user_prompt += "## 清华学习内容\n\n" + thu_text + "\n\n"
|
||||
user_prompt += "请重点分析:1) 两个课程各自的核心理念 2) 两者之间是否存在逻辑关联或互补关系 3) 这些知识如何融合并指导我的实践"
|
||||
|
||||
system_prompt = """你是一个学习伙伴。用户先后在浙江大学和清华大学参加了培训,记录了学习心得。
|
||||
请对两个课程的内容进行对比分析,找出其中的关联和互补关系。
|
||||
要求:引用原文、融会贯通、有实质内容,不少于2000字。输出纯Markdown。"""
|
||||
|
||||
result = llm.ask(system_prompt=system_prompt, user_prompt=user_prompt)
|
||||
|
||||
date = datetime.now(timezone.utc)
|
||||
now_bj = datetime.now(TZ_BJ)
|
||||
content = "---\ndate: " + date.strftime("%Y-%m-%d") + "\ntype: cross-analysis\ntags: [浙大, 清华, 对比分析]\n---\n\n"
|
||||
content += result
|
||||
|
||||
daily_dir = os.path.join(get_output_dir("daily"), date.strftime("%Y-%m-%d"))
|
||||
os.makedirs(daily_dir, exist_ok=True)
|
||||
now_str = now_bj.strftime("%H%M%S")
|
||||
fname = date.strftime("%Y-%m-%d") + "_zju_thu_cross_analysis_" + now_str + ".md"
|
||||
fpath = os.path.join(daily_dir, fname)
|
||||
with open(fpath, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
print("Done: " + fpath + " (" + str(len(result)) + " chars)")
|
||||
|
||||
proj = "/home/ubuntu/inspiration-collector"
|
||||
subprocess.run(["git", "add", fpath], cwd=proj, capture_output=True, timeout=15)
|
||||
subprocess.run(["git", "commit", "-m", "zju-thu cross analysis " + now_str], cwd=proj, capture_output=True, timeout=15)
|
||||
subprocess.run(["git", "push", "origin", "main"], cwd=proj, capture_output=True, timeout=30)
|
||||
print("Pushed to Gitea")
|
||||
@ -180,7 +180,7 @@ def run(memos_client, llm_client, date=None):
|
||||
|
||||
if not memos:
|
||||
logger.info("No memos today, skipping")
|
||||
content = format_daily_digest(date, ai_body="今天没有记录灵感。")
|
||||
content = format_daily_digest(date, ai_body="今天没有记录灵感。", tags=["灵感收集器", "每日总结", "静默"], doc_type="daily-digest")
|
||||
date_str = date.strftime("%Y-%m-%d")
|
||||
daily_dir = os.path.join(get_output_dir("daily"), date_str)
|
||||
os.makedirs(daily_dir, exist_ok=True)
|
||||
@ -223,7 +223,7 @@ def run(memos_client, llm_client, date=None):
|
||||
)
|
||||
|
||||
# Step 5: Wrap with frontmatter and write
|
||||
content = format_daily_digest(date, ai_body=raw_response)
|
||||
content = format_daily_digest(date, ai_body=raw_response, tags=["灵感收集器", "每日总结", "AI分析"], doc_type="daily-digest")
|
||||
|
||||
date_str = date.strftime("%Y-%m-%d")
|
||||
daily_dir = os.path.join(get_output_dir("daily"), date_str)
|
||||
|
||||
118
analyzers/personality_analysis.py
Normal file
118
analyzers/personality_analysis.py
Normal file
@ -0,0 +1,118 @@
|
||||
import sys, os, json
|
||||
sys.path.insert(0, "/home/ubuntu/inspiration-collector")
|
||||
from tools.config import load_secrets, get_output_dir
|
||||
from tools.llm import DeepSeekClient
|
||||
from tools.memos_client import MemosClient
|
||||
from datetime import datetime, timezone, timedelta
|
||||
import subprocess
|
||||
|
||||
secrets = load_secrets()
|
||||
mc = MemosClient(secrets.get("memos_url", "http://localhost:5230"), secrets["memos_token"])
|
||||
llm = DeepSeekClient(secrets["deepseek_api_key"], secrets.get("deepseek_model", "deepseek-chat"), temperature=0.7, max_retries=5)
|
||||
TZ_BJ = timezone(timedelta(hours=8))
|
||||
|
||||
VAULT = "/home/ubuntu/obsidian-vault"
|
||||
|
||||
def read_vault_sample():
|
||||
parts = []
|
||||
dirs_to_read = [
|
||||
"01 写作/随笔", "03 日志/日省录", "03 日志/交易日志",
|
||||
"00 Inbox", "05 投资交易", "02 阅读学习/微信读书阅读摘录"
|
||||
]
|
||||
for rel in dirs_to_read:
|
||||
d = os.path.join(VAULT, rel)
|
||||
if not os.path.isdir(d): continue
|
||||
files = sorted([f for f in os.listdir(d) if f.endswith(".md")])
|
||||
for fname in files[:5]:
|
||||
fpath = os.path.join(d, fname)
|
||||
try:
|
||||
with open(fpath, "r", encoding="utf-8", errors="ignore") as f:
|
||||
c = f.read()
|
||||
if c.startswith("---"):
|
||||
idx = c.find("---", 3)
|
||||
if idx != -1: c = c[idx+3:].strip()
|
||||
if len(c) > 1500: c = c[:1500] + "\n...[截断]"
|
||||
parts.append("### " + fname + "\n\n" + c)
|
||||
except: pass
|
||||
return "\n\n".join(parts)
|
||||
|
||||
# Also read key philosophical/life reflection pieces
|
||||
def read_key_writings():
|
||||
key_files = [
|
||||
"01 写作/随笔/朝闻道,夕死可矣之我见.md",
|
||||
"01 写作/随笔/君子不立危墙之下.md",
|
||||
"01 写作/随笔/我曾在魔窟走过一遭.md",
|
||||
"01 写作/随笔/很多人的一生,就是狗生.md",
|
||||
"01 写作/随笔/长时间的深入思考,才有可能灵光一闪.md",
|
||||
"01 写作/个人修养十八字.md",
|
||||
"01 写作/我的个人规则.md",
|
||||
"01 写作/道之既出,淡乎其无味.md",
|
||||
]
|
||||
parts = []
|
||||
for rel in key_files:
|
||||
fp = os.path.join(VAULT, rel)
|
||||
if not os.path.isfile(fp): continue
|
||||
try:
|
||||
with open(fp, "r", encoding="utf-8", errors="ignore") as f:
|
||||
c = f.read()
|
||||
if c.startswith("---"):
|
||||
idx = c.find("---", 3)
|
||||
if idx != -1: c = c[idx+3:].strip()
|
||||
if len(c) > 2000: c = c[:2000] + "\n...[截断]"
|
||||
parts.append("### " + rel + "\n\n" + c)
|
||||
except: pass
|
||||
return "\n\n".join(parts)
|
||||
|
||||
memos_raw = mc.list_memos(days=30)
|
||||
memo_texts = []
|
||||
for m in memos_raw:
|
||||
ct = m["created_at"]
|
||||
try:
|
||||
dt = datetime.fromisoformat(ct.replace("Z", "+00:00")) + timedelta(hours=8)
|
||||
ts = dt.strftime("%m/%d %H:%M")
|
||||
except:
|
||||
ts = ct[:16]
|
||||
memo_texts.append("- [" + ts + "] " + m["content"].strip())
|
||||
memo_block = "\n".join(memo_texts[-50:])
|
||||
|
||||
print("Reading vault...")
|
||||
vault_sample = read_vault_sample()
|
||||
key_writings = read_key_writings()
|
||||
|
||||
prompt = "以下是一个人的全部思想素材——他的私人写作、哲学思考、阅读笔记、日常灵感。请基于这些素材进行深度人格分析。\n\n"
|
||||
prompt += "## 一、代表性随笔与哲学思考\n\n" + key_writings + "\n\n"
|
||||
prompt += "## 二、文库代表性笔记\n\n" + vault_sample[:8000] + "\n\n"
|
||||
prompt += "## 三、近期灵感碎片\n\n" + memo_block + "\n\n"
|
||||
prompt += "请从三个维度回答:\n\n"
|
||||
prompt += "### 1. 人格素描\n"
|
||||
prompt += "用500字左右描述这个人的核心人格特征——他的动力来源、思维模式、情感模式、与世界互动的方式。不要套用MBTI标签,用他自己的语言和事例说话。\n\n"
|
||||
prompt += "### 2. 最适合的哲学流派与作者\n"
|
||||
prompt += "分析他天然亲近哪个哲学流派(存在主义?斯多葛?道家?儒家?尼采?),以及哪位作者的思想与他最为共振。要给出具体理由,引用他原文中的证据。\n\n"
|
||||
prompt += "### 3. 生命之书类比\n"
|
||||
prompt += "如果有人把他的思想、经历、感悟编撰成一本书,这本书会和市面上哪本现成的书最为相似?可以是小说、哲学著作、传记、随笔集。分析相似之处和差异。\n\n"
|
||||
prompt += "请输出纯Markdown,字数不限,但务必有实质、有证据、有引用。"
|
||||
|
||||
sp = "你是一个深度的文本分析者和人格解读者。你将从一个人的全部写作素材中,提炼出他的人格内核、哲学倾向和思想谱系。用他的原文作为证据,不要泛泛而谈。输出纯Markdown。"
|
||||
|
||||
print("Calling DeepSeek API...")
|
||||
result = llm.ask(system_prompt=sp, user_prompt=prompt)
|
||||
|
||||
date = datetime.now(timezone.utc)
|
||||
now_bj = datetime.now(TZ_BJ)
|
||||
content = "---\ndate: " + date.strftime("%Y-%m-%d") + "\ntype: personality-deep\ntags: [人格分析, 哲学, 深度解读]\n---\n\n"
|
||||
content += result
|
||||
|
||||
daily_dir = os.path.join(get_output_dir("daily"), date.strftime("%Y-%m-%d"))
|
||||
os.makedirs(daily_dir, exist_ok=True)
|
||||
now_str = now_bj.strftime("%H%M%S")
|
||||
fname = date.strftime("%Y-%m-%d") + "_personality_deep_" + now_str + ".md"
|
||||
fpath = os.path.join(daily_dir, fname)
|
||||
with open(fpath, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
print("Done: " + fpath + " (" + str(len(result)) + " chars)")
|
||||
proj = "/home/ubuntu/inspiration-collector"
|
||||
subprocess.run(["git", "add", fpath], cwd=proj, capture_output=True, timeout=15)
|
||||
subprocess.run(["git", "commit", "-m", "deep personality analysis " + now_str], cwd=proj, capture_output=True, timeout=15)
|
||||
subprocess.run(["git", "push", "origin", "main"], cwd=proj, capture_output=True, timeout=30)
|
||||
print("Pushed")
|
||||
64
analyzers/thu_analysis.py
Normal file
64
analyzers/thu_analysis.py
Normal file
@ -0,0 +1,64 @@
|
||||
import sys, os
|
||||
sys.path.insert(0, "/home/ubuntu/inspiration-collector")
|
||||
from tools.config import load_secrets, get_output_dir
|
||||
from tools.llm import DeepSeekClient
|
||||
from tools.memos_client import MemosClient
|
||||
from datetime import datetime, timezone, timedelta
|
||||
import subprocess
|
||||
|
||||
secrets = load_secrets()
|
||||
mc = MemosClient(secrets.get("memos_url", "http://localhost:5230"), secrets["memos_token"])
|
||||
llm = DeepSeekClient(secrets["deepseek_api_key"], secrets.get("deepseek_model", "deepseek-chat"), temperature=0.5)
|
||||
|
||||
TZ_BJ = timezone(timedelta(hours=8))
|
||||
|
||||
memos = mc.list_memos(days=7)
|
||||
keywords = ["清华", "清华大学", "企业战略", "价值网", "战略转折点"]
|
||||
thu_memos = []
|
||||
for m in memos:
|
||||
if any(kw in m["content"] for kw in keywords):
|
||||
thu_memos.append(m)
|
||||
|
||||
if not thu_memos:
|
||||
print("未找到清华相关灵感")
|
||||
sys.exit(0)
|
||||
|
||||
lines = []
|
||||
for m in thu_memos:
|
||||
ct = m["created_at"]
|
||||
try:
|
||||
dt = datetime.fromisoformat(ct.replace("Z", "+00:00")) + timedelta(hours=8)
|
||||
ts = dt.strftime("%m/%d %H:%M")
|
||||
except:
|
||||
ts = ct[:16]
|
||||
lines.append("- **[" + ts + "]** " + m["content"].strip())
|
||||
|
||||
user_prompt = "以下是我在清华大学学习期间记录的灵感,请基于此写一篇专题分析:\n\n" + "\n\n".join(lines)
|
||||
user_prompt += "\n\n请重点分析:1) 课程的核心理论框架 2) 推荐的书籍背景介绍 3) 这些知识如何与我的实践相结合"
|
||||
|
||||
system_prompt = """你是一个私人学习伙伴。用户正在清华大学参加培训,以下是他记录的与企业战略课程相关的灵感。
|
||||
请只分析这些内容,不要涉及其他话题。
|
||||
要求:引用原文、融会贯通、有实质内容,不少于2000字。输出纯Markdown。"""
|
||||
|
||||
result = llm.ask(system_prompt=system_prompt, user_prompt=user_prompt)
|
||||
|
||||
date = datetime.now(timezone.utc)
|
||||
now_bj = datetime.now(TZ_BJ)
|
||||
content = "---\ndate: " + date.strftime("%Y-%m-%d") + "\ntype: thu-special\ntags: [清华学习, 企业战略, 专题分析]\n---\n\n"
|
||||
content += result
|
||||
|
||||
daily_dir = os.path.join(get_output_dir("daily"), date.strftime("%Y-%m-%d"))
|
||||
os.makedirs(daily_dir, exist_ok=True)
|
||||
now_str = now_bj.strftime("%H%M%S")
|
||||
fname = date.strftime("%Y-%m-%d") + "_thu_analysis_" + now_str + ".md"
|
||||
fpath = os.path.join(daily_dir, fname)
|
||||
with open(fpath, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
print("Done: " + fpath + " (" + str(len(result)) + " chars)")
|
||||
|
||||
proj = "/home/ubuntu/inspiration-collector"
|
||||
subprocess.run(["git", "add", fpath], cwd=proj, capture_output=True, timeout=15)
|
||||
subprocess.run(["git", "commit", "-m", "thu analysis " + now_str], cwd=proj, capture_output=True, timeout=15)
|
||||
subprocess.run(["git", "push", "origin", "main"], cwd=proj, capture_output=True, timeout=30)
|
||||
print("Pushed to Gitea")
|
||||
66
analyzers/zju_analysis.py
Normal file
66
analyzers/zju_analysis.py
Normal file
@ -0,0 +1,66 @@
|
||||
import sys, os, json
|
||||
sys.path.insert(0, '/home/ubuntu/inspiration-collector')
|
||||
from tools.config import load_secrets, get_output_dir
|
||||
from tools.llm import DeepSeekClient
|
||||
from tools.memos_client import MemosClient
|
||||
from datetime import datetime, timezone, timedelta
|
||||
import subprocess
|
||||
|
||||
secrets = load_secrets()
|
||||
mc = MemosClient(secrets.get("memos_url", "http://localhost:5230"), secrets["memos_token"])
|
||||
llm = DeepSeekClient(secrets["deepseek_api_key"], secrets.get("deepseek_model", "deepseek-chat"), temperature=0.5)
|
||||
|
||||
TZ_BJ = timezone(timedelta(hours=8))
|
||||
|
||||
memos = mc.list_memos(days=7)
|
||||
keywords = ["浙大", "浙江大学", "章丰", "有为与有效", "王坚", "黑土地", "牧场", "蓝天", "AI驱动", "产业发展新逻辑"]
|
||||
zju_memos = []
|
||||
for m in memos:
|
||||
content = m["content"]
|
||||
if any(kw in content for kw in keywords):
|
||||
zju_memos.append(m)
|
||||
|
||||
if not zju_memos:
|
||||
print("未找到浙大相关灵感")
|
||||
sys.exit(0)
|
||||
|
||||
lines = []
|
||||
for m in zju_memos:
|
||||
ct = m["created_at"]
|
||||
try:
|
||||
dt = datetime.fromisoformat(ct.replace("Z", "+00:00")) + timedelta(hours=8)
|
||||
ts = dt.strftime("%m/%d %H:%M")
|
||||
except:
|
||||
ts = ct[:16]
|
||||
line = "- **[" + ts + "]** " + m["content"].strip()
|
||||
lines.append(line)
|
||||
|
||||
user_prompt = "以下是我在浙江大学学习期间记录的灵感,请基于此写一篇专题分析:\n\n" + "\n\n".join(lines)
|
||||
user_prompt += "\n\n请重点分析:1) 课程的核心内容 2) 推荐的书和人物的背景介绍 3) 这些知识如何与我的个人系统构建相结合"
|
||||
|
||||
system_prompt = """你是一个私人学习伙伴。用户正在浙江大学参加培训,以下是他记录的与学习相关的灵感。
|
||||
请只分析这些内容,不要涉及其他话题。
|
||||
要求:引用原文、融会贯通、有实质内容,不少于2000字。输出纯Markdown。"""
|
||||
|
||||
result = llm.ask(system_prompt=system_prompt, user_prompt=user_prompt)
|
||||
|
||||
date = datetime.now(timezone.utc)
|
||||
now_bj = datetime.now(TZ_BJ)
|
||||
content = "---\ndate: " + date.strftime("%Y-%m-%d") + "\ntype: zju-special\ntags: [浙大学习, 专题分析]\n---\n\n"
|
||||
content += result
|
||||
|
||||
daily_dir = os.path.join(get_output_dir("daily"), date.strftime("%Y-%m-%d"))
|
||||
os.makedirs(daily_dir, exist_ok=True)
|
||||
now_str = now_bj.strftime("%H%M%S")
|
||||
fname = date.strftime("%Y-%m-%d") + "_zju_analysis_" + now_str + ".md"
|
||||
fpath = os.path.join(daily_dir, fname)
|
||||
with open(fpath, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
print("Done: " + fpath + " (" + str(len(result)) + " chars)")
|
||||
|
||||
proj = "/home/ubuntu/inspiration-collector"
|
||||
subprocess.run(["git", "add", fpath], cwd=proj, capture_output=True, timeout=15)
|
||||
subprocess.run(["git", "commit", "-m", "zju analysis " + now_str], cwd=proj, capture_output=True, timeout=15)
|
||||
subprocess.run(["git", "push", "origin", "main"], cwd=proj, capture_output=True, timeout=30)
|
||||
print("Pushed to Gitea")
|
||||
52
analyzers/zju_brief.py
Normal file
52
analyzers/zju_brief.py
Normal file
@ -0,0 +1,52 @@
|
||||
import sys, os
|
||||
sys.path.insert(0, "/home/ubuntu/inspiration-collector")
|
||||
from tools.config import load_secrets, get_output_dir
|
||||
from tools.llm import DeepSeekClient
|
||||
from tools.memos_client import MemosClient
|
||||
from datetime import datetime, timezone, timedelta
|
||||
import subprocess
|
||||
|
||||
secrets = load_secrets()
|
||||
mc = MemosClient(secrets.get("memos_url", "http://localhost:5230"), secrets["memos_token"])
|
||||
llm = DeepSeekClient(secrets["deepseek_api_key"], secrets.get("deepseek_model", "deepseek-chat"), temperature=0.3)
|
||||
|
||||
TZ_BJ = timezone(timedelta(hours=8))
|
||||
memos = mc.list_memos(days=7)
|
||||
|
||||
keywords = ["浙大", "浙江大学", "章丰", "有为与有效", "王坚", "黑土地", "牧场", "蓝天", "AI驱动", "产业发展新逻辑"]
|
||||
zju_memos = [m for m in memos if any(k in m["content"] for k in keywords)]
|
||||
|
||||
lines = []
|
||||
for m in zju_memos:
|
||||
ct = m["created_at"]
|
||||
try:
|
||||
dt = datetime.fromisoformat(ct.replace("Z", "+00:00")) + timedelta(hours=8)
|
||||
ts = dt.strftime("%m/%d %H:%M")
|
||||
except:
|
||||
ts = ct[:16]
|
||||
lines.append("- **[" + ts + "]** " + m["content"].strip())
|
||||
|
||||
prompt = "以下是我在浙大学习的相关灵感,请简要分析章丰老师课程的最新内容(1000字左右):\n\n" + "\n\n".join(lines)
|
||||
sp = "你是一个学习伙伴,对浙大课程内容进行简要分析。控制在1000字左右,输出纯Markdown。"
|
||||
|
||||
result = llm.ask(system_prompt=sp, user_prompt=prompt)
|
||||
|
||||
date = datetime.now(timezone.utc)
|
||||
now_bj = datetime.now(TZ_BJ)
|
||||
content = "---\ndate: " + date.strftime("%Y-%m-%d") + "\ntype: zju-brief\ntags: [浙大, 简要分析]\n---\n\n"
|
||||
content += result
|
||||
|
||||
daily_dir = os.path.join(get_output_dir("daily"), date.strftime("%Y-%m-%d"))
|
||||
os.makedirs(daily_dir, exist_ok=True)
|
||||
now_str = now_bj.strftime("%H%M%S")
|
||||
fname = date.strftime("%Y-%m-%d") + "_zju_brief_" + now_str + ".md"
|
||||
fpath = os.path.join(daily_dir, fname)
|
||||
with open(fpath, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
print("Done: " + fpath + " (" + str(len(result)) + " chars)")
|
||||
proj = "/home/ubuntu/inspiration-collector"
|
||||
subprocess.run(["git", "add", fpath], cwd=proj, capture_output=True, timeout=15)
|
||||
subprocess.run(["git", "commit", "-m", "zju brief " + now_str], cwd=proj, capture_output=True, timeout=15)
|
||||
subprocess.run(["git", "push", "origin", "main"], cwd=proj, capture_output=True, timeout=30)
|
||||
print("Pushed")
|
||||
Reference in New Issue
Block a user