mirror of
https://github.com/tcsenpai/pensieve.git
synced 2025-06-08 12:15:26 +00:00
feat: add default library and command shortcuts for it
This commit is contained in:
parent
7e43bc0861
commit
81ba2cd2d2
@ -762,5 +762,77 @@ def init():
|
|||||||
print("Initialization failed. Please check the error messages above.")
|
print("Initialization failed. Please check the error messages above.")
|
||||||
|
|
||||||
|
|
||||||
|
@app.command("scan")
|
||||||
|
def scan_default_library():
|
||||||
|
"""
|
||||||
|
Scan the screenshots directory and add it to the library if empty.
|
||||||
|
"""
|
||||||
|
# Get the default library
|
||||||
|
response = httpx.get(f"{BASE_URL}/libraries")
|
||||||
|
if response.status_code != 200:
|
||||||
|
print(f"Failed to retrieve libraries: {response.status_code} - {response.text}")
|
||||||
|
return
|
||||||
|
|
||||||
|
libraries = response.json()
|
||||||
|
default_library = next(
|
||||||
|
(lib for lib in libraries if lib["name"] == settings.default_library), None
|
||||||
|
)
|
||||||
|
|
||||||
|
if not default_library:
|
||||||
|
# Create the default library if it doesn't exist
|
||||||
|
response = httpx.post(
|
||||||
|
f"{BASE_URL}/libraries",
|
||||||
|
json={"name": settings.default_library, "folders": []},
|
||||||
|
)
|
||||||
|
if response.status_code != 200:
|
||||||
|
print(
|
||||||
|
f"Failed to create default library: {response.status_code} - {response.text}"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
default_library = response.json()
|
||||||
|
|
||||||
|
# Check if the library is empty
|
||||||
|
if not default_library["folders"]:
|
||||||
|
# Add the screenshots directory to the library
|
||||||
|
screenshots_dir = Path(settings.screenshots_dir).resolve()
|
||||||
|
response = httpx.post(
|
||||||
|
f"{BASE_URL}/libraries/{default_library['id']}/folders",
|
||||||
|
json={"folders": [str(screenshots_dir)]},
|
||||||
|
)
|
||||||
|
if response.status_code != 200:
|
||||||
|
print(
|
||||||
|
f"Failed to add screenshots directory: {response.status_code} - {response.text}"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
print(f"Added screenshots directory: {screenshots_dir}")
|
||||||
|
|
||||||
|
# Scan the library
|
||||||
|
print(f"Scanning library: {default_library['name']}")
|
||||||
|
scan(default_library["id"], plugins=None, folders=None)
|
||||||
|
|
||||||
|
|
||||||
|
@app.command("index")
|
||||||
|
def index_default_library():
|
||||||
|
"""
|
||||||
|
Index the default library for memos.
|
||||||
|
"""
|
||||||
|
# Get the default library
|
||||||
|
response = httpx.get(f"{BASE_URL}/libraries")
|
||||||
|
if response.status_code != 200:
|
||||||
|
print(f"Failed to retrieve libraries: {response.status_code} - {response.text}")
|
||||||
|
return
|
||||||
|
|
||||||
|
libraries = response.json()
|
||||||
|
default_library = next(
|
||||||
|
(lib for lib in libraries if lib["name"] == settings.default_library), None
|
||||||
|
)
|
||||||
|
|
||||||
|
if not default_library:
|
||||||
|
print("Default library does not exist.")
|
||||||
|
return
|
||||||
|
|
||||||
|
index(default_library["id"], force=False, folders=None)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app()
|
app()
|
||||||
|
@ -49,6 +49,7 @@ class Settings(BaseSettings):
|
|||||||
base_dir: str = str(Path.home() / ".memos")
|
base_dir: str = str(Path.home() / ".memos")
|
||||||
database_path: str = os.path.join(base_dir, "database.db")
|
database_path: str = os.path.join(base_dir, "database.db")
|
||||||
default_library: str = "screenshots"
|
default_library: str = "screenshots"
|
||||||
|
screenshots_dir: str = os.path.join(base_dir, "screenshots")
|
||||||
|
|
||||||
typesense_host: str = "localhost"
|
typesense_host: str = "localhost"
|
||||||
typesense_port: str = "8108"
|
typesense_port: str = "8108"
|
||||||
|
@ -9,6 +9,8 @@ from screen_recorder.common import (
|
|||||||
take_screenshot,
|
take_screenshot,
|
||||||
is_screen_locked,
|
is_screen_locked,
|
||||||
)
|
)
|
||||||
|
from pathlib import Path
|
||||||
|
from memos.config import settings
|
||||||
|
|
||||||
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
||||||
|
|
||||||
@ -51,12 +53,12 @@ def main():
|
|||||||
"--threshold", type=int, default=4, help="Threshold for image similarity"
|
"--threshold", type=int, default=4, help="Threshold for image similarity"
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--base-dir", type=str, default="~/tmp", help="Base directory for screenshots"
|
"--base-dir", type=str, help="Base directory for screenshots"
|
||||||
)
|
)
|
||||||
parser.add_argument("--once", action="store_true", help="Run once and exit")
|
parser.add_argument("--once", action="store_true", help="Run once and exit")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
base_dir = os.path.expanduser(args.base_dir)
|
base_dir = os.path.expanduser(args.base_dir) if args.base_dir else settings.screenshots_dir
|
||||||
previous_hashes = load_previous_hashes(base_dir)
|
previous_hashes = load_previous_hashes(base_dir)
|
||||||
|
|
||||||
if args.once:
|
if args.once:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user