Faciens domum bibliothecam cum Notione et Pythone

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.

Faciens domum bibliothecam cum Notione et Pythone

API Notione privata utemur, quia officialis nondum traditus est.

Faciens domum bibliothecam cum Notione et Pythone

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 pyPDF2.

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 epub_converter. Hic sumimus librum, convertimus eum in lineas, et numeramus verba pro singulis lineis.

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

Add a comment