āĻ§āĻžāĻ°āĻŖāĻž āĻāĻŦāĻ‚ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻāĻ•āĻŸāĻŋ āĻšā§‹āĻŽ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž

āĻ†āĻŽāĻžāĻ° āĻ‡āĻ˛ā§‡āĻ•āĻŸā§āĻ°āĻ¨āĻŋāĻ• āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ¤ā§‡ āĻŦāĻ‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¸ā§‡ āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻ†āĻŽāĻŋ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧāĻ‡ āĻ†āĻ—ā§āĻ°āĻšā§€āĨ¤ āĻļā§‡āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤, āĻ†āĻŽāĻŋ āĻĒā§ƒāĻˇā§āĻ āĻžāĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ—ā§āĻĄāĻŋāĻœā§‡āĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ—āĻŖāĻ¨āĻž āĻ¸āĻš āĻāĻ‡ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒā§‡ āĻāĻ¸ā§‡āĻ›āĻŋāĨ¤ āĻ†āĻŽāĻŋ āĻŦāĻŋāĻĄāĻŧāĻžāĻ˛ āĻ…āĻ§ā§€āĻ¨ā§‡ āĻ¸āĻŦ āĻ†āĻ—ā§āĻ°āĻšā§€ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ āĻœāĻŋāĻœā§āĻžāĻžāĻ¸āĻž.

āĻĒāĻžāĻ°ā§āĻŸ 1. āĻĄā§āĻ°āĻĒāĻŦāĻ•ā§āĻ¸

āĻ†āĻŽāĻžāĻ° āĻ¸āĻŦ āĻŦāĻ‡ āĻĄā§āĻ°āĻĒāĻŦāĻ•ā§āĻ¸ā§‡ āĻ†āĻ›ā§‡āĨ¤ 4āĻŸāĻŋ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻ†āĻŽāĻŋ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻŦāĻŋāĻ­āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡āĻ›āĻŋ: āĻĒāĻžāĻ ā§āĻ¯āĻĒā§āĻ¸ā§āĻ¤āĻ•, āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸, āĻĢāĻŋāĻ•āĻļāĻ¨, āĻ¨āĻ¨-āĻĢāĻŋāĻ•āĻļāĻ¨āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻŦāĻ‡ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŋ āĻ¨āĻžāĨ¤

āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— āĻŦāĻ‡ .epub, āĻŦāĻžāĻ•āĻŋāĻ—ā§āĻ˛ā§‹ .pdfāĨ¤ āĻ¯ā§‡, āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ•āĻ°āĻ•āĻŽ āĻ‰āĻ­āĻ¯āĻŧ āĻ…āĻĒāĻļāĻ¨ āĻ•āĻ­āĻžāĻ° āĻ†āĻŦāĻļā§āĻ¯āĻ•.

āĻŦāĻ‡āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻ° āĻĒāĻĨāĻ—ā§āĻ˛āĻŋ āĻāĻ°āĻ•āĻŽ āĻ•āĻŋāĻ›ā§:

/КĐŊиĐŗи/НĐĩŅ…ŅƒĐ´ĐžĐļĐĩŅŅ‚вĐĩĐŊĐŊĐžĐĩ/НовоĐĩ/ДизайĐŊ/ĐŽŅ€Đ¸Đš ГоŅ€Đ´ĐžĐŊ/КĐŊиĐŗĐ° ĐŋŅ€Đž ĐąŅƒĐēвŅ‹ ĐžŅ‚ А Đ´Đž Đ¯.epub 

āĻŦāĻ‡āĻŸāĻŋ āĻ¯āĻĻāĻŋ āĻ•āĻ˛ā§āĻĒāĻ•āĻžāĻšāĻŋāĻ¨ā§€ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻŦāĻŋāĻ­āĻžāĻ—āĻŸāĻŋ (āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻ‰āĻĒāĻ°ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ "āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨") āĻ¸āĻ°āĻžāĻ¨ā§‹ āĻšāĻŦā§‡āĨ¤

āĻ†āĻŽāĻŋ āĻĄā§āĻ°āĻĒāĻŦāĻ•ā§āĻ¸ API āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻŦāĻŋāĻ°āĻ•ā§āĻ¤ āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°āĻŸāĻŋāĻ•ā§‡ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ‡āĻœ āĻ•āĻ°ā§‡āĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻŸāĻŋ āĻšāĻ˛: āĻ†āĻŽāĻ°āĻž āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻŦāĻ‡ āĻ¨āĻŋāĻ‡, āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻŦāĻ‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻšāĻžāĻ˛āĻžāĻ‡ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ•ā§‡ āĻ¨ā§‹āĻŸā§‡ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŋāĨ¤

āĻĒāĻžāĻ°ā§āĻŸ 2āĨ¤ āĻāĻ•āĻŸāĻŋ āĻ˛āĻžāĻ‡āĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨

āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻāĻ‡ āĻŽāĻ¤ āĻ•āĻŋāĻ›ā§ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ—: āĻ˛ā§āĻ¯āĻžāĻŸāĻŋāĻ¨ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻ•āĻ˛āĻžāĻŽā§‡āĻ° āĻ¨āĻžāĻŽ āĻ•āĻ°āĻž āĻ­āĻžāĻ˛āĨ¤

āĻ§āĻžāĻ°āĻŖāĻž āĻāĻŦāĻ‚ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻāĻ•āĻŸāĻŋ āĻšā§‹āĻŽ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž

āĻ†āĻŽāĻ°āĻž āĻ…āĻ¨āĻžāĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ§āĻžāĻ°āĻŖāĻž API āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦ, āĻ•āĻžāĻ°āĻŖ āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛āĻŸāĻŋ āĻāĻ–āĻ¨āĻ“ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋāĨ¤

āĻ§āĻžāĻ°āĻŖāĻž āĻāĻŦāĻ‚ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻāĻ•āĻŸāĻŋ āĻšā§‹āĻŽ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž

Notion āĻ āĻ¯āĻžāĻ¨, Ctrl + Shift + J āĻŸāĻŋāĻĒā§āĻ¨, Application -> Cookies-āĻ āĻ¯āĻžāĻ¨, token_v2 āĻ•āĻĒāĻŋ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ•ā§‡ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻŦāĻ˛ā§āĻ¨āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ¸āĻžāĻ‡āĻ¨ āĻ¸āĻš āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻĒā§ƒāĻˇā§āĻ āĻžāĻ¯āĻŧ āĻ¯āĻžāĻ‡ āĻāĻŦāĻ‚ āĻ˛āĻŋāĻ™ā§āĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ•āĻ°āĻŋāĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻžāĻ•ā§‡ NOTION āĻŦāĻ˛āĻŋāĨ¤

āĻ¤āĻžāĻ°āĻĒāĻ° āĻ†āĻŽāĻ°āĻž 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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨