فهرست منبع

Token saving.

Nathan Beals 5 سال پیش
والد
کامیت
7645659ff7
2فایلهای تغییر یافته به همراه35 افزوده شده و 34 حذف شده
  1. 34 7
      keep_exporter/cli.py
  2. 1 27
      keep_exporter/export.py

+ 34 - 7
keep_exporter/cli.py

@@ -1,8 +1,10 @@
 import pathlib
-from typing import Any, Optional, Union
+from typing import Any, Optional, Union, Tuple
 
 import click
+import click_config_file
 import frontmatter
+import gkeepapi
 
 # from .export import *
 from keep_exporter.export import (
@@ -13,12 +15,38 @@ from keep_exporter.export import (
     delete_local_only_files,
     download_media,
     index_existing_files,
-    login,
+    # login,
     try_rename_note,
 )
 
 # import keep_exporter.export as export
 
+def login(
+    user_email: str, password: Optional[str], token: Optional[str]
+) -> Tuple[gkeepapi.Keep, str]:
+    keep = gkeepapi.Keep()
+    if token:
+        try:
+            click.echo("Logging in with token")
+            keep.resume(user_email, token)
+            # print(keep.getMasterToken())
+            return (keep, "")
+        except gkeepapi.exception.LoginException as ex:
+            raise click.BadParameter(f"Token login (resume) failed: {str(ex)}")
+
+    if password:
+        try:
+            click.echo("Logging in with password")
+            keep.login(user_email, password)
+            # print(keep.getMasterToken())
+            return (keep, keep.getMasterToken())
+        except gkeepapi.exception.LoginException as ex:
+            raise click.BadParameter(f"Password login failed: {str(ex)}")
+
+    raise click.BadParameter(f"Neither password nor token provided to login.")
+
+
+
 
 def get_click_supplied_value(ctx: click.core.Context, param_name: str) -> Any:
     """
@@ -66,9 +94,6 @@ def token_callback_password_or_token(
     return token
 
 
-import click_config_file
-
-
 @click.command(
     context_settings={"max_content_width": 120, "help_option_names": ["-h", "--help"]}
 )
@@ -153,8 +178,10 @@ def main(
     click.echo(f"Notes directory: {notepath}")
     click.echo(f"Media directory: {mediapath}")
 
-    keep = login(user, password, token)
-    exit(0)
+    keep, new_token = login(user, password, token)
+    if len(new_token) > 0:
+        pass # save new token, where/how?
+
 
     if not notepath.exists():
         click.echo("Notes directory does not exist, creating.")

+ 1 - 27
keep_exporter/export.py

@@ -14,32 +14,6 @@ from pathvalidate import sanitize_filename
 
 mimetypes.add_type("audio/3gpp", ".3gp")
 
-
-def login(
-    user_email: str, password: Optional[str], token: Optional[str]
-) -> gkeepapi.Keep:
-    keep = gkeepapi.Keep()
-    if token:
-        try:
-            click.echo("Logging in with token")
-            keep.resume(user_email, token)
-            # print(keep.getMasterToken())
-            return keep
-        except gkeepapi.exception.LoginException as ex:
-            raise click.BadParameter(f"Token login (resume) failed: {str(ex)}")
-
-    if password:
-        try:
-            click.echo("Logging in with password")
-            keep.login(user_email, password)
-            # print(keep.getMasterToken())
-            return keep
-        except gkeepapi.exception.LoginException as ex:
-            raise click.BadParameter(f"Password login failed: {str(ex)}")
-
-    raise click.BadParameter(f"Neither password nor token provided to login.")
-
-
 def all_note_media(
     note: gkeepapi._node.Note,
 ) -> List[Union[NodeImage, NodeDrawing, NodeAudio]]:
@@ -260,7 +234,7 @@ def index_existing_files(directory: pathlib.Path) -> Dict[str, LocalNote]:
             except IOError as ex:
                 errors = 0
                 click.echo(
-                    "Unable to open Markdown file [{os.path.join(root, file)}]. Skipping: {str(ex)}",
+                    f"Unable to open Markdown file [{str(file.resolve())}]. Skipping: {str(ex)}",
                     err=True,
                 )