add main script
This commit is contained in:
		
						commit
						d96cba52df
					
				
							
								
								
									
										96
									
								
								mark_recall
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										96
									
								
								mark_recall
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,96 @@
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
 | 
			
		||||
# Mark/Recall script. Uses fuzzywuzzy for fuzzy matching.
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
import os
 | 
			
		||||
from collections import OrderedDict
 | 
			
		||||
 | 
			
		||||
DATA_DIR = os.getenv('XDG_DATA_DIR')
 | 
			
		||||
if DATA_DIR is None:
 | 
			
		||||
    DATA_DIR = os.path.expanduser('~/.local/share')
 | 
			
		||||
 | 
			
		||||
MARK_FILE = DATA_DIR + '/.mark_recall'
 | 
			
		||||
 | 
			
		||||
os.makedirs(DATA_DIR)
 | 
			
		||||
with open(MARK_FILE, 'r+') as f:
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def mark(dir=None):
 | 
			
		||||
    if dir is None:
 | 
			
		||||
        dir = os.getcwd()
 | 
			
		||||
 | 
			
		||||
    with open(MARK_FILE, 'r+') as f:
 | 
			
		||||
        path_list = [dir] + f.readlines()
 | 
			
		||||
 | 
			
		||||
        path_list = list(OrderedDict.fromkeys(path_list))
 | 
			
		||||
 | 
			
		||||
        f.writelines(path_list)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def recall(n=0):
 | 
			
		||||
    with open(MARK_FILE, 'r') as f:
 | 
			
		||||
        path_list = f.readlines()
 | 
			
		||||
 | 
			
		||||
    os.chdir(path_list[n])
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
def bamf(fuzzy_path):
 | 
			
		||||
    choices = get_fuzzy(fuzzy_path, 1)
 | 
			
		||||
    os.chdir(choices[0])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def list(n=10):
 | 
			
		||||
    paths = get_list(n)
 | 
			
		||||
    [print(p) for p in paths]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_fuzzy(fuzzy_path, n=1):
 | 
			
		||||
    import fuzzywuzzy
 | 
			
		||||
    import fuzzywuzzy.process
 | 
			
		||||
    
 | 
			
		||||
    with open(MARK_FILE, 'r') as f:
 | 
			
		||||
        path_list = f.readlines()
 | 
			
		||||
    
 | 
			
		||||
    choices = fuzzywuzzy.process.extract(fuzzy_path, path_list, limit=n
 | 
			
		||||
                                         scorer=fuzzywuzzy.token_sort_ratio)
 | 
			
		||||
    return [c[0] for c in choices]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_list(n=10):
 | 
			
		||||
    path_list = []
 | 
			
		||||
    with open(MARK_FILE, 'r') as f:
 | 
			
		||||
        for i, line in enumerate(f):
 | 
			
		||||
            path_list.append(line)
 | 
			
		||||
            if n-1 == i:
 | 
			
		||||
                break
 | 
			
		||||
 | 
			
		||||
    return path_list
 | 
			
		||||
   
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    args = list(sys.argv)
 | 
			
		||||
    cmd = args.pop(0)
 | 
			
		||||
 | 
			
		||||
    if cmd == 'mark':
 | 
			
		||||
        if args:
 | 
			
		||||
            mark(args.pop(0))
 | 
			
		||||
        else:
 | 
			
		||||
            mark()
 | 
			
		||||
    elif cmd == 'recall':
 | 
			
		||||
        if args:
 | 
			
		||||
            recall(args.pop(0))
 | 
			
		||||
        else:
 | 
			
		||||
            recall()
 | 
			
		||||
    elif cmd == 'bamf':
 | 
			
		||||
        if args:
 | 
			
		||||
            bamf(args.join(' '))
 | 
			
		||||
        else:
 | 
			
		||||
            recall()
 | 
			
		||||
    elif cmd == 'marklist:
 | 
			
		||||
        if args:
 | 
			
		||||
            list(args.pop(0))
 | 
			
		||||
        else:
 | 
			
		||||
            list()
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user