From 2451a656d5e4204af5077d706faf3c95610c4c01 Mon Sep 17 00:00:00 2001 From: Mega Yu Date: Wed, 7 Jan 2026 16:37:11 +0800 Subject: [PATCH] Fix the inconsistency between imported Zotero label and actual filename --- .../src/logseq/graph_parser/exporter.cljs | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/deps/graph-parser/src/logseq/graph_parser/exporter.cljs b/deps/graph-parser/src/logseq/graph_parser/exporter.cljs index 1a7691e48c..0cfe0af3e0 100644 --- a/deps/graph-parser/src/logseq/graph_parser/exporter.cljs +++ b/deps/graph-parser/src/logseq/graph_parser/exporter.cljs @@ -943,13 +943,14 @@ [config ast-blocks] (let [results (atom {:simple-queries [] :asset-links [] - :embeds []})] + :embeds [] + :zotero-imported-files {}})] (walk/prewalk (fn [x] (cond - (and (vector? x) - (= "Link" (first x)) - (let [path-or-map (second (:url (second x)))] + (and (vector? x) + (= "Link" (first x)) + (let [path-or-map (second (:url (second x)))] (cond (string? path-or-map) (or (common-config/local-relative-asset? path-or-map) @@ -963,6 +964,12 @@ (= "Macro" (first x)) (= "embed" (:name (second x)))) (swap! results update :embeds conj x) + (and (vector? x) + (= "Macro" (first x)) + (= "zotero-imported-file" (:name (second x)))) + (let [[item-key filename] (:arguments (second x))] + (when (and item-key filename) + (swap! results update :zotero-imported-files assoc item-key (common-util/safe-read-map-string filename)))) (and (vector? x) (= "Macro" (first x)) (= "query" (:name (second x)))) @@ -1242,18 +1249,23 @@ (defn- asset-link second :url second) - zotero-asset? (when (map? path*) - (= "zotero" (:protocol (second (:url (second asset-link)))))) - {:keys [path link base]} (if (map? path*) - (get-zotero-local-pdf-path user-config (second asset-link)) - {:path path*}) - asset-name (some-> path asset-path->name) - asset-link-or-name (or link (some-> path asset-path->name)) + (p/let [link-map (second asset-link) + path* (-> link-map :url second) + zotero-path-data (when (map? path*) + (get-zotero-local-pdf-path user-config link-map)) + zotero-asset? (some? zotero-path-data) + {:keys [path link base]} (or zotero-path-data {:path path*}) + asset-name (if zotero-asset? + (or (get zotero-imported-files (last (string/split link #"/"))) base) + (some-> path asset-path->name)) + path (if zotero-asset? + (string/replace path #"[^/]+$" asset-name) + path) + asset-link-or-name (or link asset-name) asset-data* (when asset-link-or-name (get @assets asset-link-or-name)) _ (when (and asset-link-or-name (not asset-data*) @@ -1268,7 +1280,7 @@ :checksum "0000000000000000000000000000000000000000000000000000000000000000" :size (.-size stat) :external-url (or link path) - :external-file-name base})) + :external-file-name asset-name})) (p/catch (fn [error] (js/console.error error))))) asset-data (when asset-link-or-name (get @assets asset-link-or-name))]