diff --git a/.github/workflows/generate-webpage.yml b/.github/workflows/generate-webpage.yml index 8996a4b..1c11c30 100644 --- a/.github/workflows/generate-webpage.yml +++ b/.github/workflows/generate-webpage.yml @@ -27,8 +27,8 @@ jobs: import shutil from urllib import request as ulreq - # import markdownify import requests + from huggingface_hub import HfApi from PIL import ImageFile @@ -53,13 +53,17 @@ jobs: # Get list of model directories - working_dir = os.getcwd() - root_dir_list = [] - for x in os.listdir(working_dir): - if os.path.isdir(x): - root_dir_list.append(x) + # working_dir = os.getcwd() + # root_dir_list = [] + # for x in os.listdir(working_dir): + # if os.path.isdir(x): + # root_dir_list.append(x) - html_struct = f""" + # Get list of models under the sd-concepts-library organization + api = HfApi() + root_dir_list = api.list_models(author="sd-concepts-library").sort() + + html_struct = """ Stable Diffusion Texual Inversion Models @@ -92,7 +96,6 @@ jobs:

Stable Diffusion Texual Inversion Models

-
Compiled {datetime.datetime.now().strftime('%B %d, %Y')}

Generated from huggingface.co/sd-concepts-library @@ -102,10 +105,6 @@ jobs: Downloaded models are straight from the HuggingFace repositories and are named learned_embeds.bin. Rename to model_name.pt

-

- The HuggingFace repository is changed regularly so this page might not be current. -

-

""" @@ -151,3 +150,8 @@ jobs: f = open('sd-concepts-library.html', 'w') f.write(html_struct) f.close() + + # markdown = markdownify.markdownify(html_struct, heading_style="ATX") + # f = open('sd-concepts-library.md', 'w') + # f.write(markdown) + # f.close() diff --git a/other/generate_tx_models_html.py b/other/generate_tx_models_html.py new file mode 100644 index 0000000..3fa4752 --- /dev/null +++ b/other/generate_tx_models_html.py @@ -0,0 +1,132 @@ +import os +import shutil +from urllib import request as ulreq + +import requests +from huggingface_hub import HfApi +from PIL import ImageFile + + +def getsizes(uri): + # https://stackoverflow.com/a/37709319 + # get file size *and* image size (None if not known) + file = ulreq.urlopen(uri) + size = file.headers.get("content-length") + if size: + size = int(size) + p = ImageFile.Parser() + while True: + data = file.read(1024) + if not data: + break + p.feed(data) + if p.image: + return size, p.image.size + break + file.close() + return (size, None) + + +# Get list of model directories +# working_dir = os.getcwd() +# root_dir_list = [] +# for x in os.listdir(working_dir): +# if os.path.isdir(x): +# root_dir_list.append(x) + +# Get list of models under the sd-concepts-library organization +api = HfApi() +root_dir_list = api.list_models(author="sd-concepts-library").sort() + +html_struct = """ + + + Stable Diffusion Texual Inversion Models + + + + + + +
+

Stable Diffusion Texual Inversion Models

+ +

+ Generated from huggingface.co/sd-concepts-library +

+ +

+ Downloaded models are straight from the HuggingFace repositories and are named learned_embeds.bin. Rename to model_name.pt +

+ + +

+""" + +# Move the model out +i = 1 +for model_name in root_dir_list: + print(f'{i}/{len(root_dir_list)} -> {model_name}') + # if os.path.exists(f'{model_name}/learned_embeds.bin'): # double check the file exists since sometimes it hasn't been uploaded yet + # shutil.move(f'{model_name}/learned_embeds.bin', f'{model_name}/{model_name}.pt') + # pass + # else: + # continue + + # Images can be in a few different formats, figure out which one it's in + img_type = None + img_width = None + for type in ['jpeg', 'png', 'jpg']: + r = requests.head(f'https://huggingface.co/sd-concepts-library/{model_name}/resolve/main/concept_images/0.{type}', allow_redirects=True) + if r.status_code == 200: + img_type = type + img_width = getsizes(f'https://huggingface.co/sd-concepts-library/{model_name}/resolve/main/concept_images/0.{type}')[1][0] + break + + html_struct = html_struct + f"""

{model_name}

+

Download {model_name}

+

View Repository

+
+
+ +
+
+ +
+
+ +
+
""" + i = i + 1 + +html_struct = html_struct + '
' + +f = open('sd-concepts-library.html', 'w') +f.write(html_struct) +f.close() + +# markdown = markdownify.markdownify(html_struct, heading_style="ATX") +# f = open('sd-concepts-library.md', 'w') +# f.write(markdown) +# f.close()