101 lines
3.0 KiB
Python
101 lines
3.0 KiB
Python
#! /usr/bin/env python3
|
|
# Various methods of grabbing files from Kitaab based on their ctags as generated by vimwiki
|
|
# censor - burn all mentions of this word wherever it appears in Kitaab
|
|
# filter - leave names in tact but do not link to relevant documents
|
|
# create - list in an index file for website
|
|
from os import listdir, mkdir
|
|
from os.path import isfile, join
|
|
import shutil
|
|
import random
|
|
import TagHelper
|
|
import censor as cen
|
|
from icecream import ic
|
|
|
|
## TODO: generalize based on headings(?) in index.wiki
|
|
|
|
censor = cen.listBad
|
|
filter = ["Dream", "Gratitude", "Review", "jrnl", "piracy", "work", "job", "debt", "people"]
|
|
#TODO create = ...
|
|
|
|
def loadNetwork(path='network.json'):
|
|
# Loads the network.json file
|
|
with open(path, 'r') as f:
|
|
everything = json.load(f)
|
|
return everything
|
|
|
|
def setNetwork(everything):
|
|
# Everything is loaded from the network.json file
|
|
keys = set(everything.network())
|
|
values = set(everything.values())
|
|
everything = network + values
|
|
return everything
|
|
|
|
def filterFiles(AllFileList):
|
|
toFilter = filter + censor
|
|
tagList = TagHelper.getAllTags()
|
|
doNotTakeFiles = set()
|
|
for mask in toFilter:
|
|
try:
|
|
doNotTakeFiles.update(tagList[mask])
|
|
except KeyError:
|
|
print("Key not found: {}".format(mask))
|
|
return AllFileList - doNotTakeFiles
|
|
|
|
def censorNetwork(network):
|
|
# Takes network as a set
|
|
for c in censor:
|
|
if c in network:
|
|
network.add(generateBlocks(len(c) + random.randint(0, 5)))
|
|
network.remove(c)
|
|
return network
|
|
|
|
def generateBlocks(size=1):
|
|
# Generates a length size unicode string that is formed from blocks:
|
|
charList = ['▐', '░', '▒', '▓', '▔', '▕', '▖▗', '▘▙', '▚', '▛', '▜', '▝', '▞', '▟']
|
|
ret = ""
|
|
while size > 0:
|
|
size = size - 1
|
|
rand = random.randint(0,13)
|
|
ret = ret + charList[rand]
|
|
return ret
|
|
|
|
def createIndexNode(network):
|
|
pass
|
|
|
|
def copyFiles(fileList):
|
|
baseFilePath = '/home/anish/vimwiki/'
|
|
try:
|
|
mkdir('output')
|
|
except FileExistsError:
|
|
pass
|
|
for f in fileList:
|
|
try:
|
|
shutil.copy(baseFilePath + f, './output/')
|
|
except FileNotFoundError:
|
|
print("Could not copy file {}:".format(baseFilePath + f))
|
|
|
|
def censorFiles():
|
|
outputBasePath = './output/'
|
|
for fileName in listdir(outputBasePath):
|
|
fileName = outputBasePath + fileName
|
|
newFile = ""
|
|
print("Censoring: {}".format(fileName))
|
|
with open(fileName, 'r') as f:
|
|
for line in f.readlines():
|
|
for c in censor:
|
|
line = line.replace(c, generateBlocks(len(c)))
|
|
newFile = newFile + line
|
|
with open(fileName, 'w') as f:
|
|
for line in newFile:
|
|
f.write(line)
|
|
|
|
if __name__=='__main__':
|
|
|
|
#network = loadNetwork()
|
|
#network = censorNetwork(network)
|
|
AllFiles = TagHelper.getAllFiles()
|
|
FilteredFiles = filterFiles(AllFiles)
|
|
copyFiles(FilteredFiles)
|
|
print("Censoring files...")
|
|
censorFiles()
|