0.0.95
This commit is contained in:
parent
baf1fac3aa
commit
6d559e0bb2
@ -1,7 +1,7 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
# replace with your username:
|
# replace with your username:
|
||||||
name = guan
|
name = guan
|
||||||
version = 0.0.94
|
version = 0.0.95
|
||||||
author = guanjihuan
|
author = guanjihuan
|
||||||
author_email = guanjihuan@163.com
|
author_email = guanjihuan@163.com
|
||||||
description = An open source python package
|
description = An open source python package
|
||||||
|
@ -2,11 +2,12 @@
|
|||||||
|
|
||||||
# With this package, you can calculate band structures, density of states, quantum transport and topological invariant of tight-binding models by invoking the functions you need. Other frequently used functions are also integrated in this package, such as file reading/writing, figure plotting, data processing.
|
# With this package, you can calculate band structures, density of states, quantum transport and topological invariant of tight-binding models by invoking the functions you need. Other frequently used functions are also integrated in this package, such as file reading/writing, figure plotting, data processing.
|
||||||
|
|
||||||
# The current version is guan-0.0.94, updated on June 24, 2022.
|
# The current version is guan-0.0.95, updated on June 29, 2022.
|
||||||
|
|
||||||
# Installation: pip install --upgrade guan
|
# Installation: pip install --upgrade guan
|
||||||
|
|
||||||
# Modules:
|
# Modules:
|
||||||
|
|
||||||
# # Module 1: basic functions
|
# # Module 1: basic functions
|
||||||
# # Module 2: Fourier transform
|
# # Module 2: Fourier transform
|
||||||
# # Module 3: Hamiltonian of finite size systems
|
# # Module 3: Hamiltonian of finite size systems
|
||||||
@ -22,8 +23,6 @@
|
|||||||
# # Module 13: others
|
# # Module 13: others
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
API Reference
|
API Reference
|
||||||
|
|
||||||
@ -281,9 +280,8 @@ guan.write_one_dimensional_data(x_array, y_array, filename='a', format='txt')
|
|||||||
|
|
||||||
guan.write_two_dimensional_data(x_array, y_array, matrix, filename='a', format='txt')
|
guan.write_two_dimensional_data(x_array, y_array, matrix, filename='a', format='txt')
|
||||||
|
|
||||||
hex = guan.rgb_to_hex(rgb, pound=1)
|
guan.print_array(array, show_index=0, index_type=0)
|
||||||
|
|
||||||
rgb = guan.hex_to_rgb(hex)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -315,18 +313,24 @@ guan.change_directory_by_replacement(current_key_word='code', new_key_word='data
|
|||||||
|
|
||||||
guan.batch_reading_and_plotting(directory, xlabel='x', ylabel='y')
|
guan.batch_reading_and_plotting(directory, xlabel='x', ylabel='y')
|
||||||
|
|
||||||
|
hex = guan.rgb_to_hex(rgb, pound=1)
|
||||||
|
|
||||||
|
rgb = guan.hex_to_rgb(hex)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Module 13: others
|
# Module 13: others
|
||||||
|
|
||||||
guan.download_with_scihub(address=None, num=1)
|
guan.download_with_scihub(address=None, num=1)
|
||||||
|
|
||||||
|
links = guan.get_links_from_pdf(pdf_path, link_starting_form='')
|
||||||
|
|
||||||
|
content = guan.pdf_to_text(pdf_path)
|
||||||
|
|
||||||
guan.str_to_audio(str='hello world', rate=125, voice=1, read=1, save=0, print_text=0)
|
guan.str_to_audio(str='hello world', rate=125, voice=1, read=1, save=0, print_text=0)
|
||||||
|
|
||||||
guan.txt_to_audio(txt_path, rate=125, voice=1, read=1, save=0, print_text=0)
|
guan.txt_to_audio(txt_path, rate=125, voice=1, read=1, save=0, print_text=0)
|
||||||
|
|
||||||
content = guan.pdf_to_text(pdf_path)
|
|
||||||
|
|
||||||
guan.pdf_to_audio(pdf_path, rate=125, voice=1, read=1, save=0, print_text=0)
|
guan.pdf_to_audio(pdf_path, rate=125, voice=1, read=1, save=0, print_text=0)
|
||||||
|
|
||||||
guan.play_academic_words(reverse=0, random_on=0, bre_or_ame='ame', show_translation=1, show_link=1, translation_time=2, rest_time=1)
|
guan.play_academic_words(reverse=0, random_on=0, bre_or_ame='ame', show_translation=1, show_link=1, translation_time=2, rest_time=1)
|
||||||
@ -1968,7 +1972,21 @@ def write_two_dimensional_data(x_array, y_array, matrix, filename='a', format='t
|
|||||||
f.write('\n')
|
f.write('\n')
|
||||||
i0 += 1
|
i0 += 1
|
||||||
|
|
||||||
|
def print_array(array, show_index=0, index_type=0):
|
||||||
|
if show_index==0:
|
||||||
|
for i0 in array:
|
||||||
|
print(i0)
|
||||||
|
else:
|
||||||
|
if index_type==0:
|
||||||
|
index = 0
|
||||||
|
for i0 in array:
|
||||||
|
print(index, i0)
|
||||||
|
index += 1
|
||||||
|
else:
|
||||||
|
index = 0
|
||||||
|
for i0 in array:
|
||||||
|
index += 1
|
||||||
|
print(index, i0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -2279,6 +2297,62 @@ def download_with_scihub(address=None, num=1):
|
|||||||
if num != 1:
|
if num != 1:
|
||||||
print('All completed!\n')
|
print('All completed!\n')
|
||||||
|
|
||||||
|
# PDF
|
||||||
|
|
||||||
|
def get_links_from_pdf(pdf_path, link_starting_form=''):
|
||||||
|
# Example: link_starting_form='https://doi.org'
|
||||||
|
import PyPDF2
|
||||||
|
import re
|
||||||
|
pdfReader = PyPDF2.PdfFileReader(pdf_path)
|
||||||
|
pages = pdfReader.getNumPages()
|
||||||
|
i0 = 0
|
||||||
|
links = []
|
||||||
|
for page in range(pages):
|
||||||
|
pageSliced = pdfReader.getPage(page)
|
||||||
|
pageObject = pageSliced.getObject()
|
||||||
|
if '/Annots' in pageObject.keys():
|
||||||
|
ann = pageObject['/Annots']
|
||||||
|
old = ''
|
||||||
|
for a in ann:
|
||||||
|
u = a.getObject()
|
||||||
|
if '/A' in u.keys():
|
||||||
|
if re.search(re.compile('^'+link_starting_form), u['/A']['/URI']):
|
||||||
|
if u['/A']['/URI'] != old:
|
||||||
|
links.append(u['/A']['/URI'])
|
||||||
|
i0 += 1
|
||||||
|
old = u['/A']['/URI']
|
||||||
|
return links
|
||||||
|
|
||||||
|
def pdf_to_text(pdf_path):
|
||||||
|
from pdfminer.pdfparser import PDFParser, PDFDocument
|
||||||
|
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
|
||||||
|
from pdfminer.converter import PDFPageAggregator
|
||||||
|
from pdfminer.layout import LAParams, LTTextBox
|
||||||
|
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
|
||||||
|
import logging
|
||||||
|
logging.Logger.propagate = False
|
||||||
|
logging.getLogger().setLevel(logging.ERROR)
|
||||||
|
praser = PDFParser(open(pdf_path, 'rb'))
|
||||||
|
doc = PDFDocument()
|
||||||
|
praser.set_document(doc)
|
||||||
|
doc.set_parser(praser)
|
||||||
|
doc.initialize()
|
||||||
|
if not doc.is_extractable:
|
||||||
|
raise PDFTextExtractionNotAllowed
|
||||||
|
else:
|
||||||
|
rsrcmgr = PDFResourceManager()
|
||||||
|
laparams = LAParams()
|
||||||
|
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
|
||||||
|
interpreter = PDFPageInterpreter(rsrcmgr, device)
|
||||||
|
content = ''
|
||||||
|
for page in doc.get_pages():
|
||||||
|
interpreter.process_page(page)
|
||||||
|
layout = device.get_result()
|
||||||
|
for x in layout:
|
||||||
|
if isinstance(x, LTTextBox):
|
||||||
|
content = content + x.get_text().strip()
|
||||||
|
return content
|
||||||
|
|
||||||
## audio
|
## audio
|
||||||
|
|
||||||
def str_to_audio(str='hello world', rate=125, voice=1, read=1, save=0, print_text=0):
|
def str_to_audio(str='hello world', rate=125, voice=1, read=1, save=0, print_text=0):
|
||||||
@ -2317,36 +2391,6 @@ def txt_to_audio(txt_path, rate=125, voice=1, read=1, save=0, print_text=0):
|
|||||||
engine.say(text)
|
engine.say(text)
|
||||||
engine.runAndWait()
|
engine.runAndWait()
|
||||||
|
|
||||||
def pdf_to_text(pdf_path):
|
|
||||||
from pdfminer.pdfparser import PDFParser, PDFDocument
|
|
||||||
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
|
|
||||||
from pdfminer.converter import PDFPageAggregator
|
|
||||||
from pdfminer.layout import LAParams, LTTextBox
|
|
||||||
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
|
|
||||||
import logging
|
|
||||||
logging.Logger.propagate = False
|
|
||||||
logging.getLogger().setLevel(logging.ERROR)
|
|
||||||
praser = PDFParser(open(pdf_path, 'rb'))
|
|
||||||
doc = PDFDocument()
|
|
||||||
praser.set_document(doc)
|
|
||||||
doc.set_parser(praser)
|
|
||||||
doc.initialize()
|
|
||||||
if not doc.is_extractable:
|
|
||||||
raise PDFTextExtractionNotAllowed
|
|
||||||
else:
|
|
||||||
rsrcmgr = PDFResourceManager()
|
|
||||||
laparams = LAParams()
|
|
||||||
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
|
|
||||||
interpreter = PDFPageInterpreter(rsrcmgr, device)
|
|
||||||
content = ''
|
|
||||||
for page in doc.get_pages():
|
|
||||||
interpreter.process_page(page)
|
|
||||||
layout = device.get_result()
|
|
||||||
for x in layout:
|
|
||||||
if isinstance(x, LTTextBox):
|
|
||||||
content = content + x.get_text().strip()
|
|
||||||
return content
|
|
||||||
|
|
||||||
def pdf_to_audio(pdf_path, rate=125, voice=1, read=1, save=0, print_text=0):
|
def pdf_to_audio(pdf_path, rate=125, voice=1, read=1, save=0, print_text=0):
|
||||||
import pyttsx3
|
import pyttsx3
|
||||||
text = guan.pdf_to_text(pdf_path)
|
text = guan.pdf_to_text(pdf_path)
|
||||||
@ -2367,6 +2411,8 @@ def pdf_to_audio(pdf_path, rate=125, voice=1, read=1, save=0, print_text=0):
|
|||||||
engine.say(text)
|
engine.say(text)
|
||||||
engine.runAndWait()
|
engine.runAndWait()
|
||||||
|
|
||||||
|
## words
|
||||||
|
|
||||||
def play_academic_words(reverse=0, random_on=0, bre_or_ame='ame', show_translation=1, show_link=1, translation_time=2, rest_time=1):
|
def play_academic_words(reverse=0, random_on=0, bre_or_ame='ame', show_translation=1, show_link=1, translation_time=2, rest_time=1):
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
import re
|
import re
|
||||||
|
Loading…
x
Reference in New Issue
Block a user