mirror of
https://github.com/RyanGreenup/cadmus.git
synced 2025-08-14 01:53:59 +02:00
Added a Py script to extract tags from org-mode, it doesn't work yet
This commit is contained in:
@@ -4,3 +4,12 @@
|
|||||||
+ ~bat~ works with ~.org~ without needing to use org-ruby or pandoc
|
+ ~bat~ works with ~.org~ without needing to use org-ruby or pandoc
|
||||||
+ Still having issues with ~mdcat~ not displaying results ocasionally (is this an issue with footnotes?)
|
+ Still having issues with ~mdcat~ not displaying results ocasionally (is this an issue with footnotes?)
|
||||||
- Added Rofi Menu
|
- Added Rofi Menu
|
||||||
|
+ This doesn't work yet
|
||||||
|
- Rofi_find doesn't disown the browser for some reason
|
||||||
|
- Does not return the matched file name
|
||||||
|
- things typed in to rofi are not remembered after a preview
|
||||||
|
- Added a tag Py Script
|
||||||
|
+ This doesn't work yet
|
||||||
|
- using str-split to seperate filename and tag doesn't work well because
|
||||||
|
~:~ characters in the heading become a tag seperator.
|
||||||
|
- I can't use look behind because it is a non-constant length
|
||||||
|
73
bin/tags/org_tags.py
Normal file
73
bin/tags/org_tags.py
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
## This doesn't work yet, the problem is at line 21, it identifies a lot of crap
|
||||||
|
## as tags if there are ~:~ characters in the heading.
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import glob
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
# Set Working Directory
|
||||||
|
try:
|
||||||
|
os.chdir(sys.argv[1])
|
||||||
|
# os.chdir((os.getenv('HOME')))
|
||||||
|
# os.chdir('Notes/Org/')
|
||||||
|
except:
|
||||||
|
print("Exiting; Unable to Access Directory " + str(sys.argv[1]))
|
||||||
|
|
||||||
|
ripgrep_command = ['rg', '--vimgrep', '-t', 'org', r"^\*+\s.*\s+:.+:"]
|
||||||
|
grep_results = subprocess.run(ripgrep_command, stdout=subprocess.PIPE).stdout.decode('utf-8')
|
||||||
|
|
||||||
|
# TODO Identifies any `:` in a heading as tag seperator, I can't extract
|
||||||
|
# org-mode tags until I fix this
|
||||||
|
grep_results = str(grep_results).split('\n')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Match org-mode files
|
||||||
|
def printOrgFiles(dir):
|
||||||
|
os.chdir(dir)
|
||||||
|
files = os.listdir()
|
||||||
|
orgFiles = []
|
||||||
|
for file in files:
|
||||||
|
pattern = re.compile('.+\.org$')
|
||||||
|
if re.match(pattern, file) and not re.match(pattern, file):
|
||||||
|
orgFiles.append(file)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Search for Tags in org-files
|
||||||
|
|
||||||
|
lines = {
|
||||||
|
'filename': [],
|
||||||
|
'lineNumber': [],
|
||||||
|
'title': [],
|
||||||
|
'tags': []
|
||||||
|
}
|
||||||
|
|
||||||
|
for line in grep_results:
|
||||||
|
line_list = str(line).split(':')
|
||||||
|
try:
|
||||||
|
lines['filename'].append(line_list[0])
|
||||||
|
lines['lineNumber'].append(line_list[1])
|
||||||
|
lines['title'].append(line_list[3]) # 2 is column number, we just want first
|
||||||
|
lines['tags'].append(list(line_list[4:-1])) # make sure that a single tag is still a list for consistency
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
# print('missing value, skip line')
|
||||||
|
# print('---')
|
||||||
|
# print(lines)
|
||||||
|
|
||||||
|
# Print the filename, tag and line number
|
||||||
|
|
||||||
|
for i in range(len(lines['lineNumber'])):
|
||||||
|
try:
|
||||||
|
filename = lines['filename'][i]
|
||||||
|
lineNumber = lines['lineNumber'][i]
|
||||||
|
tags = lines['tags'][i]
|
||||||
|
# print(filename + ',' + lineNumber + ',' + str(tags))
|
||||||
|
print("tmsu tag '" + filename + "' " + str(tags).replace('[', '').replace(']',''))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
# Do nothing in exception for clean STDOUT
|
Reference in New Issue
Block a user