diff --git a/.github/workflows/generate-webpage.yml b/.github/workflows/generate-webpage.yml index a81b6a6..d3d00e5 100644 --- a/.github/workflows/generate-webpage.yml +++ b/.github/workflows/generate-webpage.yml @@ -14,140 +14,19 @@ permissions: jobs: build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Run Python Script - uses: jannekem/run-python-script-action@v1.3 + - uses: BSFishy/pip-action@v1 with: - script: | - import os - import shutil - from urllib import request as ulreq + packages: | + requests + huggingface_hub + - uses: actions/checkout@v3 + with: + repository: jcdan3/devops + token: ${{ secrets.GITHUB_TOKEN }} + path: ${{ env.DEVOPS_DIR }} - 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 models under the sd-concepts-library organization - api = HfApi() - models_list = [] - for model in api.list_models(author="sd-concepts-library"): - models_list.append(model.modelId.replace('sd-concepts-library/', '')) - models_list.sort() - print(models_list) - - 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 models_list: - print(f'{i}/{len(models_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() + - name: Generate Static Webpage + run: python ${{ env.DEVOPS_DIR }}/other/generate_tx_models_html.py + shell: sh