Bruno Charest b985a7cdbb feat: add non-markdown files to metadata endpoints
- Added support for non-markdown files (images, PDFs, code, etc) in vault metadata endpoints
- Implemented filesystem scanning for non-markdown files with configurable extension whitelist
- Added deduplication by file path to prevent duplicates between Meilisearch and filesystem
- Enhanced folder filtering and kind filtering to properly handle non-markdown files
- Added validation to remove stale entries not present on disk
- Improved logging to track
2025-10-31 23:20:36 -04:00

17 KiB
Raw Permalink Blame History

Page snapshot

- generic [ref=e5]:
  - complementary [ref=e6]:
    - generic [ref=e8]:
      - generic [ref=e9]:
        - link "ObsiViewer IT - ObsiViewer" [ref=e10] [cursor=pointer]:
          - /url: /
          - img "ObsiViewer" [ref=e11] [cursor=pointer]
          - generic [ref=e12] [cursor=pointer]: IT - ObsiViewer
        - button "⟨⟨" [ref=e13] [cursor=pointer]
      - generic [ref=e14]:
        - generic [ref=e15]:
          - button "▾ ⚡ Quick Links" [ref=e16] [cursor=pointer]:
            - generic [ref=e17] [cursor=pointer]:
              - generic [ref=e18] [cursor=pointer]: 
              - generic [ref=e19] [cursor=pointer]: 
              - link "Quick Links" [ref=e20] [cursor=pointer]:
                - /url: /
          - list [ref=e24]:
            - listitem [ref=e25]:
              - button "🗂️ All Pages count" [ref=e26] [cursor=pointer]:
                - generic [ref=e27] [cursor=pointer]:
                  - generic [ref=e28] [cursor=pointer]: 🗂️
                  - generic [ref=e29] [cursor=pointer]: All Pages
                - generic "count" [ref=e31] [cursor=pointer]: "29"
            - listitem [ref=e32]:
              - button "❤️ Favoris count" [ref=e33] [cursor=pointer]:
                - generic [ref=e34] [cursor=pointer]:
                  - generic [ref=e35] [cursor=pointer]: ❤️
                  - generic [ref=e36] [cursor=pointer]: Favoris
                - generic "count" [ref=e38] [cursor=pointer]: "9"
            - listitem [ref=e39]:
              - button "🌐 Publish count" [ref=e40] [cursor=pointer]:
                - generic [ref=e41] [cursor=pointer]:
                  - generic [ref=e42] [cursor=pointer]: 🌐
                  - generic [ref=e43] [cursor=pointer]: Publish
                - generic "count" [ref=e45] [cursor=pointer]: "6"
            - listitem [ref=e46]:
              - button "📝 Draft count" [ref=e47] [cursor=pointer]:
                - generic [ref=e48] [cursor=pointer]:
                  - generic [ref=e49] [cursor=pointer]: 📝
                  - generic [ref=e50] [cursor=pointer]: Draft
                - generic "count" [ref=e52] [cursor=pointer]: "6"
            - listitem [ref=e53]:
              - button "📑 Template count" [ref=e54] [cursor=pointer]:
                - generic [ref=e55] [cursor=pointer]:
                  - generic [ref=e56] [cursor=pointer]: 📑
                  - generic [ref=e57] [cursor=pointer]: Template
                - generic "count" [ref=e59] [cursor=pointer]: "5"
            - listitem [ref=e60]:
              - button "🗒️ Task count" [ref=e61] [cursor=pointer]:
                - generic [ref=e62] [cursor=pointer]:
                  - generic [ref=e63] [cursor=pointer]: 🗒️
                  - generic [ref=e64] [cursor=pointer]: Task
                - generic "count" [ref=e66] [cursor=pointer]: "6"
            - listitem [ref=e67]:
              - button "🔒 Private count" [ref=e68] [cursor=pointer]:
                - generic [ref=e69] [cursor=pointer]:
                  - generic [ref=e70] [cursor=pointer]: 🔒
                  - generic [ref=e71] [cursor=pointer]: Private
                - generic "count" [ref=e73] [cursor=pointer]: "6"
            - listitem [ref=e74]:
              - button "🗃️ Archive count" [ref=e75] [cursor=pointer]:
                - generic [ref=e76] [cursor=pointer]:
                  - generic [ref=e77] [cursor=pointer]: 🗃️
                  - generic [ref=e78] [cursor=pointer]: Archive
                - generic "count" [ref=e80] [cursor=pointer]: "5"
        - button "▸ 📁 Folders" [ref=e83] [cursor=pointer]:
          - generic [ref=e84] [cursor=pointer]: 
          - generic [ref=e85] [cursor=pointer]: 📁
          - generic [ref=e86] [cursor=pointer]: Folders
        - button "▸ 🏷️ Tags" [ref=e88] [cursor=pointer]:
          - generic [ref=e89] [cursor=pointer]:
            - generic [ref=e90] [cursor=pointer]: 
            - generic [ref=e91] [cursor=pointer]: 🏷️
            - generic [ref=e92] [cursor=pointer]: Tags
        - button "▸ 🗑️ Trash" [ref=e94] [cursor=pointer]:
          - generic [ref=e95] [cursor=pointer]:
            - generic [ref=e96] [cursor=pointer]: 
            - generic [ref=e97] [cursor=pointer]: 🗑️
            - generic [ref=e98] [cursor=pointer]: Trash
        - generic [ref=e100]:
          - button "🆘 Help Page" [ref=e101] [cursor=pointer]:
            - generic [ref=e102] [cursor=pointer]: 🆘
            - generic [ref=e103] [cursor=pointer]: Help Page
          - button " About" [ref=e104] [cursor=pointer]:
            - generic [ref=e105] [cursor=pointer]: 
            - generic [ref=e106] [cursor=pointer]: About
        - scrollbar [ref=e107]
      - generic [ref=e108]: ObsiViewer
  - separator "Redimensionner la barre latérale gauche" [ref=e109]
  - generic [ref=e113]:
    - generic [ref=e114]:
      - textbox "Rechercher..." [ref=e116]
      - generic [ref=e117]:
        - generic [ref=e118]:
          - button "Trier par" [ref=e119] [cursor=pointer]:
            - img [ref=e120] [cursor=pointer]
          - button "Mode d'affichage" [ref=e121] [cursor=pointer]:
            - img [ref=e122] [cursor=pointer]
        - generic [ref=e127]:
          - img [ref=e128]
          - text: "56"
    - generic [ref=e131]:
      - list [ref=e133]:
        - listitem [ref=e134] [cursor=pointer]:
          - generic [ref=e135] [cursor=pointer]:
            - button "Éditer la note" [ref=e136] [cursor=pointer]:
              - img [ref=e137] [cursor=pointer]
            - button "Supprimer la note" [ref=e140] [cursor=pointer]:
              - img [ref=e141] [cursor=pointer]
          - generic [ref=e143] [cursor=pointer]:
            - generic "Type" [ref=e145] [cursor=pointer]: </>
            - generic [ref=e146] [cursor=pointer]:
              - generic [ref=e147] [cursor=pointer]: workspace.json
              - generic [ref=e148] [cursor=pointer]: .obsidian/workspace.json
        - listitem [ref=e149] [cursor=pointer]:
          - generic [ref=e150] [cursor=pointer]:
            - button "Éditer la note" [ref=e151] [cursor=pointer]:
              - img [ref=e152] [cursor=pointer]
            - button "Supprimer la note" [ref=e155] [cursor=pointer]:
              - img [ref=e156] [cursor=pointer]
          - generic [ref=e158] [cursor=pointer]:
            - generic "Type" [ref=e160] [cursor=pointer]: 📝
            - generic [ref=e161] [cursor=pointer]:
              - generic [ref=e162] [cursor=pointer]: Nouveau-markdown
              - generic [ref=e163] [cursor=pointer]: Allo-3/Nouveau-markdown.md
        - listitem [ref=e164] [cursor=pointer]:
          - generic [ref=e165] [cursor=pointer]:
            - button "Éditer la note" [ref=e166] [cursor=pointer]:
              - img [ref=e167] [cursor=pointer]
            - button "Supprimer la note" [ref=e170] [cursor=pointer]:
              - img [ref=e171] [cursor=pointer]
          - generic [ref=e173] [cursor=pointer]:
            - generic "Type" [ref=e175] [cursor=pointer]: 📝
            - generic [ref=e176] [cursor=pointer]:
              - generic [ref=e177] [cursor=pointer]: test2
              - generic [ref=e178] [cursor=pointer]: tata/test2.md
        - listitem [ref=e179] [cursor=pointer]:
          - generic [ref=e180] [cursor=pointer]:
            - button "Éditer la note" [ref=e181] [cursor=pointer]:
              - img [ref=e182] [cursor=pointer]
            - button "Supprimer la note" [ref=e185] [cursor=pointer]:
              - img [ref=e186] [cursor=pointer]
          - generic [ref=e188] [cursor=pointer]:
            - generic "Type" [ref=e190] [cursor=pointer]: </>
            - generic [ref=e191] [cursor=pointer]:
              - generic [ref=e192] [cursor=pointer]: data.json
              - generic [ref=e193] [cursor=pointer]: .obsidian/plugins/obsidian-excalidraw-plugin/data.json
        - listitem [ref=e194] [cursor=pointer]:
          - generic [ref=e195] [cursor=pointer]:
            - button "Éditer la note" [ref=e196] [cursor=pointer]:
              - img [ref=e197] [cursor=pointer]
            - button "Supprimer la note" [ref=e200] [cursor=pointer]:
              - img [ref=e201] [cursor=pointer]
          - generic [ref=e203] [cursor=pointer]:
            - generic "Type" [ref=e205] [cursor=pointer]: </>
            - generic [ref=e206] [cursor=pointer]:
              - generic [ref=e207] [cursor=pointer]: community-plugins.json
              - generic [ref=e208] [cursor=pointer]: .obsidian/community-plugins.json
        - listitem [ref=e209] [cursor=pointer]:
          - generic [ref=e210] [cursor=pointer]:
            - button "Éditer la note" [ref=e211] [cursor=pointer]:
              - img [ref=e212] [cursor=pointer]
            - button "Supprimer la note" [ref=e215] [cursor=pointer]:
              - img [ref=e216] [cursor=pointer]
          - generic [ref=e218] [cursor=pointer]:
            - generic "Type" [ref=e220] [cursor=pointer]: </>
            - generic [ref=e221] [cursor=pointer]:
              - generic [ref=e222] [cursor=pointer]: appearance.json
              - generic [ref=e223] [cursor=pointer]: .obsidian/appearance.json
        - listitem [ref=e224] [cursor=pointer]:
          - generic [ref=e225] [cursor=pointer]:
            - button "Éditer la note" [ref=e226] [cursor=pointer]:
              - img [ref=e227] [cursor=pointer]
            - button "Supprimer la note" [ref=e230] [cursor=pointer]:
              - img [ref=e231] [cursor=pointer]
          - generic [ref=e233] [cursor=pointer]:
            - generic "Type" [ref=e235] [cursor=pointer]: </>
            - generic [ref=e236] [cursor=pointer]:
              - generic [ref=e237] [cursor=pointer]: app.json
              - generic [ref=e238] [cursor=pointer]: .obsidian/app.json
        - listitem [ref=e239] [cursor=pointer]:
          - generic [ref=e240] [cursor=pointer]:
            - button "Éditer la note" [ref=e241] [cursor=pointer]:
              - img [ref=e242] [cursor=pointer]
            - button "Supprimer la note" [ref=e245] [cursor=pointer]:
              - img [ref=e246] [cursor=pointer]
          - generic [ref=e248] [cursor=pointer]:
            - generic "Type" [ref=e250] [cursor=pointer]: </>
            - generic [ref=e251] [cursor=pointer]:
              - generic [ref=e252] [cursor=pointer]: core-plugins.json
              - generic [ref=e253] [cursor=pointer]: .obsidian/core-plugins.json
        - listitem [ref=e254] [cursor=pointer]:
          - generic [ref=e255] [cursor=pointer]:
            - button "Éditer la note" [ref=e256] [cursor=pointer]:
              - img [ref=e257] [cursor=pointer]
            - button "Supprimer la note" [ref=e260] [cursor=pointer]:
              - img [ref=e261] [cursor=pointer]
          - generic [ref=e263] [cursor=pointer]:
            - generic "Type" [ref=e265] [cursor=pointer]: 📝
            - generic [ref=e266] [cursor=pointer]:
              - generic [ref=e267] [cursor=pointer]: test
              - generic [ref=e268] [cursor=pointer]: test.md
        - listitem [ref=e269] [cursor=pointer]:
          - generic [ref=e270] [cursor=pointer]:
            - button "Éditer la note" [ref=e271] [cursor=pointer]:
              - img [ref=e272] [cursor=pointer]
            - button "Supprimer la note" [ref=e275] [cursor=pointer]:
              - img [ref=e276] [cursor=pointer]
          - generic [ref=e278] [cursor=pointer]:
            - generic "Type" [ref=e280] [cursor=pointer]: 📝
            - generic [ref=e281] [cursor=pointer]:
              - generic [ref=e282] [cursor=pointer]: tata
              - generic [ref=e283] [cursor=pointer]: Allo-3/tata.md
        - listitem [ref=e284] [cursor=pointer]:
          - generic [ref=e285] [cursor=pointer]:
            - button "Éditer la note" [ref=e286] [cursor=pointer]:
              - img [ref=e287] [cursor=pointer]
            - button "Supprimer la note" [ref=e290] [cursor=pointer]:
              - img [ref=e291] [cursor=pointer]
          - generic [ref=e293] [cursor=pointer]:
            - generic "Type" [ref=e295] [cursor=pointer]: 📝
            - generic [ref=e296] [cursor=pointer]:
              - generic [ref=e297] [cursor=pointer]: HOME
              - generic [ref=e298] [cursor=pointer]: HOME.md
        - listitem [ref=e299] [cursor=pointer]:
          - generic [ref=e300] [cursor=pointer]:
            - button "Éditer la note" [ref=e301] [cursor=pointer]:
              - img [ref=e302] [cursor=pointer]
            - button "Supprimer la note" [ref=e305] [cursor=pointer]:
              - img [ref=e306] [cursor=pointer]
          - generic [ref=e308] [cursor=pointer]:
            - generic "Type" [ref=e310] [cursor=pointer]: ✏️
            - generic [ref=e311] [cursor=pointer]:
              - generic [ref=e312] [cursor=pointer]: Dessin-02.excalidraw
              - generic [ref=e313] [cursor=pointer]: Dessin-02.excalidraw.md
        - listitem [ref=e314] [cursor=pointer]:
          - generic [ref=e315] [cursor=pointer]:
            - button "Éditer la note" [ref=e316] [cursor=pointer]:
              - img [ref=e317] [cursor=pointer]
            - button "Supprimer la note" [ref=e320] [cursor=pointer]:
              - img [ref=e321] [cursor=pointer]
          - generic [ref=e323] [cursor=pointer]:
            - generic "Type" [ref=e325] [cursor=pointer]: 📝
            - generic [ref=e326] [cursor=pointer]:
              - generic [ref=e327] [cursor=pointer]: Test 1 Markdown copy
              - generic [ref=e328] [cursor=pointer]: Test 1 Markdown copy.md
        - listitem [ref=e329] [cursor=pointer]:
          - generic [ref=e330] [cursor=pointer]:
            - button "Éditer la note" [ref=e331] [cursor=pointer]:
              - img [ref=e332] [cursor=pointer]
            - button "Supprimer la note" [ref=e335] [cursor=pointer]:
              - img [ref=e336] [cursor=pointer]
          - generic [ref=e338] [cursor=pointer]:
            - generic "Type" [ref=e340] [cursor=pointer]: 📝
            - generic [ref=e341] [cursor=pointer]:
              - generic [ref=e342] [cursor=pointer]: Nouvelle note 13
              - generic [ref=e343] [cursor=pointer]: Allo-3/Nouvelle note 13.md
        - listitem [ref=e344]: 56 notes chargées
      - scrollbar [ref=e346]
  - separator "Redimensionner la zone de liste" [ref=e347]
  - generic [ref=e348]:
    - generic [ref=e349]:
      - generic [ref=e351]:
        - status [ref=e352]
        - generic [ref=e353]:
          - generic [ref=e354]:
            - generic [ref=e356]:
              - generic [ref=e357]:
                - button "Copier le chemin" [ref=e358] [cursor=pointer]:
                  - img [ref=e359] [cursor=pointer]
                - button "Afficher les propriétés du document" [ref=e362] [cursor=pointer]:
                  - img [ref=e363] [cursor=pointer]
                - group "Chemin du fichier file-5_2025-10-25T20-16-40-755Z.md" [ref=e366]:
                  - button ".trash ▾" [ref=e369] [cursor=pointer]:
                    - generic "undefined" [ref=e370] [cursor=pointer]: .trash
                    - generic [ref=e371] [cursor=pointer]: 
                  - generic "Renommer le fichier" [ref=e372] [cursor=pointer]:
                    - text: file-5_2025-10-25T20-16-40-755Z.md
                    - img [ref=e374] [cursor=pointer]
              - button "Modifier les tags" [ref=e378] [cursor=pointer]:
                - img [ref=e379] [cursor=pointer]
            - generic [ref=e381]:
              - button "Éditer" [ref=e382] [cursor=pointer]:
                - img [ref=e383] [cursor=pointer]
              - button "Open in full screen" [ref=e386] [cursor=pointer]: ⤢
              - button "Afficher sommaire" [ref=e388] [cursor=pointer]:
                - img [ref=e389] [cursor=pointer]
              - button "Rechercher" [ref=e391] [cursor=pointer]:
                - img [ref=e392] [cursor=pointer]
              - button "Copier tout le markdown" [ref=e395] [cursor=pointer]:
                - img [ref=e396] [cursor=pointer]
              - button "More options" [ref=e400] [cursor=pointer]: ⋯
          - generic [ref=e401]:
            - generic [ref=e402]:
              - generic [ref=e403]:
                - img [ref=e404]
                - text: 25 oct. 2025, 16:16:41
              - generic [ref=e406]:
                - img [ref=e407]
                - text: Bruno Charest
            - generic [ref=e409]:
              - button "Non favori" [ref=e410] [cursor=pointer]:
                - img [ref=e411] [cursor=pointer]
              - button "Non publié" [ref=e413] [cursor=pointer]:
                - img [ref=e414] [cursor=pointer]
              - button "Pas un brouillon" [ref=e417] [cursor=pointer]:
                - img [ref=e418] [cursor=pointer]
              - button "Non modèle" [ref=e420] [cursor=pointer]:
                - img [ref=e421] [cursor=pointer]
              - button "Pas une tâche" [ref=e423] [cursor=pointer]:
                - img [ref=e424] [cursor=pointer]
              - button "Public" [ref=e426] [cursor=pointer]:
                - img [ref=e427] [cursor=pointer]
              - button "Document non archivé" [ref=e430] [cursor=pointer]:
                - img [ref=e431] [cursor=pointer]
          - paragraph [ref=e435]: nouveau message !!!
      - scrollbar [ref=e436]
    - complementary:
      - generic:
        - generic:
          - heading "Sommaire" [level=2]
          - button "Fermer le sommaire":
            - img
        - list
      - scrollbar [ref=e437]