Skip to content

Instantly share code, notes, and snippets.

@fr0der1c
Created December 22, 2022 09:20
Show Gist options
  • Save fr0der1c/0509bf87b10df9d36707ae763cf1c121 to your computer and use it in GitHub Desktop.
Save fr0der1c/0509bf87b10df9d36707ae763cf1c121 to your computer and use it in GitHub Desktop.
Logseq find unused assets & find missing assets
import os
import shutil
assets_dir = './assets'
journal_dir = './journals'
pages_dir = './pages'
to_delete_dir = './to_delete'
def get_all_assets() -> list[str]:
if not os.path.exists(to_delete_dir):
os.makedirs(to_delete_dir)
assets_files = os.listdir(assets_dir)
return assets_files
if __name__=='__main__':
assets_files = get_all_assets()
referenced_files = []
for dirname in [journal_dir, pages_dir]:
for filename in os.listdir(dirname):
if filename.endswith('.md'):
with open(os.path.join(dirname, filename)) as f:
for line in f:
for asset in assets_files:
if asset in line:
referenced_files.append(asset)
for asset in assets_files:
if asset not in referenced_files and not asset.endswith(".edn"):
print("assets/"+asset)
shutil.move(os.path.join(assets_dir, asset), to_delete_dir)
import os
import re
from delete_unused_assets import get_all_assets
def get_all_referenced_image_filenames() -> list[tuple[str, str]]:
current_dir = os.getcwd()
journals_dir = os.path.join(current_dir, 'journals')
pages_dir = os.path.join(current_dir, 'pages')
journals_files = ['journals/'+f for f in os.listdir(journals_dir) if f.endswith('.md')]
pages_files = ['pages/'+f for f in os.listdir(pages_dir) if f.endswith('.md')]
all_files = journals_files + pages_files
image_references = []
for filename in all_files:
with open(filename, 'r') as f:
file_contents = f.read()
for item in re.findall(r'!\[\]\((.+?)\)', file_contents):
image_references.append((filename, item))
image_references = [(item[0], item[1][10:]) for item in image_references if item[1].startswith("../")]
return image_references
if __name__=='__main__':
all_referenced = get_all_referenced_image_filenames()
all_assets = get_all_assets()
for md_filename, image_filename in all_referenced:
if image_filename not in all_assets:
print(f"Image {image_filename} in {md_filename} missing")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment