import os, re, collections
vault = '/opt/obsidian-vault/YouTube-Research'
files = []
ids = []
no_id = 0
for root, dirs, fs in os.walk(vault):
for f in fs:
if f.lower().endswith('.md'):
path = os.path.join(root, f)
files.append(path)
try:
with open(path, 'r', encoding='utf-8') as fh:
content = fh.read(20000)
except:
content = ''
m = re.search(r'(?mi)^youtube_id:\s*["\']?([^"\'\s]+)', content)
if m:
ids.append(m.group(1).strip())
else:
no_id += 1
print('Markdown-Dateien gesamt:', len(files))
print('Dateien mit youtube_id im Frontmatter:', len(ids))
print('Eindeutige youtube_id Werte:', len(set(ids)))
print('Dateien OHNE youtube_id:', no_id)
cnt = collections.Counter(ids)
dupes = {k:v for k,v in cnt.items() if v>1}
print('Doppelte youtube_ids:', len(dupes), '(betrifft', sum(v for v in dupes.values()), 'Dateien)')