በኤሌክትሮኒካዊ ቤተ መጻሕፍቴ ውስጥ መጽሐፍትን እንዴት ማሰራጨት እንደምችል ሁልጊዜም ፍላጎት ነበረኝ። በመጨረሻ ፣ የገጾቹን ብዛት እና ሌሎች ጥሩ ነገሮችን በራስ ሰር በማስላት ወደዚህ አማራጭ መጣሁ። ከድመት በታች ፍላጎት ያላቸውን ሰዎች ሁሉ እጠይቃለሁ።
ክፍል 1. Dropbox
ሁሉም መጽሐፎቼ በ dropbox ላይ ናቸው። ሁሉንም ነገር የከፈልኩባቸው 4 ምድቦች አሉ፡ የመማሪያ መጽሀፍ፡ ማጣቀሻ፡ ልብወለድ፡ ልቦለድ ያልሆነ። ነገር ግን የማጣቀሻ መጽሃፎችን ወደ ጠረጴዛው አልጨምርም.
አብዛኛዎቹ መጽሃፍቶች .epub, የተቀሩት .pdf ናቸው. ያም ማለት የመጨረሻው መፍትሄ በሆነ መንገድ ሁለቱንም አማራጮች መሸፈን አለበት.
ወደ መጽሐፍት የማሄድ መንገዶቼ እንደዚህ ያሉ ናቸው።
/Книги/Нехудожественное/Новое/Дизайн/Юрий Гордон/Книга про буквы от А до Я.epub
መጽሐፉ ልብ ወለድ ከሆነ ምድቡ (ይህም ከላይ ባለው ጉዳይ ላይ "ንድፍ") ይወገዳል.
ማህደሩን የሚያመሳስለው መተግበሪያቸው ስላለኝ በ Dropbox API ላለመቸገር ወሰንኩ። ማለትም እቅዱ ይህ ነው፡ መጽሃፎችን ከአቃፊው እንወስዳለን፣ እያንዳንዱን መጽሃፍ በቃላት ቆጣሪ እናካሂድ እና ወደ ኖሽን እንጨምረዋለን።
ክፍል 2. መስመር ያክሉ
ጠረጴዛው ራሱ እንደዚህ ያለ ነገር መምሰል አለበት. ትኩረት: በላቲን ውስጥ የአምድ ስሞችን መስራት የተሻለ ነው.
ይፋ ያልሆነውን የኖሽን ኤፒአይ እንጠቀማለን፣ ምክንያቱም ይፋ የሆነው ገና አልደረሰም።
ወደ ኖሽን ይሂዱ ፣ Ctrl + Shift + J ን ይጫኑ ፣ ወደ መተግበሪያ -> ኩኪዎች ይሂዱ ፣ 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. ሁሉም ነገር በ epub ግልጽ ከሆነ - ቃላቶቹ ምናልባት እዚያ አሉ, ከዚያ ስለ ፒዲኤፍ ሁሉም ነገር ግልጽ አይደለም: በቀላሉ የተጣበቁ ምስሎችን ሊያካትት ይችላል.
ስለዚህ በፒዲኤፍ ውስጥ ቃላትን የመቁጠር ተግባራችን ይህንን ይመስላል-የገጾቹን ብዛት እንወስዳለን እና በተወሰነ ቋሚ (በአንድ ገጽ አማካኝ የቃላት ብዛት) እናባዛለን።
እነሆ እሷ፡-
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()
በመቀጠል፣ በ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
መደምደሚያ
ይህን ጽሑፍ ላነበቡ ሁሉ አመሰግናለሁ። የበለጠ ለማንበብ እንደሚረዳዎት ተስፋ አደርጋለሁ :)
ምንጭ: hab.com