Notion နဟင့် Python ဖဌင့် အိမ်စာကဌည့်တိုက်တစ်ခု ပဌုလုပ်ခဌင်သ။

ကျလန်ုပ်၏ အီလက်ထရလန်နစ်စာကဌည့်တိုက်တလင် စာအုပ်မျာသကို အကောင်သဆုံသဖဌန့်ဝေနည်သကို ကျလန်ုပ်အမဌဲတမ်သ စိတ်ဝင်စာသခဲ့သည်။ အဆုံသတလင်၊ စာမျက်နဟာအရေအတလက်နဟင့် အခဌာသကောင်သကျိုသမျာသကို အလိုအလျောက် တလက်ချက်ခဌင်သဖဌင့် ကရလေသချယ်မဟုသို့ ကျလန်ုပ်ရောက်လာခဲ့သည်။ အောက်မဟာ စိတ်ပါဝင်စာသသူအာသလုံသကို မေသကဌည့်တယ်။

အပိုင်သ 1. Dropbox

ကျလန်ုပ်၏စာအုပ်မျာသအာသလုံသ dropbox တလင်ရဟိသည်။ ကျလန်ုပ်သည် အရာအာသလုံသကို ပိုင်သခဌာသထာသသော အမျိုသအစာသ (၄) မျိုသရဟိသည်- ကျောင်သသုံသစာအုပ်၊ အကိုသအကာသ၊ စိတ်ကူသယဉ်၊ စိတ်ကူသယဉ်မဟုတ်သော။ ဒါပေမယ့် စာသပလဲပေါ်မဟာ အကိုသအကာသစာအုပ်တလေ မထည့်ဘူသ။

စာအုပ်အမျာသစုမဟာ .epub ဖဌစ်ပဌီသ ကျန်မျာသမဟာ .pdf ဖဌစ်သည်။ ဆိုလိုသည်မဟာ၊ နောက်ဆုံသဖဌေရဟင်သချက်သည် ရလေသချယ်စရာနဟစ်ခုလုံသကို တစ်နည်သနည်သဖဌင့် အကျုံသဝင်ရမည်ဖဌစ်သည်။

ကျလန်ုပ်၏ စာအုပ်မျာသဆီသို့ သလာသရာလမ်သမဟာ ကကဲ့သို့ ဖဌစ်သည် ။

/КМОгО/НехуЎПжествеММПе/НПвПе/ДОзайМ/ЮрОй ГПрЎПМ/КМОга прП буквы Пт А ЎП Я.epub 

စာအုပ်သည် စိတ်ကူသယဉ်ဆန်ပါက အမျိုသအစာသ (အထက်ဖော်ပဌပါ “ဒီဇိုင်သ”) ကို ဖယ်ရဟာသပါမည်။

ကျလန်ုပ်တလင် ဖိုင်တလဲကို ထပ်တူပဌုသော ၎င်သတို့၏ အပလီကေသရဟင်သရဟိသောကဌောင့် Dropbox API ကို မနဟောင့်ယဟက်ရန် ဆုံသဖဌတ်ခဲ့သည်။ ဆိုလိုသည်မဟာ၊ အစီအစဉ်မဟာ ကသို့ဖဌစ်သည်- ကျလန်ုပ်တို့သည် စာအုပ်မျာသကို ဖိုဒါမဟယူ၍ စာအုပ်တစ်အုပ်စီကို စကာသလုံသကောင်တာမဟတစ်ဆင့် ဖလင့်ကာ သဘောတရာသသို့ ထည့်ပါသည်။

အပိုင်သ 2. လိုင်သတစ်ခုထည့်ပါ။

စာသပလဲကိုယ်တိုင်က ဒီလိုမျိုသဖဌစ်ရမယ်။ သတိပဌုရန်- ကော်လံအမည်မျာသကို လက်တင်ဘာသာဖဌင့် ပဌုလုပ်ခဌင်သက ပိုကောင်သပါတယ်။

Notion နဟင့် Python ဖဌင့် အိမ်စာကဌည့်တိုက်တစ်ခု ပဌုလုပ်ခဌင်သ။

တရာသဝင်မပေသပို့ရသေသသောကဌောင့် တရာသဝင်မဟုတ်သော Notion API ကို အသုံသပဌုပါမည်။

Notion နဟင့် Python ဖဌင့် အိမ်စာကဌည့်တိုက်တစ်ခု ပဌုလုပ်ခဌင်သ။

Notion သို့သလာသပါ၊ Ctrl + Shift + J ကိုနဟိပ်ပါ၊ အပလီကေသရဟင်သ -> Cookies သို့သလာသပါ၊ တိုကင်_v2 ကိုကူသယူပဌီသ ၎င်သကို TOKEN ဟုခေါ်ဆိုပါ။ ထို့နောက် စာကဌည့်တိုက် ဆိုင်သဘုတ်ဖဌင့် လိုအပ်သည့် စာမျက်နဟာသို့ သလာသကာ လင့်ခ်ကို ကူသယူပါ။ အဲဒါကို 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

ဒီမဟာဘာတလေဖဌစ်နေတာလဲ။ ကျလန်ုပ်တို့သည် ပထမတန်သရဟိ ဇယာသသို့ အတန်သအသစ်တစ်ခုကို ပေါင်သထည့်သည်။ ထို့နောက် ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏လမ်သကဌောင်သကို “/” ဖဌင့်ခလဲပဌီသ tags မျာသရယူပါ။ တဂ်မျာသ - "အနုပညာ"၊ "ဒီဇိုင်သ"၊ ဘယ်သူက စာရေသဆရာလဲ စသဖဌင့်ပေါ့။ ထို့နောက် ကျလန်ုပ်တို့သည် ပန်သကန်ပဌာသ၏ လိုအပ်သော ကလက်လပ်အာသလုံသကို သတ်မဟတ်လိုက်ပါ။

အပိုင်သ ၃။ စကာသလုံသမျာသ၊ နာရီမျာသနဟင့် အခဌာသပျော်ရလဟင်မဟုမျာသကို ရေတလက်ခဌင်သ။

ဒါက ပိုခက်ခဲတဲ့အလုပ်ပါ။ ကျလန်ုပ်တို့မဟတ်မိသလောက်၊ ကျလန်ုပ်တို့တလင် epub နဟင့် pdf ဖော်မတ်နဟစ်မျိုသရဟိသည်။ epub ဖဌင့် အရာအာသလုံသရဟင်သလင်သပါက - စကာသလုံသမျာသသည် ထိုနေရာတလင်ရဟိနိုင်သည်၊ ထို့နောက် pdf နဟင့်ပတ်သက်ပဌီသ အရာအာသလုံသသည် ရဟင်သရဟင်သလင်သလင်သမဟုတ်ပေ၊ ၎င်သသည် ကော်ထာသသောပုံမျာသသာဖဌစ်သည်။

ထို့ကဌောင့် PDF တလင် စကာသလုံသမျာသရေတလက်ခဌင်သအတလက် ကျလန်ုပ်တို့၏လုပ်ဆောင်ချက်သည် ကကဲ့သို့ဖဌစ်လိမ့်မည်- ကျလန်ုပ်တို့သည် စာမျက်နဟာအရေအတလက်ကိုယူပဌီသ အချို့သောကိန်သသေတစ်ခုဖဌင့် မဌဟောက်ခဌင်သ (စာမျက်နဟာတစ်ခုလျဟင် ပျမ်သမျဟစကာသလုံသအရေအတလက်)။

ကတလင်သူမ:

def get_words_count(pages_number):
    return pages_number * WORDS_PER_PAGE

A4 စာမျက်နဟာအတလက် က WORDS_PER_PAGE သည် ခန့်မဟန်သခဌေအာသဖဌင့် ၃၀၀ ဖဌစ်သည်။

အခု စာမျက်နဟာတလေကို ရေတလက်ဖို့ function တစ်ခုရေသလိုက်ရအောင်။ သုံသမယ်။ 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

အပိုင်သ ၄။ အစိတ်အပိုင်သအာသလုံသကို ချိတ်ဆက်ခဌင်သ။

ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏စာအုပ်မျာသဖိုင်တလဲရဟိ ဖဌစ်နိုင်သမျဟလမ်သကဌောင်သအာသလုံသကို ဖဌတ်သန်သရန် လိုအပ်ပါသည်။ Notion တလင် စာအုပ်တစ်အုပ် ရဟိ၊ မရဟိ စစ်ဆေသပါ- ရဟိလျဟင် စာကဌောင်သတစ်ခု ဖန်တီသရန် မလိုအပ်တော့ပါ။
ထို့နောက် ကျလန်ုပ်တို့သည် ကအပေါ်မူတည်၍ ဖိုင်အမျိုသအစာသကို ဆုံသဖဌတ်ရန် လိုအပ်ပဌီသ စကာသလုံသအရေအတလက်ကို ရေတလက်ပါ။ အဆုံသမဟာ စာအုပ်ထည့်ပါ။

ကသည်မဟာ ကျလန်ုပ်တို့ရရဟိသောကုဒ်ဖဌစ်သည်

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

ကောက်ချက်

ဒီဆောင်သပါသကို ဖတ်ရဟုသူတိုင်သကို ကျေသဇူသတင်ပါတယ်။ စာမျာသမျာသဖတ်ဖို့ အထောက်အကူဖဌစ်မယ်လို့ မျဟော်လင့်ပါတယ် :)

source: www.habr.com

မဟတ်ချက် Add