Resolution Master Top Downloads Badge #721
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Resolution Master Top Downloads Badge | |
| on: | |
| schedule: | |
| - cron: "0 0,8,16 * * *" | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - name: gh login | |
| run: echo "${{ secrets.SECRET_TOKEN }}" | gh auth login --with-token | |
| - name: Query Resolution Master API 20 times and find top download | |
| run: | | |
| max_downloads=0 | |
| top_node_json="{}" | |
| for i in {1..3}; do | |
| echo "Pobieranie danych z próby $i..." | |
| curl -s https://api.comfy.org/nodes/Comfyui-Resolution-Master > tmp_$i.json | |
| if [ ! -s tmp_$i.json ] || ! jq empty tmp_$i.json 2>/dev/null; then | |
| echo "Błąd: Nieprawidłowy JSON dla próby $i" | |
| continue | |
| fi | |
| if jq -e 'type == "array"' tmp_$i.json >/dev/null; then | |
| # Przeszukanie wszystkich węzłów w tablicy | |
| node_count=$(jq 'length' tmp_$i.json) | |
| echo "Znaleziono $node_count węzłów w próbie $i" | |
| for j in $(seq 0 $((node_count - 1))); do | |
| downloads=$(jq -r ".[$j].downloads // 0" tmp_$i.json) | |
| name=$(jq -r ".[$j].name // \"\"" tmp_$i.json) | |
| if [ "$downloads" -gt "$max_downloads" ]; then | |
| max_downloads=$downloads | |
| top_node_json=$(jq ".[$j]" tmp_$i.json) | |
| echo "Nowe maksimum znalezione: $downloads (węzeł: $name)" | |
| fi | |
| done | |
| else | |
| downloads=$(jq -r '.downloads // 0' tmp_$i.json) | |
| name=$(jq -r '.name // ""' tmp_$i.json) | |
| if [ "$downloads" -gt "$max_downloads" ]; then | |
| max_downloads=$downloads | |
| top_node_json=$(cat tmp_$i.json) | |
| echo "Nowe maksimum znalezione: $downloads (węzeł: $name)" | |
| fi | |
| fi | |
| rm -f tmp_$i.json | |
| done | |
| if [ "$max_downloads" -gt 0 ]; then | |
| echo "$top_node_json" > top_resolutionmaster.json | |
| echo "Najwyższa liczba pobrań: $max_downloads" | |
| echo "Szczegóły węzła:" | |
| jq . top_resolutionmaster.json | |
| else | |
| echo "Błąd: Nie znaleziono żadnych prawidłowych danych" | |
| # Utworzenie domyślnego JSON-a | |
| echo '{"name": "No data", "downloads": 0}' > top_resolutionmaster.json | |
| fi | |
| - name: create or update gist with top download | |
| id: set_id | |
| run: | | |
| if gh secret list | grep -q "RESOLUTIONMASTER_GIST_ID" | |
| then | |
| echo "GIST_ID found" | |
| echo "GIST=${{ secrets.RESOLUTIONMASTER_GIST_ID }}" >> $GITHUB_OUTPUT | |
| # Sprawdzenie czy gist istnieje | |
| if gh gist view ${{ secrets.RESOLUTIONMASTER_GIST_ID }} &>/dev/null; then | |
| echo "Gist istnieje, będzie zaktualizowany" | |
| else | |
| echo "Gist nie istnieje, tworzenie nowego" | |
| gist_id=$(gh gist create top_resolutionmaster.json | awk -F / '{print $NF}') | |
| echo $gist_id | gh secret set RESOLUTIONMASTER_GIST_ID | |
| echo "GIST=$gist_id" >> $GITHUB_OUTPUT | |
| fi | |
| else | |
| echo "Tworzenie nowego gist" | |
| gist_id=$(gh gist create top_resolutionmaster.json | awk -F / '{print $NF}') | |
| echo $gist_id | gh secret set RESOLUTIONMASTER_GIST_ID | |
| echo "GIST=$gist_id" >> $GITHUB_OUTPUT | |
| fi | |
| - name: create badge if needed | |
| run: | | |
| COUNT=$(jq '.downloads' top_resolutionmaster.json) | |
| NAME=$(jq -r '.name' top_resolutionmaster.json) | |
| if [ ! -f RESOLUTIONMASTER.md ]; then | |
| shields="https://img.shields.io/badge/dynamic/json?color=informational&label=TopResolutionMaster&query=downloads&url=" | |
| url="https://gist.githubusercontent.com/${{ github.actor }}/${{ steps.set_id.outputs.GIST }}/raw/top_resolutionmaster.json" | |
| repo="https://comfy.org" | |
| echo ''> RESOLUTIONMASTER.md | |
| echo ' | |
| **Markdown** | |
| ```markdown' >> RESOLUTIONMASTER.md | |
| echo "[]($repo)" >> RESOLUTIONMASTER.md | |
| echo ' | |
| ``` | |
| **HTML** | |
| ```html' >> RESOLUTIONMASTER.md | |
| echo "<a href='$repo'><img alt='Top ResolutionMaster Node' src='$shields$url'></a>" >> RESOLUTIONMASTER.md | |
| echo '```' >> RESOLUTIONMASTER.md | |
| git add RESOLUTIONMASTER.md | |
| git config --global user.name "GitHub Action" | |
| git config --global user.email "action@github.com" | |
| git commit -m "Create ResolutionMaster badge" | |
| fi | |
| - name: Update Gist | |
| run: | | |
| # Upewnienie się, że JSON jest poprawny | |
| if jq empty top_resolutionmaster.json 2>/dev/null; then | |
| content=$(jq -c . top_resolutionmaster.json) | |
| echo "{\"description\": \"Top ResolutionMaster Node\", \"files\": {\"top_resolutionmaster.json\": {\"content\": $(jq -Rs . <<< "$content")}}}" > patch.json | |
| curl -s -X PATCH \ | |
| --user "${{ github.actor }}:${{ secrets.SECRET_TOKEN }}" \ | |
| -H "Content-Type: application/json" \ | |
| -d @patch.json https://api.github.com/gists/${{ steps.set_id.outputs.GIST }} | |
| else | |
| echo "Błąd: Nieprawidłowy JSON w top_resolutionmaster.json" | |
| exit 1 | |
| fi | |
| - name: Push | |
| uses: ad-m/github-push-action@master | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} |