File size: 2,143 Bytes
ae020c7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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!")

# List of required files
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"
]

# Get the user's home directory
home_dir = str(Path.home())
models_folder = os.path.join(home_dir, "booknlp_models")

# Check if the folder exists, if not create it
if not os.path.exists(models_folder):
    os.makedirs(models_folder)

# Check for missing files
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.")