เจฎเฉเจ เจนเจฎเฉเจธเจผเจพเจ เจเจธ เจเฉฑเจฒ เจตเจฟเฉฑเจ เจฆเจฟเจฒเจเจธเจชเฉ เจฐเฉฑเจเจฆเจพ เจนเจพเจ เจเจฟ เจฎเฉเจฐเฉ เจเจฒเฉเจเจเฉเจฐเจพเจจเจฟเจ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจตเจฟเฉฑเจ เจเจฟเจคเจพเจฌเจพเจ เจจเฉเฉฐ เจธเจญ เจคเฉเจ เจตเจงเฉเจ เจเจฟเจตเฉเจ เจตเฉฐเจกเจฃเจพ เจนเฉเฅค เจ เฉฐเจค เจตเจฟเฉฑเจ, เจฎเฉเจ เจชเฉฐเจจเจฟเจเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจ เจคเฉ เจนเฉเจฐ เจเฉเจเจผเจพเจ เจฆเฉ เจเจเฉเจฎเฉเจเจฟเจ เจเจฃเจจเจพ เจฆเฉ เจจเจพเจฒ เจเจธ เจตเจฟเจเจฒเจช เจคเฉ เจเจเจ เจนเจพเจ. เจฎเฉเจ เจฌเจฟเฉฑเจฒเฉ เจฆเฉ เจ เจงเฉเจจ เจธเจพเจฐเฉ เจฆเจฟเจฒเจเจธเจชเฉ เจฐเฉฑเจเจฃ เจตเจพเจฒเฉ เจตเจฟเจ เจเจคเฉเจเจ เจจเฉเฉฐ เจชเฉเฉฑเจเจฆเจพ เจนเจพเจ.
เจญเจพเจ 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 เจนเฉเฅค
เจนเฉเจฃ เจชเฉเจเจพเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจซเฉฐเจเจธเจผเจจ เจฒเจฟเจเจฆเฉ เจนเจพเจเฅค เจ
เจธเฉเจ เจตเจฐเจคเจพเจเจเฉ
def get_pdf_pages_number(path, filename):
pdf = PdfFileReader(open(os.path.join(path, filename), 'rb'))
return pdf.getNumPages()
เจ
เฉฑเจเฉ, เจ
เจธเฉเจ Epub เจตเจฟเฉฑเจ เจชเฉฐเจจเจฟเจเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจเฉเจเจผ เจฒเจฟเจเจพเจเจเฉเฅค เจ
เจธเฉเจ เจตเจฐเจคเจฆเฉ เจนเจพเจ
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