เจจเฉ‹เจŸเจธเจผเจจ เจ…เจคเฉ‡ เจชเจพเจˆเจฅเจจ เจจเจพเจฒ เจ˜เจฐเฉ‡เจฒเฉ‚ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ

เจฎเฉˆเจ‚ เจนเจฎเฉ‡เจธเจผเจพเจ‚ เจ‡เจธ เจ—เฉฑเจฒ เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจฎเฉ‡เจฐเฉ€ เจ‡เจฒเฉˆเจ•เจŸเฉเจฐเจพเจจเจฟเจ• เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจตเจฟเฉฑเจš เจ•เจฟเจคเจพเจฌเจพเจ‚ เจจเฉ‚เฉฐ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจ•เจฟเจตเฉ‡เจ‚ เจตเฉฐเจกเจฃเจพ เจนเฉˆเฅค เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจšเฉ€เจœเจผเจพเจ‚ เจฆเฉ€ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจ—เจฃเจจเจพ เจฆเฉ‡ เจจเจพเจฒ เจ‡เจธ เจตเจฟเจ•เจฒเจช เจคเฉ‡ เจ†เจ‡เจ† เจนเจพเจ‚. เจฎเฉˆเจ‚ เจฌเจฟเฉฑเจฒเฉ€ เจฆเฉ‡ เจ…เจงเฉ€เจจ เจธเจพเจฐเฉ‡ เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฃ เจตเจพเจฒเฉ‡ เจตเจฟเจ…เจ•เจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจชเฉเฉฑเจ›เจฆเจพ เจนเจพเจ‚.

เจญเจพเจ— 1. เจกเฉเจฐเฉŒเจชเจฌเจพเจ•เจธ

เจฎเฉ‡เจฐเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจ•เจฟเจคเจพเจฌเจพเจ‚ เจกเฉเจฐเฉŒเจชเจฌเจพเจ•เจธ 'เจคเฉ‡ เจนเจจเฅค เจ‡เฉฑเจฅเฉ‡ 4 เจธเจผเฉเจฐเฉ‡เจฃเฉ€เจ†เจ‚ เจนเจจ เจœเจฟเจจเฉเจนเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจตเฉฐเจกเจฟเจ† เจนเฉˆ: เจชเจพเจ  เจชเฉเจธเจคเจ•, เจนเจตเจพเจฒเจพ, เจ—เจฒเจช, เจ—เฉˆเจฐ-เจ—เจฒเจชเฅค เจชเจฐ เจฎเฉˆเจ‚ เจŸเฉ‡เจฌเจฒ เจตเจฟเฉฑเจš เจนเจตเจพเจฒเจพ เจ•เจฟเจคเจพเจฌเจพเจ‚ เจจเจนเฉ€เจ‚ เจœเฉ‹เฉœเจฆเจพ.

เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจ•เจฟเจคเจพเจฌเจพเจ‚ .epub เจนเจจ, เจฌเจพเจ•เฉ€ .pdf เจนเจจเฅค เจญเจพเจต, เจ…เฉฐเจคเจฎ เจนเฉฑเจฒ เจ•เจฟเจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ‹เจตเจพเจ‚ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจตเจฐ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจ•เจฟเจคเจพเจฌเจพเจ‚ เจฆเฉ‡ เจฎเฉ‡เจฐเฉ‡ เจฐเจธเจคเฉ‡ เจ•เฉเจ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจนเจจ:

/ะšะฝะธะณะธ/ะะตั…ัƒะดะพะถะตัั‚ะฒะตะฝะฝะพะต/ะะพะฒะพะต/ะ”ะธะทะฐะนะฝ/ะฎั€ะธะน ะ“ะพั€ะดะพะฝ/ะšะฝะธะณะฐ ะฟั€ะพ ะฑัƒะบะฒั‹ ะพั‚ ะ ะดะพ ะฏ.epub 

เจœเฉ‡เจ•เจฐ เจ•เจฟเจคเจพเจฌ เจ—เจฒเจช เจนเฉˆ, เจคเจพเจ‚ เจธเจผเฉเจฐเฉ‡เจฃเฉ€ (เจœเฉ‹ เจ•เจฟ เจ‰เจชเจฐเฉ‹เจ•เจค เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš "เจกเจฟเจœเจผเจพเจˆเจจ" เจนเฉˆ) เจนเจŸเจพ เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

เจฎเฉˆเจ‚ เจกเฉเจฐเฉŒเจชเจฌเจพเจ•เจธ API เจจเจพเจฒ เจชเจฐเฉ‡เจธเจผเจพเจจ เจจเจพ เจนเฉ‹เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเฉˆ เจœเฉ‹ เจซเฉ‹เจฒเจกเจฐ เจจเฉ‚เฉฐ เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจพเจˆเจœเจผ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจญเจพเจต, เจฏเฉ‹เจœเจจเจพ เจ‡เจน เจนเฉˆ: เจ…เจธเฉ€เจ‚ เจซเฉ‹เจฒเจกเจฐ เจคเฉ‹เจ‚ เจ•เจฟเจคเจพเจฌเจพเจ‚ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจพเจ‚, เจนเจฐเฉ‡เจ• เจ•เจฟเจคเจพเจฌ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจผเจฌเจฆ เจ•เจพเจŠเจ‚เจŸเจฐ เจฐเจพเจนเฉ€เจ‚ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจจเฉ‹เจŸเจธเจผเจจ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจฆเฉ‡ เจนเจพเจ‚เฅค

เจญเจพเจ— 2. เจ‡เฉฑเจ• เจฒเจพเจˆเจจ เจœเฉ‹เฉœเฉ‹

เจธเจพเจฐเจฃเฉ€ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจพ เจ•เฉเจ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ. เจงเจฟเจ†เจจ เจฆเจฟเจ“: เจ•เจพเจฒเจฎ เจฆเฉ‡ เจจเจพเจฎ เจฒเจพเจคเฉ€เจจเฉ€ เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‰เจฃเจพ เจฌเจฟเจนเจคเจฐ เจนเฉˆเฅค

เจจเฉ‹เจŸเจธเจผเจจ เจ…เจคเฉ‡ เจชเจพเจˆเจฅเจจ เจจเจพเจฒ เจ˜เจฐเฉ‡เจฒเฉ‚ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ

เจ…เจธเฉ€เจ‚ เจ…เจฃเจ…เจงเจฟเจ•เจพเจฐเจค เจจเฉ‹เจŸเฉ‡เจธเจผเจจ API เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจงเจฟเจ•เจพเจฐเจค เจ…เจœเฉ‡ เจคเฉฑเจ• เจกเจฟเจฒเฉ€เจตเจฐ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

เจจเฉ‹เจŸเจธเจผเจจ เจ…เจคเฉ‡ เจชเจพเจˆเจฅเจจ เจจเจพเจฒ เจ˜เจฐเฉ‡เจฒเฉ‚ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ

เจจเฉ‹เจŸเจธเจผเจจ 'เจคเฉ‡ เจœเจพเจ“, Ctrl + Shift + J เจฆเจฌเจพเจ“, เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ -> เจ•เฉ‚เจ•เฉ€เจœเจผ 'เจคเฉ‡ เจœเจพเจ“, เจŸเฉ‹เจ•เจจ_เจตเฉ€2 เจฆเฉ€ เจ•เจพเจชเฉ€ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจŸเฉ‹เจ•เจจ เจ•เจพเจฒ เจ•เจฐเฉ‹เฅค เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจธเจพเจˆเจจ เจฆเฉ‡ เจจเจพเจฒ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจชเฉฐเจจเฉ‡ 'เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจฒเจฟเฉฐเจ• เจจเฉ‚เฉฐ เจ•เจพเจชเฉ€ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ NOTION เจ•เจนเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจจเฉ‹เจŸเจธเจผเจจ เจจเจพเจฒ เจœเฉเฉœเจจ เจฒเจˆ เจ•เฉ‹เจก เจฒเจฟเจ–เจฆเฉ‡ เจนเจพเจ‚เฅค

database = client.get_collection_view(NOTION)
current_rows = database.default_query().execute()

เจ…เฉฑเจ—เฉ‡, เจ†เจ‰ เจŸเฉ‡เจฌเจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ•เจคเจพเจฐ เจœเฉ‹เฉœเจจ เจฒเจˆ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจฒเจฟเจ–เจฆเฉ‡ เจนเจพเจ‚เฅค

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

เจ‡เฉฑเจฅเฉ‡ เจ•เฉ€ เจนเฉ‹ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเฉ€ เจ•เจคเจพเจฐ เจตเจฟเฉฑเจš เจŸเฉ‡เจฌเจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจ•เจคเจพเจฐ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจœเฉ‹เฉœเจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เฉฑเจ—เฉ‡, เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจฎเจพเจฐเจ— เจจเฉ‚เฉฐ โ€œ/โ€ เจฆเฉ‡ เจจเจพเจฒ เจตเฉฐเจกเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจŸเฉˆเจ—เจธ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจŸเฉˆเจ—เจธ - "เจ•เจฒเจพ", "เจกเจฟเจœเจผเจพเจˆเจจ", เจฒเฉ‡เจ–เจ• เจ•เฉŒเจฃ เจนเฉˆ, เจ†เจฆเจฟ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจšเฅค เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจชเจฒเฉ‡เจŸ เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจœเจผเจฐเฉ‚เจฐเฉ€ เจ–เฉ‡เจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉˆเจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚.

เจญเจพเจ— 3. เจธเจผเจฌเจฆเจพเจ‚, เจ˜เฉฐเจŸเฉ‡ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจ…เจจเฉฐเจฆ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจ•เจฐเจจเจพ

เจ‡เจน เจนเฉ‹เจฐ เจตเฉ€ เจ”เจ–เจพ เจ•เฉฐเจฎ เจนเฉˆเฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจฏเจพเจฆ เจนเฉˆ, เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจฆเฉ‹ เจซเจพเจฐเจฎเฉˆเจŸ เจนเจจ: epub เจ…เจคเฉ‡ pdf. เจœเฉ‡ เจˆเจชเจฌ เจจเจพเจฒ เจธเจญ เจ•เฉเจ เจธเจชเฉฑเจธเจผเจŸ เจนเฉˆ - เจธเจผเจฌเจฆ เจธเจผเจพเจ‡เจฆ เจ‰เฉฑเจฅเฉ‡ เจนเจจ, เจคเจพเจ‚ เจชเฉ€เจกเฉ€เจเจซ เจฌเจพเจฐเฉ‡ เจธเจญ เจ•เฉเจ เจ‡เฉฐเจจเจพ เจธเจชเฉฑเจธเจผเจŸ เจจเจนเฉ€เจ‚ เจนเฉˆ: เจ‡เจธ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซเจผ เจšเจฟเจชเจ•เฉ€เจ†เจ‚ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจธเจผเจพเจฎเจฒ เจนเฉ‹ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจเฅค

เจ‡เจธ เจฒเจˆ เจชเฉ€เจกเฉ€เจเจซ เจตเจฟเฉฑเจš เจธเจผเจฌเจฆเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจ•เจฐเจจ เจฒเจˆ เจธเจพเจกเจพ เจ•เจพเจฐเจœ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เจพ: เจ…เจธเฉ€เจ‚ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจจเจฟเจธเจผเจšเจฟเจค เจธเจฅเจฟเจฐ (เจชเฉเจฐเจคเฉ€ เจชเฉฐเจจเฉ‡ เจธเจผเจฌเจฆเจพเจ‚ เจฆเฉ€ เจ”เจธเจค เจธเฉฐเจ–เจฟเจ†) เจจเจพเจฒ เจ—เฉเจฃเจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจ‡เฉฑเจฅเฉ‡ เจ‰เจน เจนเฉˆ:

def get_words_count(pages_number):
    return pages_number * WORDS_PER_PAGE

เจ‡เฉฑเจ• A4 เจชเฉฐเจจเฉ‡ เจฒเจˆ เจ‡เจน WORDS_PER_PAGE เจฒเจ—เจญเจ— 300 เจนเฉˆเฅค

เจนเฉเจฃ เจชเฉ‡เจœเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจฒเจฟเจ–เจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจตเจฐเจคเจพเจ‚เจ—เฉ‡ pyPDF2.

def get_pdf_pages_number(path, filename):
    pdf = PdfFileReader(open(os.path.join(path, filename), 'rb'))
    return pdf.getNumPages()

เจ…เฉฑเจ—เฉ‡, เจ…เจธเฉ€เจ‚ Epub เจตเจฟเฉฑเจš เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจšเฉ€เจœเจผ เจฒเจฟเจ–เจพเจ‚เจ—เฉ‡เฅค เจ…เจธเฉ€เจ‚ เจตเจฐเจคเจฆเฉ‡ เจนเจพเจ‚ epub_converter. เจ‡เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจ•เจฟเจคเจพเจฌ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจพเจ‚, เจ‡เจธเจจเฉ‚เฉฐ เจฒเจพเจˆเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจนเจฐเฉ‡เจ• เจฒเจพเจˆเจจ เจฒเจˆ เจธเจผเจฌเจฆเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

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)

เจนเฉเจฃ เจธเจฎเฉ‡เจ‚ เจฆเฉ€ เจ—เจฃเจจเจพ เจ•เจฐเฉ€เจเฅค เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจฎเจจเจชเจธเฉฐเจฆ เจธเจผเจฌเจฆเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจคเฉเจนเจพเจกเฉ€ เจชเฉœเฉเจนเจจ เจฆเฉ€ เจ—เจคเฉ€ เจจเจพเจฒ เจตเฉฐเจกเจฆเฉ‡ เจนเจพเจ‚เฅค

def get_reading_time(words_count):
    return round(((words_count / WORDS_PER_MINUTE) / 60) * 10) / 10

เจญเจพเจ— 4. เจธเจพเจฐเฉ‡ เจญเจพเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจเจพ

เจธเจพเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ•เจฟเจคเจพเจฌเจพเจ‚ เจฆเฉ‡ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ‡ เจธเฉฐเจญเจต เจฎเจพเจฐเจ—เจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฒเฉฐเจ˜เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจœเจพเจ‚เจš เจ•เจฐเฉ‹ เจ•เจฟ เจ•เฉ€ เจจเฉ‹เจŸเจธเจผเจจ เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‡เฉฑเจ• เจ•เจฟเจคเจพเจฌ เจนเฉˆ: เจœเฉ‡เจ•เจฐ เจ‰เฉฑเจฅเฉ‡ เจนเฉˆ, เจคเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจนเฉเจฃ เจ‡เฉฑเจ• เจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค
เจซเจฟเจฐ เจธเจพเจจเฉ‚เฉฐ เจซเจพเจˆเจฒ เจฆเฉ€ เจ•เจฟเจธเจฎ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ เจ…เจคเฉ‡, เจ‡เจธ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจฟเจ†เจ‚, เจธเจผเจฌเจฆเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจ•เจฐเฉ‹. เจ…เฉฐเจค เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ•เจฟเจคเจพเจฌ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹เฅค

เจ‡เจน เจ‰เจน เจ•เฉ‹เจก เจนเฉˆ เจœเฉ‹ เจธเจพเจจเฉ‚เฉฐ เจฎเจฟเจฒเจฆเจพ เจนเฉˆ:

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)

เจ…เจคเฉ‡ เจ‡เจน เจฆเฉ‡เจ–เจฃ เจฒเจˆ เจซเฉฐเจ•เจธเจผเจจ เจ•เจฟ เจ•เฉ€ เจ•เฉ‹เจˆ เจ•เจฟเจคเจพเจฌ เจœเฉ‹เฉœเฉ€ เจ—เจˆ เจนเฉˆ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจธเจฆเจพ เจนเฉˆ:

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

เจธเจฟเฉฑเจŸเจพ

เจ‡เจธ เจฒเฉ‡เจ– เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจฃ เจตเจพเจฒเฉ‡ เจนเจฐ เจ•เจฟเจธเฉ‡ เจฆเจพ เจงเฉฐเจจเจตเจพเจฆเฅค เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจฎเฉ€เจฆ เจนเฉˆ เจ•เจฟ เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจชเฉœเฉเจนเจจ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเฉ‡เจ—เจพ :)

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹