Update main.py
Browse files
main.py
CHANGED
@@ -168,32 +168,44 @@ class CivitAICrawler:
|
|
168 |
|
169 |
return enc_folder_name
|
170 |
|
171 |
-
def process_model(self,
|
172 |
-
# γγ¦γ³γγΌγ + ζε·ε + γ’γγ
|
173 |
try:
|
174 |
-
|
175 |
-
|
176 |
-
|
|
|
177 |
return
|
178 |
|
179 |
-
versions =
|
180 |
-
|
181 |
-
|
182 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
183 |
os.makedirs(folder_name, exist_ok=True)
|
184 |
|
185 |
-
# γγ¦γ³γγΌγ (
|
186 |
-
|
187 |
-
# etc...
|
188 |
-
self.download_versions(versions, folder_name)
|
189 |
self.download_images(versions, folder_name)
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
|
195 |
except Exception as e:
|
196 |
-
logger.error(f"
|
197 |
|
198 |
def download_versions(self, model_versions: list, folder: str):
|
199 |
# γγΉγ¦ folder/ γ«γΎγ¨γγ or old_versions subfolder
|
|
|
168 |
|
169 |
return enc_folder_name
|
170 |
|
171 |
+
def process_model(self, model_url: str):
|
|
|
172 |
try:
|
173 |
+
model_id = model_url.rstrip("/").split("/")[-1]
|
174 |
+
model_info = self.get_model_info(model_id)
|
175 |
+
if not model_info or "modelVersions" not in model_info:
|
176 |
+
logger.error(f"No valid model info for ID {model_id}. Skipping.")
|
177 |
return
|
178 |
|
179 |
+
versions = model_info["modelVersions"]
|
180 |
+
if not versions:
|
181 |
+
logger.warning(f"No modelVersions found for ID {model_id}.")
|
182 |
+
return
|
183 |
+
|
184 |
+
# 1) εγ«γ’γγ«εγγ΅γγΏγ€γΊγγγγ£γ¬γ―γγͺγ«γΎγ¨γγ
|
185 |
+
folder_name = re.sub(r'[\\/*?:"<>|]', '_', model_info.get("name", "UnknownModel"))
|
186 |
+
|
187 |
+
# γγ©γ«γγζ’γ«γγγ°ει€γγζ°θ¦γ«δ½γη΄γ (δΈζΈγ)
|
188 |
+
if os.path.exists(folder_name):
|
189 |
+
shutil.rmtree(folder_name)
|
190 |
os.makedirs(folder_name, exist_ok=True)
|
191 |
|
192 |
+
# γγ¦γ³γγΌγ (ζζ°/old_versions), η»ε, HTML, model_info.json γͺγ©
|
193 |
+
self.download_and_process_versions(versions, folder_name)
|
|
|
|
|
194 |
self.download_images(versions, folder_name)
|
195 |
+
self.save_html_content(f"{self.config.URLS['modelPage']}{model_id}", folder_name)
|
196 |
+
self.save_model_info_json(model_info, folder_name)
|
197 |
+
|
198 |
+
# ζε·εγ’γγγγΌγ
|
199 |
+
enc_subfolder = self.encrypt_and_upload_folder(folder_name)
|
200 |
+
if enc_subfolder is None:
|
201 |
+
enc_subfolder = "[ENCRYPT_FAILED]"
|
202 |
+
|
203 |
+
hf_enc_url = f"https://huggingface.co/{self.repo_ids['current']}/tree/main/{enc_subfolder}"
|
204 |
+
with open(self.config.LIST_FILE, "a", encoding="utf-8") as f:
|
205 |
+
f.write(f"{model_info.get('name', 'UnnamedModel')} (ID:{model_id}): {hf_enc_url}\n")
|
206 |
|
207 |
except Exception as e:
|
208 |
+
logger.error(f"Error in process_model({model_url}): {e}")
|
209 |
|
210 |
def download_versions(self, model_versions: list, folder: str):
|
211 |
# γγΉγ¦ folder/ γ«γΎγ¨γγ or old_versions subfolder
|