Created
January 19, 2023 00:04
-
-
Save eugeneyan/95d09eaeff0c99d468d8c459cfed5218 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Fixes tags that were converted to links during Obsidian import. | |
Specifically, it is the first 3 line and the line contains "tags:", convert all [[tag name]] to #tag-name | |
""" | |
import os | |
import re | |
from pathlib import Path | |
DIR = '/Users/eugeneya/obsidian-vault/' | |
double_square = re.compile("\[\[(.*?)\]\]") | |
for file_i, path in enumerate(Path(DIR).glob('*.md')): | |
file_name = str(path).split("/")[-1] | |
file_handler = open(path) | |
for line_i, line in enumerate(file_handler): | |
if line_i < 2 and ('tags:' in line or 'tag:' in line): | |
tag_line = line | |
tags = double_square.findall(line) | |
if tags: | |
print(f'file {file_i}: {file_name}') | |
new_tag_line = '- tags:: ' | |
for tag in tags: | |
new_tag_line += f'#{tag.replace(" ", "-")} ' | |
new_tag_line += '\n' | |
print(new_tag_line) | |
# Save Markdown file with new local file link as a temp file | |
# If there is already a temp version of a file, open that. | |
temp_file_path = DIR + '/temp_' + file_name | |
if os.path.exists(temp_file_path): | |
full_read = open(temp_file_path, errors='ignore') | |
else: | |
full_read = open(path, errors='ignore') | |
data = full_read.read() | |
data = data.replace(tag_line, new_tag_line) | |
with open(temp_file_path, 'wt') as temp_file: | |
temp_file.write(data) | |
if os.path.exists(temp_file_path): | |
os.replace(temp_file_path, path) | |
full_read.close() | |
if line_i >= 2: | |
break | |
file_handler.close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment