ืืื ืืื ืฉืืขื ืืืง ืืขืืืขื ืืื ืืขืจืขืกืืจื ืืื ืืื ืืขืกืืขืจ ืฆื ืคืึทืจืฉืคึผืจืืืื ืืืืขืจ ืืื ืืืื ืขืืขืงืืจืึธื ืืฉ ืืืืืืึธืืขืง. ืืื ืื ืกืืฃ, ืืื ืืขืงืืืขื ืฆื ืืขื ืึธืคึผืฆืืข ืืื ืึธืืึทืืึทืืืง ืืขืืฉืื ืคืื ืื ื ืืืขืจ ืคืื ืืืขืืขืจ ืืื ืื ืืขืจืข ืืืืื. ืืื ืคืจืขืื ืึทืืข ืืื ืืขืจืขืกืืจื ืคื ืื ืืื ืืขืจ ืงืึทืฅ.
ืืืื 1. ืืจืึธืคึผืืึธืงืก
ืื ืืืื ืืืืขืจ ืืขื ืขื ืืืืฃ ืืจืึธืคึผืืึธืงืก. ืขืก ืืขื ืขื 4 ืงืึทืืขืืึธืจืืขืก ืืื ืืืึธืก ืืื ืฆืขืืืืื ืึทืืฅ: ืืขืจื ืืื, ืจืขืคึฟืขืจืขื ืฅ, ืืขืืขืืจืืกืืืง, ื ืึธื-ืคืืงืฉืึทื. ืึธืืขืจ ืืื ืืึธื ื ืื ืืืืื ืจืขืคึฟืขืจืขื ืฅ ืืืืขืจ ืฆื ืื ืืืฉ.
ืจืืึฟ ืคืื ืื ืืืืขืจ ืืขื ืขื .ืขืคึผืื, ืื ืื ืืื ืืขื ืขื .pdf. ืึทื ืืื, ืื ืืขืฆื ืืืืืื ื ืืืื ืขืคืขืก ืืขืงื ืืืืืข ืึธืคึผืฆืืขืก.
ืืืึทื ืคึผืึทืืก ืฆื ืืืืขืจ ืืขื ืขื ืขืคึผืขืก ืืื ืืึธืก:
/ะะฝะธะณะธ/ะะตั
ัะดะพะถะตััะฒะตะฝะฝะพะต/ะะพะฒะพะต/ะะธะทะฐะนะฝ/ะฎัะธะน ะะพัะดะพะฝ/ะะฝะธะณะฐ ะฟัะพ ะฑัะบะฒั ะพั ะ ะดะพ ะฏ.epub
ืืืื ืืขืจ ืืื ืืื ืืขืืขืืจืืกืืืง, ืื ืงืึทืืขืืึธืจืืข (ืืึธืก ืืื, "ืืืืืื" ืืื ืืขื ืคืึทื ืืืืื) ืืื ืึทืืืขืงืืขื ืืืขื.
ืืื ืืึทืฉืืึธืกื ื ืืฉื ืฆื ืึทืจื ืืื ืื ืืจืึธืคึผืืึธืงืก ืึทืคึผื, ืืืืึทื ืืื ืืึธืื ืืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ืืืึธืก ืกืื ืืงืจืึทื ืืื ืื ืืขืงืข. ืืึธืก ืืืืกื, ืืขืจ ืคึผืืึทื ืืื ืืึธืก: ืืืจ ื ืขืืขื ืืืืขืจ ืคืื ืืขืจ ืืขืงืข, ืืืืคื ืืขืืขืจ ืืื ืืืจื ืึท ืืืึธืจื ืืึธืืืึทื ืง ืืื ืืืืื ืขืก ืฆื Notion.
ืืืื 2. ืืืื ืึท ืฉืืจื
ืืขืจ ืืืฉ ืืื ืืึธื ืงืืงื ืขืคึผืขืก ืืื ืืึธืก. ืืืืื ื: ืขืก ืืื ืืขืกืขืจ ืฆื ืืึทืื ืืืึทื ื ืขืืขื ืืื ืืึทืืืึทื.
ืืืจ ืืืขืื ื ืืฆื ืื ืึทื ืึทืคืืฉืึทื ื ืึธืืืึธื ืึทืคึผื, ืืืืึทื ืืขืจ ืืึทืึทืืืขืจ ืืื ื ืึธื ื ืืฉื ืืืืขืจืืขืืขืื.
ืืืื ืฆื ื ืึธืืืึธื, ืืจืืงื ืงืืจื + ืฉืืคื + ืืืฉ, ืืืื ืฆื ืึทืคึผืคึผืืืงืึทืืืึธื -> ืงืืืืขื, ืงืึธืคึผืืข token_v2 ืืื ืจืืคื ืขืก TOKEN. ืืขืจื ืึธื ืืืจ ืืืื ืฆื ืื ืืืึทื ืืืึธืก ืืืจ ืืึทืจืคึฟื ืืื ืื ืืืืืืึธืืขืง ืฆืืืื ืืื ื ืึธืืืึทืื ืื ืืื ืง. ืืืจ ืจืืคื ืขืก 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. ืืืื ืึทืืฅ ืืื ืงืืึธืจ ืืื ืื ืขืคึผืื - ืื ืืืขืจืืขืจ ืืขื ืขื ืืืกืืึธืืข ืืึธืจื, ืืขืืึธืื ืึทืืฅ ืืื ื ืืฉื ืึทืืื ืงืืึธืจ ืืืขืื ืื ืคึผืืฃ: ืขืก ืงืขื ืคืฉืื ืฆืื ืืืคืฉืืขืื ืืื ืคืื ืืืื ืืืืืขืจ.
ืึทืืื ืืื ืืืขืจ ืคืื ืงืฆืืข ืคึฟืึทืจ ืงืึทืื ืืื ื ืืืขืจืืขืจ ืืื PDF ืืืขื ืงืืงื ืืื ืืึธืก: ืืืจ ื ืขืืขื ืื ื ืืืขืจ ืคืื ืืืขืืขืจ ืืื ืืขืจื ืืื ืึท ืืืืขืจ ืงืขืกืืืืขืจืืืง (ืื ืืืจืืฉื ืืืืขื ื ืืืขืจ ืคืื ืืืขืจืืขืจ ืคึผืขืจ ืืืึทื).
ืืึธ ืขืก ืืื:
def get_words_count(pages_number):
return pages_number * WORDS_PER_PAGE
ืืขืจ WORDS_PER_PAGE ืคึฟืึทืจ ืึทื A4 ืืืึทื ืืื ืืขืขืจืขื 300.
ืืขืฆื ืืืืืจ ืฉืจืืืื ื ืคืื ืงืฆืืข ืฆื ืฆืืืื ืืืขืืขืจ. ืืืจ ืืืขืื ื ืืฆื
def get_pdf_pages_number(path, filename):
pdf = PdfFileReader(open(os.path.join(path, filename), 'rb'))
return pdf.getNumPages()
ืืืืึทืืขืจ, ืืืจ ืืืขืื ืฉืจืืึทืื ืึท ืืึทื ืคึฟืึทืจ ืงืึทืื ืืื ื ืืืขืืขืจ ืืื ืขืคึผืื. ืืืจ ื ืืฆื
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