Resync should be working

This commit is contained in:
Phyks 2014-05-14 17:07:57 +02:00
parent 8c0a9e83bc
commit 558946f48d
3 changed files with 28 additions and 16 deletions

View File

@ -46,7 +46,7 @@ Should be almost working and usable now, although still to be considered as **ex
* Open
* working: all
* Resync
* Testing
* working
* Update
* Testing

View File

@ -171,6 +171,8 @@ def deleteFile(filename):
pass
if found:
bibtexRewrite(bibtex)
elif os.path.isfile(filename):
os.remove(filename)
return found
@ -182,9 +184,10 @@ def diffFilesIndex():
* only file entry if file with missing bibtex entry
"""
files = tools.listDir(params.folder)
files = [ i for i in files if tools.getExtension(i) in ['.pdf', '.djvu'] ]
try:
with open(params.folder+'index.bib', 'r', encoding='utf-8') as fh:
index = BibTexParser(fh.read())
index = BibTexParser(fh.read().encode('utf-8'))
index_diff = index.get_entry_dict()
except:
tools.warning("Unable to open index file.")
@ -199,7 +202,7 @@ def diffFilesIndex():
for filename in files:
index_diff[filename] = {'file': filename}
return index
return index.get_entry_dict()
def getBibtex(entry, file_id='both'):

35
main.py
View File

@ -272,56 +272,65 @@ def openFile(ident):
def resync():
diff = backend.diffFilesIndex()
for entry in diff:
if diff is False:
return False
for key in diff:
entry = diff[key]
if entry['file'] == '':
print("Found entry in index without associated file.")
confirm = False
while not confirm:
print("\nFound entry in index without associated file: " +
entry['id'])
print("Title:\t"+entry['title'])
loop = True
while confirm:
filename = tools.rawInput("File to import for this entry " +
"(leave empty to delete the " +
"entry)? ")
if filename == '':
break
else:
confirm = True
if 'doi' in entry.keys():
doi = fetcher.findDOI(filename)
if doi is not False and doi != entry['doi']:
confirm = tools.rawInput("Found DOI does not " +
loop = tools.rawInput("Found DOI does not " +
"match bibtex entry " +
"DOI, continue anyway " +
"? [y/N]")
confirm = (confirm.lower() == 'y')
loop = (loop.lower() != 'y')
if 'Eprint' in entry.keys():
arxiv = fetcher.findArXivId(filename)
if arxiv is not False and arxiv != entry['Eprint']:
confirm = tools.rawInput("Found arXiv id does " +
loop = tools.rawInput("Found arXiv id does " +
"not match bibtex " +
"entry arxiv id, " +
"continue anyway ? [y/N]")
confirm = (confirm.lower() == 'y')
elif 'isbn' in entry.keys():
loop = (loop.lower() != 'y')
if 'isbn' in entry.keys():
isbn = fetcher.findISBN(filename)
if isbn is not False and isbn != entry['isbn']:
confirm = tools.rawInput("Found ISBN does not " +
loop = tools.rawInput("Found ISBN does not " +
"match bibtex entry " +
"ISBN, continue anyway " +
"? [y/N]")
confirm = (confirm.lower() == 'y')
loop = (loop.lower() != 'y')
continue
if filename == '':
backend.deleteId(entry['id'])
print("Deleted entry \""+entry['id']+"\".")
else:
new_name = backend.getNewName(filename, entry)
try:
shutil.copy2(filename, new_name)
print("Imported new file "+filename+" for entry " +
entry['id']+".")
except IOError:
new_name = False
sys.exit("Unable to move file to library dir " +
params.folder+".")
backend.bibtexEdit(entry['id'], {'file': filename})
else:
print("Found file without any associated entry in index.")
print("Found file without any associated entry in index:")
print(entry['file'])
action = ''
while action.lower() not in ['import', 'delete']:
action = tools.rawInput("What to do? [import / delete] ")