diff --git a/src/inputs/kitaab/TagHelper.py b/src/inputs/kitaab/TagHelper.py index d278f17..d45df46 100644 --- a/src/inputs/kitaab/TagHelper.py +++ b/src/inputs/kitaab/TagHelper.py @@ -59,10 +59,13 @@ def makeDictFromTags(tagFile, key='name', value='file'): def getAllFiles(): # Returns a set containing all the files we wish to make public - return makeSetFromTags(loadTagFile(tagFile)) + return makeSetFromTags(loadTagFile()) def getAllTags(): # Returns a dictionary with: # - key as tag titles # - values as files that have the key in their tags return makeDictFromTags(loadTagFile()) + +if __name__ == '__main__': + print(getAllTags().keys()) diff --git a/src/inputs/kitaab/tag-fixer.py b/src/inputs/kitaab/tag-fixer.py index 21d985d..5d7d1ad 100644 --- a/src/inputs/kitaab/tag-fixer.py +++ b/src/inputs/kitaab/tag-fixer.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -import ctags from ctags import CTags, TagEntry import sys from icecream import ic @@ -8,7 +7,7 @@ import os import shutil import fileinput -def loadTagFile(path='.vimwiki_tags'): +def loadTagFile(path='/home/anish/vimwiki/.vimwiki_tags'): # Available file information keys: # opened - was the tag file successfully opened? # error_number - errno value when 'opened' is false @@ -22,9 +21,28 @@ def loadTagFile(path='.vimwiki_tags'): tagFile = CTags(path) return tagFile except: - print("No tagfile at {}".farmat(path)) + print("No tagfile at {}".format(path)) sys.exit(1) +bad_tags = [('Public', 'public'), ('Travel', 'travel'), ('jrl', 'jrnl'), ('Kitaab', 'kitaab'), ('Dream', 'dream'), ('Story', 'story'), ('Review', 'review'), ('private', 'priv'), ('ideas', 'idea'), ('quotes', 'quote'), ('rocks', 'rock'), ('sec', 'cybsec'), ('sealight.services', 'sealight')] +bad_tags_only = [x[0] for x in bad_tags] + +def replaceBadTags(tagFile): + # no higher order function sadness + # this does the same thing as loopThrough but runs a different function + # (loop through looks for single character tags) + # We look for any tag in the list and replace it + entry = TagEntry() + tag = tagFile.next(entry) + tagErrors = set() + print(bad_tags_only) + while tag: + tag = entry['name'].decode('utf-8') + if tag in bad_tags_only: + tagErrors.add(entry['file']) + tag = tagFile.next(entry) + return tagErrors + def loopThrough(tagFile): # Available TagEntry keys: # name - name of tag @@ -46,12 +64,36 @@ def loopThrough(tagFile): if len(entry['name']) <= 1: tagErrors.add(entry['file']) errorTagNames.add(entry['name']) - else: - print("Good tag found: {}".format(entry['name'])) tag = tagFile.next(entry) ic(errorTagNames) return tagErrors +def fixBadTags(errors): + ''' More lack of higher order function sadness + same as fixErrors, but not really + ''' + fileBase = '/home/anish/vimwiki/' + for v in errors: + print("Fixing {}...".format(v)) + fileName = fileBase + getFileName(v) + newFile = "" + with open(fileName, 'r') as f: + newFile = newFile + f.readline() + line = f.readline() + # bad and ungly + for bad_tag in bad_tags: + line = line.replace(bad_tag[0], bad_tag[1]) + newFile = newFile + line + for line in f.readlines(): + newFile = newFile + line + with open(fileName, 'w') as f: + for line in newFile: + f.write(line) + print("Written new file...") + print() + print(newFile) + + def fixErrors(errors): ''' Replaces :: with :, which seems to be the error for many of the tags ''' fileBase = '/home/anish/vimwiki/' @@ -61,6 +103,19 @@ def fixErrors(errors): newFile = "" with open(fileName, 'r') as f: for line in f.readlines(): + line = line.replace(":]:]:", "") + line = line.replace(":[:[:", "") + line = line.replace("G:r:a:t:i:t:u:d:e:", ":grat:") + line = line.replace(":J:o:u:r:n:a:l:", ":jrnl:") + line = line.replace(":R:e:v:i:e:w:", ":review:") + line = line.replace(":T:r:a:v:e:l:", ":travel:") + line = line.replace(":D:r:e:a:m:", ":dream:") + line = line.replace("%date", "\n%date") + line = line.replace("{date}", createDateStringFromFile(v)+"\n\n") + line = line.replace("{title}", "{title}\n") + line = line.replace(" :", ":") + line = line.replace("::", ":") + line = line.replace(" :", ":") line = line.replace("::", ":") newFile = newFile + line with open(fileName, 'w') as f: @@ -70,15 +125,37 @@ def fixErrors(errors): print() print(newFile) -def printErrors(errors): +def createDateStringFromFile(error): + file = getFileName(error).replace("jrnl/", "").replace(".wiki", "") + dateConverted = file.split('-') # create date and time + dateConvertedSplit = list(dateConverted[0]) # splite date + dateConvertedSplit.insert(2, '-') # add - between year and month + dateConvertedSplit.insert(5, '-') # add - between month and day + dateConvertedSplit.insert(0, '20') # add 20 to year + dateConverted[0] = "".join(dateConvertedSplit) # make date a string + dateConverted[1] = dateConverted[1][:2] + ":" + dateConverted[1][2:] # add colon in between hour and minute + dateConverted = " ".join(dateConverted) # make date and time a string + return dateConverted + +def printErrorFiles(errors): fileBase = '/home/anish/vimwiki/' for v in errors: fileName = fileBase + getFileName(v) print("Reading {}...".format(v)) with open(fileName, 'r') as f: - f.readline() + #f.readline() ic(f.readline()) +def listTags(tagFile): + entry = TagEntry() + tag = tagFile.next(entry) + allTags = set() + while tag: + tag = entry['name'].decode('utf-8') + allTags.add(tag) + tag = tagFile.next(entry) + return allTags + def getFileName(f): return str(f, encoding="utf-8") @@ -93,8 +170,9 @@ def getBackupFiles(errors): if __name__=='__main__': tagFile = loadTagFile() - errors = loopThrough(tagFile) - printErrors(errors) + #ic(tagFile) + #errors = replaceBadTags(tagFile) + #fixBadTags(errors) + print(sorted(listTags(tagFile))) #ic(errors) #getBackupFiles(errors) - #fixErrors(errors)