Check if file already exists when importing
This commit is contained in:
parent
c304eb2578
commit
5aed10f4c5
83
main.py
83
main.py
@ -3,12 +3,14 @@
|
|||||||
"""
|
"""
|
||||||
Main app
|
Main app
|
||||||
"""
|
"""
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import shutil
|
import shutil
|
||||||
import requests
|
import requests
|
||||||
import subprocess
|
import subprocess
|
||||||
import re
|
import re
|
||||||
|
import os
|
||||||
try:
|
try:
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
except:
|
except:
|
||||||
@ -17,6 +19,13 @@ from bibtexparser.bparser import BibTexParser
|
|||||||
import params
|
import params
|
||||||
|
|
||||||
|
|
||||||
|
def warning(*objs):
|
||||||
|
"""
|
||||||
|
Write to stderr
|
||||||
|
"""
|
||||||
|
print("WARNING: ", *objs, file=sys.stderr)
|
||||||
|
|
||||||
|
|
||||||
def bibtexAppend(data):
|
def bibtexAppend(data):
|
||||||
"""
|
"""
|
||||||
Append data to the main bibtex file
|
Append data to the main bibtex file
|
||||||
@ -100,16 +109,39 @@ def doi2Bib(doi):
|
|||||||
return r.text
|
return r.text
|
||||||
|
|
||||||
|
|
||||||
|
_slugify_strip_re = re.compile(r'[^\w\s-]')
|
||||||
|
_slugify_hyphenate_re = re.compile(r'[\s]+')
|
||||||
|
def _slugify(value):
|
||||||
|
"""
|
||||||
|
Normalizes string, converts to lowercase, removes non-alpha characters,
|
||||||
|
and converts spaces to hyphens.
|
||||||
|
|
||||||
|
From Django's "django/template/defaultfilters.py".
|
||||||
|
"""
|
||||||
|
import unicodedata
|
||||||
|
if not isinstance(value, unicode):
|
||||||
|
value = unicode(value)
|
||||||
|
value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore')
|
||||||
|
value = unicode(_slugify_strip_re.sub('', value).strip())
|
||||||
|
return _slugify_hyphenate_re.sub('_', value)
|
||||||
|
|
||||||
|
|
||||||
|
def getExtension(filename):
|
||||||
|
"""
|
||||||
|
Get the extension of the filename
|
||||||
|
"""
|
||||||
|
return filename[filename.rfind('.'):]
|
||||||
|
|
||||||
|
|
||||||
def addFile(src):
|
def addFile(src):
|
||||||
"""
|
"""
|
||||||
Add a file to the library
|
Add a file to the library
|
||||||
"""
|
"""
|
||||||
# TODO : Handle books (ISBN)
|
# TODO : Handle books (ISBN)
|
||||||
# Check file already exist
|
|
||||||
doi = findDOI(src)
|
doi = findDOI(src)
|
||||||
|
|
||||||
if doi is False:
|
if doi is False:
|
||||||
print("Could not determine the DOI for "+src+", switching to manual " +
|
warning("Could not determine the DOI for "+src+", switching to manual " +
|
||||||
"entry.")
|
"entry.")
|
||||||
doi = raw_input('DOI ? ')
|
doi = raw_input('DOI ? ')
|
||||||
else:
|
else:
|
||||||
@ -126,16 +158,26 @@ def addFile(src):
|
|||||||
new_name = params.format
|
new_name = params.format
|
||||||
new_name = new_name.replace("%f", authors[0].split(',')[0].strip())
|
new_name = new_name.replace("%f", authors[0].split(',')[0].strip())
|
||||||
new_name = new_name.replace("%l", authors[-1].split(',')[0].strip())
|
new_name = new_name.replace("%l", authors[-1].split(',')[0].strip())
|
||||||
new_name = new_name.replace("%j", bibtex['journal'].replace('.', '')
|
new_name = new_name.replace("%j", bibtex['journal'])
|
||||||
.replace(' ', '_'))
|
|
||||||
new_name = new_name.replace("%Y", bibtex['year'])
|
new_name = new_name.replace("%Y", bibtex['year'])
|
||||||
new_name = new_name.replace("%t", bibtex['title'])
|
new_name = new_name.replace("%t", bibtex['title'])
|
||||||
new_name = new_name.replace("%a", ', '.join([i.split(',')[0].strip()
|
new_name = new_name.replace("%a", ', '.join([i.split(',')[0].strip()
|
||||||
for i in authors]))
|
for i in authors]))
|
||||||
|
|
||||||
new_name = params.folder+new_name+src[src.rfind('.'):]
|
new_name = params.folder+_slugify(new_name)+getExtension(src)
|
||||||
bibtex['file'] = new_name
|
bibtex['file'] = new_name
|
||||||
|
|
||||||
|
while os.path.exists(new_name):
|
||||||
|
warning("Error, file "+new_name+" already exists.")
|
||||||
|
default_rename = new_name.replace(getExtension(new_name),
|
||||||
|
" (2)"+getExtension(new_name))
|
||||||
|
rename = raw_input("New name ["+default_rename+"] ? ")
|
||||||
|
if rename == '':
|
||||||
|
new_name = default_rename
|
||||||
|
else:
|
||||||
|
new_name = rename
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
shutil.copy2(src, new_name)
|
shutil.copy2(src, new_name)
|
||||||
except IOError:
|
except IOError:
|
||||||
@ -147,21 +189,24 @@ def addFile(src):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if len(sys.argv) < 2:
|
try:
|
||||||
sys.exit("Usage : TODO")
|
if len(sys.argv) < 2:
|
||||||
|
sys.exit("Usage : TODO")
|
||||||
|
|
||||||
if sys.argv[1] == 'download':
|
if sys.argv[1] == 'download':
|
||||||
raise Exception('TODO')
|
raise Exception('TODO')
|
||||||
|
|
||||||
if sys.argv[1] == 'import':
|
if sys.argv[1] == 'import':
|
||||||
if len(sys.argv) < 3:
|
if len(sys.argv) < 3:
|
||||||
sys.exit("Usage : " + sys.argv[0] + " import FILE")
|
sys.exit("Usage : " + sys.argv[0] + " import FILE")
|
||||||
|
|
||||||
addFile(sys.argv[2])
|
addFile(sys.argv[2])
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
elif sys.argv[1] == 'list':
|
||||||
|
raise Exception('TODO')
|
||||||
|
|
||||||
|
elif sys.argv[1] == 'search':
|
||||||
|
raise Exception('TODO')
|
||||||
|
except KeyboardInterrupt:
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
elif sys.argv[1] == 'list':
|
|
||||||
raise Exception('TODO')
|
|
||||||
|
|
||||||
elif sys.argv[1] == 'search':
|
|
||||||
raise Exception('TODO')
|
|
||||||
|
Loading…
Reference in New Issue
Block a user