เดเดจเตเดฑเต เดเดฒเดเตเดเตเดฐเตเดฃเดฟเดเต เดฒเตเดฌเตเดฐเดฑเดฟเดฏเดฟเตฝ เดเดเตเดเดจเต เดฎเดฟเดเดเตเด เดฐเตเดคเดฟเดฏเดฟเตฝ เดชเตเดธเตเดคเดเดเตเดเตพ เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดฏเดพเด เดเดจเตเดจเดคเดฟเตฝ เดเดจเดฟเดเตเดเต เดเดชเตเดชเตเดดเตเด เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดเต. เด เดตเดธเดพเดจเด, เดชเตเดเตเดเดณเตเดเตเดฏเตเด เดฎเดฑเตเดฑเต เดเตเดฃเดเตเดเดณเตเดเตเดฏเตเด เดเดฃเตเดฃเดคเตเดคเดฟเดจเตเดฑเต เดฏเดพเดจเตเดคเตเดฐเดฟเด เดเดฃเดเตเดเตเดเตเดเตเดเตฝ เดเดชเดฏเตเดเดฟเดเตเดเดพเดฃเต เดเดพเตป เด เดเดชเตเดทเดจเดฟเดฒเตเดเตเดเต เดตเดจเตเดจเดคเต. เดชเตเดเตเดเดฏเตเดเตเดเต เดเตเดดเดฟเดฒเตเดณเตเดณ เดเดฒเตเดฒเดพ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดเตเดเดพเดฐเตเดเตเด เดเดพเตป เดเตเดฆเดฟเดเตเดเตเดจเตเดจเต.
เดญเดพเดเด 1. เดกเตเดฐเตเดชเตเดชเตเดฌเตเดเตเดธเต
เดเดจเตเดฑเต เดเดฒเตเดฒเดพ เดชเตเดธเตเดคเดเดเตเดเดณเตเด เดกเตเดฐเตเดชเตเดชเตเดฌเตเดเตเดธเดฟเดฒเดพเดฃเต. เดเดพเตป เดเดฒเตเดฒเดพเด เดตเดฟเดญเดเดฟเดเตเด 4 เดตเดฟเดญเดพเดเดเตเดเดณเตเดฃเตเดเต: เดชเดพเด เดชเตเดธเตเดคเดเด, เดฑเดซเดฑเตปเดธเต, เดซเดฟเดเตเดทเตป, เดจเตเตบ-เดซเดฟเดเตเดทเตป. เดชเดเตเดทเต เดเดพเตป เดฑเดซเดฑเตปเดธเต เดชเตเดธเตเดคเดเดเตเดเตพ เดฎเตเดถเดฏเดฟเตฝ เดเตเตผเดเตเดเดพเดฑเดฟเดฒเตเดฒ.
เดฎเดฟเดเตเด เดชเตเดธเตเดคเดเดเตเดเดณเตเด .epub เดเดฃเต, เดฌเดพเดเตเดเดฟเดฏเตเดณเตเดณเดต .pdf เดเดฃเต. เด เดคเดพเดฏเดคเต, เด เดจเตเดคเดฟเดฎ เดชเดฐเดฟเดนเดพเดฐเด เดเดเตเดเดจเตเดฏเตเดเตเดเดฟเดฒเตเด เดฐเดฃเตเดเต เดเดชเตเดทเดจเตเดเดณเตเด เดเตพเดเตเดเตเดณเตเดณเดฃเด.
เดชเตเดธเตเดคเดเดเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดจเตเดฑเต เดตเดดเดฟเดเตพ เดเดคเตเดชเตเดฒเตเดฏเดพเดฃเต:
/ะะฝะธะณะธ/ะะตั
ัะดะพะถะตััะฒะตะฝะฝะพะต/ะะพะฒะพะต/ะะธะทะฐะนะฝ/ะฎัะธะน ะะพัะดะพะฝ/ะะฝะธะณะฐ ะฟัะพ ะฑัะบะฒั ะพั ะ ะดะพ ะฏ.epub
เดชเตเดธเตเดคเดเด เดซเดฟเดเตเดทเตป เดเดฃเตเดเตเดเดฟเตฝ, เดตเดฟเดญเดพเดเด (เด เดคเดพเดฏเดคเต, เดฎเตเดเดณเดฟเดฒเตเดณเตเดณ เดเตเดธเดฟเตฝ "เดกเดฟเดธเตเตป") เดจเตเดเตเดเด เดเตเดฏเตเดฏเตเด.
เดซเตเตพเดกเตผ เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เด เดตเดฐเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดณเตเดณเดคเดฟเดจเดพเตฝ, เดกเตเดฐเตเดชเตเดชเตเดฌเตเดเตเดธเต API-เดฏเต เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเดฟเดเตเดเตเดฃเตเดเดคเดฟเดฒเตเดฒเตเดจเตเดจเต เดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต. เด เดคเดพเดฏเดคเต, เดชเตเดฒเดพเตป เดเดคเดพเดฃเต: เดเดเตเดเตพ เดซเตเตพเดกเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดธเตโเดคเดเดเตเดเตพ เดเดเตเดเตเดเตเดจเตเดจเต, เดเดฐเต เดฌเตเดเตเดเตเด เดเดฐเต เดตเตเดกเต เดเตเดฃเตเดเดฑเดฟเดฒเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด, เด เดคเต เดจเตเดทเดจเดฟเตฝ เดเตเตผเดเตเดเตเด.
เดญเดพเดเด 2. เดเดฐเต เดตเดฐเดฟ เดเตเตผเดเตเดเตเด
เดฎเตเดถ เดคเดจเตเดจเต เดเดคเตเดชเตเดฒเตเดฏเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด. เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด: เดจเดฟเดฐเดฏเตเดเต เดชเตเดฐเตเดเตพ เดฒเดพเดฑเตเดฑเดฟเดจเดฟเตฝ เดเดฃเตเดเดพเดเตเดเตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต.
เดเดฆเตเดฏเตเดเดฟเดเดฎเดพเดฏเดคเต เดเดคเตเดตเดฐเต เดกเตเดฒเดฟเดตเตผ เดเตเดฏเตเดคเดฟเดเตเดเดฟเดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเตฝ เดเดเตเดเตพ เด เดจเตเดฆเตเดฏเตเดเดฟเด เดงเดพเดฐเดฃ API เดเดชเดฏเตเดเดฟเดเตเดเตเด.
เดจเตเดเตเดเดฟเดฒเตเดเตเดเต เดชเตเดเตเด, Ctrl + Shift + J เด เดฎเตผเดคเตเดคเตเด, Application -> Cookies เดเดจเตเดจเดคเดฟเดฒเตเดเตเดเต เดชเตเดเตเด, 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
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