|
import os |
|
import requests |
|
import zipfile |
|
from pathlib import Path |
|
from tqdm import tqdm |
|
|
|
def download_and_extract(): |
|
url = "https://huggingface.co/drewThomasson/Booknlp_models_Backup/resolve/main/booknlp_models.zip?download=true" |
|
file_name = "booknlp_models.zip" |
|
home_dir = str(Path.home()) |
|
zip_path = os.path.join(home_dir, file_name) |
|
models_folder = os.path.join(home_dir, "booknlp_models") |
|
|
|
print("Downloading the missing booknlp files...") |
|
response = requests.get(url, stream=True) |
|
total_size = int(response.headers.get('content-length', 0)) |
|
|
|
with open(zip_path, 'wb') as file, tqdm( |
|
desc=file_name, |
|
total=total_size, |
|
unit='iB', |
|
unit_scale=True, |
|
unit_divisor=1024, |
|
) as progress_bar: |
|
for data in response.iter_content(chunk_size=1024): |
|
size = file.write(data) |
|
progress_bar.update(size) |
|
|
|
print("Extracting required files...") |
|
with zipfile.ZipFile(zip_path, 'r') as zip_ref: |
|
for file in zip_ref.namelist(): |
|
if file.startswith('booknlp_models/') and file.split('/')[-1] in required_files: |
|
zip_ref.extract(file, home_dir) |
|
|
|
print("Deleting the zip file...") |
|
os.remove(zip_path) |
|
|
|
print("Process completed successfully!") |
|
|
|
|
|
required_files = [ |
|
"coref_google_bert_uncased_L-12_H-768_A-12-v1.0.model", |
|
"speaker_google_bert_uncased_L-12_H-768_A-12-v1.0.1.model", |
|
"entities_google_bert_uncased_L-6_H-768_A-12-v1.0.model" |
|
] |
|
|
|
|
|
home_dir = str(Path.home()) |
|
models_folder = os.path.join(home_dir, "booknlp_models") |
|
|
|
|
|
if not os.path.exists(models_folder): |
|
os.makedirs(models_folder) |
|
|
|
|
|
missing_files = [file for file in required_files if not os.path.exists(os.path.join(models_folder, file))] |
|
|
|
if missing_files: |
|
print(f"The following files are missing: {', '.join(missing_files)}") |
|
print("Downloading and extracting required files...") |
|
download_and_extract() |
|
else: |
|
print("All required booknlp files are present. No action needed.") |
|
|