Semper studui quomodo optimos libros in mea bibliotheca electronica distribuerem. In fine, ad hanc optionem latis calculi numerorum paginarum et aliarum nullam habui. Omnes quorum interest interrogo sub cat.
Pars 1. Dropbox
Omnes libri mei in dropbox. Quattuor genera sunt in quae omnia distinxi: Textbook, Reference, Fiction, Non-fiction. Sed libros ad mensam non refero.
Plerique libri funt .epub, reliqui .pdf. Hoc est, finalis solutio utrumque bene quodammodo operire debet.
Viae meae ad libros sunt aliquid simile;
/Книги/Нехудожественное/Новое/Дизайн/Юрий Гордон/Книга про буквы от А до Я.epub
Si liber fictus est, categoria (id est "Design" in causa superiore tollitur.
Cum Dropbox API molestus esse non statui, cum applicationis eorum sim qui folder synchronizat. Id est, consilium hoc est: sumimus libros e folder, currit quisque librum per verbum dictionum, et notionem addimus.
Pars 2. Adde lineam
Mensa ipsa aliquid simile inspicere debet. ANIMADVERSIO: melius est nomina columnarum facere in Latinis.
API Notione privata utemur, quia officialis nondum traditus est.
Vade ad Notionem, preme Ctrl + Shift + J, vade ad Applicationem -> Crustulae, effinge tesseram_v2 et vocant TOKEN. Deinde ad paginam imus, quae cum signo bibliothecae indigemus et nexum effingimus. eam notionem vocamus.
Deinde scribemus codicem ad Notionem coniungere.
database = client.get_collection_view(NOTION)
current_rows = database.default_query().execute()
Deinde munus scribere ad mensam ordinem addere.
def add_row(path, file, words_count, pages_count, hours):
row = database.collection.add_row()
row.title = file
tags = path.split("/")
if len(tags) >= 1:
row.what = tags[0]
if len(tags) >= 2:
row.state = tags[1]
if len(tags) >= 3:
if tags[0] == "Художественное":
row.author = tags[2]
elif tags[0] == "Нехудожественное":
row.tags = tags[2]
elif tags[0] == "Учебники":
row.tags = tags[2]
if len(tags) >= 4:
row.author = tags[3]
row.hours = hours
row.pages = pages_count
row.words = words_count
Quid hic agitur. Mensam novo ordine addimus et addimus in primo ordine. Deinde, viam nostram per "/" dividemus et tags possidemus. Tags - in verbis "artis", "Destinationis", qui auctor est, et cetera. Agros deinde necessarias laminae omnia constituimus.
Pars 3. Computando verba, horas et alias delicias
Hoc negotium difficilius est. Ut meminimus, duas formas habemus: epub et pdf. Si omnia perspicua sunt cum epub - verba probabiliter ibi sunt, omnia non tam clara sunt de pdf: simpliciter constare potest ex infixa imaginibus.
Munus igitur nostrum ad verba numerandi in PDF hoc spectabit: numerum paginarum sumimus et multiplicamus constanti quodam (mediocris numero verborum per paginam).
Ibi ipsa est;
def get_words_count(pages_number):
return pages_number * WORDS_PER_PAGE
Haec WORDS_PER_PAGE pro pagina A4 circiter CCC est.
Nunc munus scribere ad paginas numerandas. Nos utemur
def get_pdf_pages_number(path, filename):
pdf = PdfFileReader(open(os.path.join(path, filename), 'rb'))
return pdf.getNumPages()
Deinde rem scribemus ad paginas numerandas in Epub. Utimur
def get_epub_pages_number(path, filename):
book = open_book(os.path.join(path, filename))
lines = convert_epub_to_lines(book)
words_count = 0
for line in lines:
words_count += len(line.split(" "))
return round(words_count / WORDS_PER_PAGE)
Nunc tempus computemus. Comitem verbi nostri dilectissimi capimus et per celeritatem legendi dividimus.
def get_reading_time(words_count):
return round(((words_count / WORDS_PER_MINUTE) / 60) * 10) / 10
Pars 4. omnes partes
Per omnes vias possibiles in libris nostris folder ire necesse est. Perscriptio si iam liber in Notione est: si adsit, lineam creare iam non oportet.
Tunc opus est genus tabellae determinare, secundum hoc, numerum verborum computare. Librum in fine adde.
Hunc codicem habemus:
for root, subdirs, files in os.walk(BOOKS_DIR):
if len(files) > 0 and check_for_excusion(root):
for file in files:
array = file.split(".")
filetype = file.split(".")[len(array) - 1]
filename = file.replace("." + filetype, "")
local_root = root.replace(BOOKS_DIR, "")
print("Dir: {}, file: {}".format(local_root, file))
if not check_for_existence(filename):
print("Dir: {}, file: {}".format(local_root, file))
if filetype == "pdf":
count = get_pdf_pages_number(root, file)
else:
count = get_epub_pages_number(root, file)
words_count = get_words_count(count)
hours = get_reading_time(words_count)
print("Pages: {}, Words: {}, Hours: {}".format(count, words_count, hours))
add_row(local_root, filename, words_count, count, hours)
Ac munus inspicias num liber additus sit similis est:
def check_for_existence(filename):
for row in current_rows:
if row.title in filename:
return True
elif filename in row.title:
return True
return False
conclusio,
Gratias omnes qui hunc articulum legunt. Spero te plus legere :) adjuvat
Source: www.habr.com