20250117.1737136826

This commit is contained in:
fz0x1 2025-01-17 19:00:26 +01:00
parent 0fb210e8cb
commit 0de118b032
2 changed files with 49 additions and 15 deletions

View file

@ -49,7 +49,7 @@ ex ()
DIARY="default" DIARY="default"
dis () diary_string ()
{ {
"${HOME:?}/scripts/bin/diary.py" insert "${DIARY:?}" single "$*" "${HOME:?}/scripts/bin/diary.py" insert "${DIARY:?}" single "$*"
} }
@ -125,9 +125,9 @@ alias relmacs="doom sync"
## diary ## diary
# alias di="diary.sh" # alias di="diary.sh"
alias m2jrnl="diary.py export ${DIARY:?} diaryf" alias m2jrnl="diary.py export ${DIARY:?} diaryf"
alias di="diary.py insert"
alias dib="diary.py insert ${DIARY:?} bulk" alias dib="diary.py insert ${DIARY:?} bulk"
alias dis=" dis" alias dis=" diary_string"
alias dit="diary.py doctor ${DIARY:?}"
# bindkeys # bindkeys
## autosuggest ## autosuggest

View file

@ -3,6 +3,7 @@
import base64 import base64
import hashlib import hashlib
import json import json
import logging
import os import os
import re import re
import shlex import shlex
@ -36,6 +37,17 @@ class Config:
Config.validate() Config.validate()
def make_logger():
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
handlers=[
logging.FileHandler(Path.home() / ".diary_requests.log", mode="a"),
],
)
return logging.getLogger("urllib_logger")
def get_diary_path_by_name(name: str): def get_diary_path_by_name(name: str):
result = subprocess.run(["jrnl", "--list"], capture_output=True, text=True) result = subprocess.run(["jrnl", "--list"], capture_output=True, text=True)
if result.stderr: if result.stderr:
@ -74,23 +86,38 @@ def convert_diary_date(date_str):
def fetch_data(url, headers, data=None): def fetch_data(url, headers, data=None):
logit = make_logger()
method = "POST" if data else "GET" method = "POST" if data else "GET"
encoded_data = urllib.parse.urlencode(data).encode("utf-8") if data else None encoded_data = urllib.parse.urlencode(data).encode("utf-8") if data else None
req = urllib.request.Request(url, headers=headers, data=encoded_data, method=method) req = urllib.request.Request(url, headers=headers, data=encoded_data, method=method)
req.add_header("Content-Type", "application/x-www-form-urlencoded") req.add_header("Content-Type", "application/x-www-form-urlencoded")
try:
with urllib.request.urlopen(req) as response: with urllib.request.urlopen(req) as response:
if response.status != 200: if response.status != 200:
logit.error(response.read())
sys.exit(f"HTTP error {response.status}") sys.exit(f"HTTP error {response.status}")
return json.loads(response.read().decode("utf-8")) data = response.read()
logit.info(data.decode("utf-8"))
return json.loads(data.decode("utf-8"))
except Exception as e:
logit.error(str(e))
raise
def delete_entity(url, headers): def delete_entity(url, headers):
logit = make_logger()
req = urllib.request.Request(url, headers=headers, method="DELETE") req = urllib.request.Request(url, headers=headers, method="DELETE")
try:
with urllib.request.urlopen(req) as response: with urllib.request.urlopen(req) as response:
if response.status != 200: if response.status != 200:
logit.error(response.read())
sys.exit(f"HTTP delete error {response.status}") sys.exit(f"HTTP delete error {response.status}")
logit.info(response.read().decode("utf-8"))
except Exception as e:
logit.error(str(e))
raise
def db_connection(diary_path: Path): def db_connection(diary_path: Path):
@ -230,7 +257,10 @@ def fetch_weather(
def doctor(): def doctor():
diary_name = sys.argv[1] if len(sys.argv) < 3:
sys.exit("Usage: script.py doctor <diary_name>")
diary_name = sys.argv[2]
diary_path = get_diary_path_by_name(diary_name).parent diary_path = get_diary_path_by_name(diary_name).parent
conn = db_connection(diary_path) conn = db_connection(diary_path)
@ -246,7 +276,10 @@ def doctor():
"SELECT * FROM location WHERE metadata_id = ?", (m[0],) "SELECT * FROM location WHERE metadata_id = ?", (m[0],)
).fetchall() ).fetchall()
print(weather, location) if not weather:
print(f"There is no weather info about {m[0]} - {m[1]}")
if not location:
print(f"There is no weather info about {m[0]} - {m[1]}")
def make_hash(file: Path): def make_hash(file: Path):
@ -399,11 +432,12 @@ def insert():
if __name__ == "__main__": if __name__ == "__main__":
# doctor() if sys.argv[1] == "export":
if "export" in sys.argv:
export() export()
elif "insert" in sys.argv: elif sys.argv[1] == "insert":
insert() insert()
elif sys.argv[1] == "doctor":
doctor()
else: else:
print("Unknown command") print("Unknown command")
sys.exit(1) sys.exit(1)