feat(infra): auto-commit con 88 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
---
|
||||
name: extract_obsidian_embeds
|
||||
kind: function
|
||||
lang: py
|
||||
domain: obsidian
|
||||
version: "1.0.0"
|
||||
purity: pure
|
||||
signature: "def extract_obsidian_embeds(body: str) -> list"
|
||||
description: "Extrae SOLO los embeds ![[...]] (attachments incrustados: imagenes, pdf, otras notas) del cuerpo de una nota de Obsidian, ignorando los wikilinks normales [[...]]. Para cada embed devuelve el target tal cual (nombre de archivo), quitando alias (|...) y anclas (#...). Deduplica preservando orden de aparicion. Pura, sin I/O. Util para detectar que attachments arrastra una nota al migrar un subgrafo."
|
||||
tags: [obsidian, embed, attachment, image, markdown, extract, migrate]
|
||||
uses_functions: []
|
||||
uses_types: []
|
||||
returns: []
|
||||
returns_optional: false
|
||||
error_type: ""
|
||||
imports: ["re"]
|
||||
params:
|
||||
- name: body
|
||||
desc: "Cuerpo Markdown de una nota de Obsidian (idealmente sin frontmatter). Puede mezclar wikilinks [[...]] y embeds ![[...]] con alias (|) o ancla (#)."
|
||||
output: "Lista de strings con los nombres de los attachments embebidos (el target de cada ![[...]]), unicos y en orden de aparicion. Solo embeds: los wikilinks normales [[...]] se ignoran. Lista vacia si no hay embeds."
|
||||
tested: true
|
||||
tests:
|
||||
- "solo embeds ignora wikilinks"
|
||||
- "varios embeds orden y dedup"
|
||||
- "quita alias y ancla"
|
||||
- "nombre con espacios y parentesis"
|
||||
- "sin embeds solo wikilinks"
|
||||
- "body vacio"
|
||||
test_file_path: "python/functions/obsidian/extract_obsidian_embeds_test.py"
|
||||
file_path: "python/functions/obsidian/extract_obsidian_embeds.py"
|
||||
---
|
||||
|
||||
## Ejemplo
|
||||
|
||||
```python
|
||||
body = (
|
||||
"Texto con [[Nota normal]] y un embed ![[imagen.jpg]]. "
|
||||
"Luego ![[doc.pdf]] y otra vez ![[imagen.jpg]]."
|
||||
)
|
||||
extract_obsidian_embeds(body)
|
||||
# ["imagen.jpg", "doc.pdf"]
|
||||
|
||||
extract_obsidian_embeds("![[dni enmanuel (2).jpg]]")
|
||||
# ["dni enmanuel (2).jpg"]
|
||||
```
|
||||
|
||||
## Cuando usarla
|
||||
|
||||
Usala cuando migres o extraigas un subgrafo de notas y necesites saber QUE
|
||||
attachments hay que copiar junto a cada nota. A diferencia de
|
||||
`extract_obsidian_wikilinks` (que devuelve todos los enlaces, incluidos los
|
||||
embeds), esta funcion aisla solo los `![[...]]`, que son los archivos fisicos
|
||||
incrustados. Combinala con `resolve_obsidian_embed` para localizar el path real
|
||||
de cada attachment dentro del vault.
|
||||
|
||||
## Gotchas
|
||||
|
||||
- Devuelve el nombre del attachment tal cual aparece en el embed (p.ej.
|
||||
`dni enmanuel (2).jpg`), NO un path. Obsidian resuelve embeds por nombre de
|
||||
archivo unico; para obtener la ruta real usa `resolve_obsidian_embed`.
|
||||
- Quita deliberadamente el alias (`|300`, util para dimensionar imagenes) y el
|
||||
ancla (`#Seccion`, util para embeber un trozo de otra nota). Si necesitas esos
|
||||
modificadores, parsea el body tu mismo.
|
||||
- Solo reconoce embeds con doble corchete `![[...]]`. Los embeds Markdown
|
||||
estandar de imagen `` NO se detectan.
|
||||
Reference in New Issue
Block a user