Compare commits

...
24 Commits
Author SHA1 Message Date
xixu-me 1e8a927f9b Merge pull request #4 from xixu-me/dependabot/github_actions/actions/checkout-5
ci(deps): bump actions/checkout from 4 to 5
2025-08-18 13:14:46 +08:00
dependabot[bot] 3f07d81f85 ci(deps): bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-18 04:34:23 +00:00
xixu-me c1a2e04ba3 Merge pull request #3 from xixu-me/dependabot/github_actions/actions/download-artifact-5
ci(deps): bump actions/download-artifact from 4 to 5
2025-08-11 12:16:04 +08:00
dependabot[bot] fa11b36353 ci(deps): bump actions/download-artifact from 4 to 5
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-11 04:07:06 +00:00
xixu-me b35c13d09c Merge pull request #2 from xixu-me/dependabot/github_actions/softprops/action-gh-release-2
ci(deps): bump softprops/action-gh-release from 1 to 2
2025-06-30 03:09:17 +08:00
dependabot[bot] 54e7fdb695 ci(deps): bump softprops/action-gh-release from 1 to 2
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 1 to 2.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v1...v2)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: '2'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-29 19:08:36 +00:00
xixu-me e1e3c339c7 Create dependabot.yml 2025-06-30 03:08:00 +08:00
xixu-me cc9a12ebc8 Remove high failure rate detection in workflow
Eliminated the logic that stopped execution if favicon download failures exceeded 80% after 100 domains. The workflow will now continue processing all domains regardless of failure rate.
2025-06-10 18:09:46 +08:00
xixu-me 2939d28e64 Update favicon naming conventions
Updated the favicon naming conventions in both the workflow file and README to use the full domain name instead of the second-level domain. This ensures unique filenames and preserves complete domain information.
2025-06-10 16:00:40 +08:00
xixu-me 2e9639457d Simplify favicon filename generation in workflow
Removed the use of associative arrays and second-level domain logic for favicon filename generation. Filenames now use the full domain directly, simplifying the code and reducing complexity.
2025-06-10 15:54:18 +08:00
xixu-me b8f6b82874 Improve favicon download logic in workflow
Revised the favicon download logic to use temporary files and associative arrays for better handling of duplicate filenames and sequential numbering. Enhanced error handling and ensured proper file renaming after successful downloads.
2025-06-10 15:46:13 +08:00
xixu-me 063dfaa1aa Remove jsDelivr CDN cache purge step
The step to purge jsDelivr CDN cache for the assets branch has been removed from the GitHub Actions workflow. This change simplifies the workflow by eliminating unnecessary cache management.
2025-06-10 15:26:21 +08:00
xixu-me 0cbfb9f538 Add jsDelivr CDN link to README
Updated the README to include a jsDelivr CDN link for accessing favicons, providing better performance and global availability.
2025-06-10 11:19:11 +08:00
xixu-me f1cfff13b0 Refactor jsDelivr cache purge in workflow
Replaced the standalone 'purge-jsdelivr-cache' job with an inline step in the main workflow. The new implementation purges jsDelivr CDN cache for PNG files in the 'favicons' directory, improving progress tracking and simplifying the workflow structure.
2025-06-10 11:10:14 +08:00
xixu-me 7dcdce9a1c Remove Dependabot config and update workflow
Deleted the Dependabot configuration file as it is no longer needed. Updated the GitHub Actions workflow to simplify the installation step for the 'tzst' tool by adjusting the log message.
2025-06-10 10:51:59 +08:00
xixu-me 4aa7f66fea Add jsDelivr cache purge workflow
Introduced a new workflow step to purge the jsDelivr CDN cache after processing favicons and releases. Updated the GitHub Release action to use version v1 for better compatibility.
2025-06-10 10:47:20 +08:00
xixu-me 29d9af9975 Update GitHub Release action version
Bumped the version of softprops/action-gh-release from v2 to v2.3.0 in the GitHub Actions workflow to ensure compatibility and access to the latest features.
2025-06-10 10:42:19 +08:00
xixu-me f17483367e Update permissions in GitHub Actions workflow
Adjusted permissions for jobs in the workflow file to ensure appropriate access levels. Updated global and job-specific permissions for better security and functionality.
2025-06-10 10:34:46 +08:00
xixu-me f584eab3d3 Update domain count list in README
Removed the 'minimal' label for the 200 domain count and removed entries for 500,000 and 1,000,000 domain counts from the README.
2025-06-10 10:21:32 +08:00
xixu-me fbc2e08152 Merge branch 'main' of https://github.com/xixu-me/favicons 2025-06-10 10:19:00 +08:00
xixu-me df16f1f920 Merge pull request #1 from xixu-me/dependabot/github_actions/softprops/action-gh-release-2
Bump softprops/action-gh-release from 1 to 2
2025-06-09 23:37:47 +08:00
dependabot[bot] a052b220c2 Bump softprops/action-gh-release from 1 to 2
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 1 to 2.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v1...v2)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: '2'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 14:31:38 +00:00
xixu-me 3b60ac5b30 Update dependabot.yml 2025-06-09 22:02:22 +08:00
xixu-me 10bd59ca3d Create dependabot.yml 2025-06-09 22:00:11 +08:00
3 changed files with 91 additions and 59 deletions

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
version: 2
updates:
# Monitor GitHub Actions dependencies
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "02:00"
timezone: "UTC"
open-pull-requests-limit: 5
reviewers:
- "xixu-me"
assignees:
- "xixu-me"
commit-message:
prefix: "ci"
include: "scope"
labels:
- "dependencies"
- "github-actions"
# Monitor pip dependencies (for tzst package used in workflow)
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "02:30"
timezone: "UTC"
open-pull-requests-limit: 3
reviewers:
- "xixu-me"
assignees:
- "xixu-me"
commit-message:
prefix: "deps"
include: "scope"
labels:
- "dependencies"
- "python"
+36 -46
View File
@@ -13,18 +13,20 @@ on:
default: "200000"
type: string
# Add permissions for the workflow
permissions:
contents: write
actions: read
env:
# Default domain count (can be overridden by workflow input)
DOMAIN_COUNT: ${{ github.event.inputs.domain_count || '200000' }}
# Global permissions for the workflow
permissions:
contents: write
actions: write
jobs:
validate-input:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Validate domain count input
run: |
@@ -38,10 +40,13 @@ jobs:
fetch-domain-list:
runs-on: ubuntu-latest
needs: validate-input
permissions:
contents: read
actions: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Fetch top domains from Cloudflare Radar API
run: |
@@ -67,13 +72,16 @@ jobs:
process-favicons-and-release:
runs-on: ubuntu-latest
needs: fetch-domain-list
permissions:
contents: write
actions: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Download domain list artifact
uses: actions/download-artifact@v4
uses: actions/download-artifact@v5
with:
name: domain-list-artifact
path: .
@@ -95,9 +103,6 @@ jobs:
success_count=0
error_count=0
# Array to track used filenames for duplicate handling
declare -A filename_count
# Read domains file line by line
while IFS= read -r domain; do
counter=$((counter + 1))
@@ -112,62 +117,47 @@ jobs:
echo "Progress: $counter/$total_domains domains processed (Success: $success_count, Errors: $error_count)"
fi
# Extract second-level domain (remove top-level domain)
# For example: google.com -> google, github.io -> github
second_level_domain=$(echo "$domain" | sed 's/\.[^.]*$//')
# Handle duplicate filenames by adding sequential numbers
base_filename="$second_level_domain"
if [[ -n "${filename_count[$base_filename]}" ]]; then
# Increment count for this filename
filename_count[$base_filename]=$((filename_count[$base_filename] + 1))
final_filename="${base_filename}_${filename_count[$base_filename]}"
else
# First occurrence of this filename
filename_count[$base_filename]=0
final_filename="$base_filename"
fi
# Construct favicon URL
favicon_url="https://t1.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://${domain}&size=256"
favicon_file="favicons/${final_filename}.png"
# Temporarily use a temp file for download
temp_favicon_file="favicons/temp_favicon.png"
# Download favicon with enhanced error handling and timeout
if timeout 15 curl -L -s -o "$favicon_file" "$favicon_url" --max-time 10 --retry 3 --retry-delay 1; then
if timeout 15 curl -L -s -o "$temp_favicon_file" "$favicon_url" --max-time 10 --retry 3 --retry-delay 1; then
# Check if file was actually downloaded and has content
if [ -s "$favicon_file" ]; then
if [ -s "$temp_favicon_file" ]; then
# Calculate SHA-256 hash of the downloaded file
file_hash=$(sha256sum "$favicon_file" | cut -d' ' -f1)
file_hash=$(sha256sum "$temp_favicon_file" | cut -d' ' -f1)
# Check if the hash matches the failure hash
if [ "$file_hash" = "59bfe9bc385ad69f50793ce4a53397316d7a875a7148a63c16df9b674c6cda64" ]; then
# This is a failed download (generic/default favicon)
rm -f "$favicon_file"
rm -f "$temp_favicon_file"
error_count=$((error_count + 1))
echo "Warning: Generic favicon detected for domain: $domain (mapped to $final_filename) (SHA-256: $file_hash)"
echo "Warning: Generic favicon detected for domain: $domain (SHA-256: $file_hash)"
else
# Valid favicon downloaded - use domain as filename
favicon_file="favicons/${domain}.png"
mv "$temp_favicon_file" "$favicon_file"
# Valid favicon downloaded
success_count=$((success_count + 1))
echo "Success: Downloaded favicon for $domain -> $final_filename.png"
echo "Success: Downloaded favicon for $domain -> ${domain}.png"
fi
else
# Remove empty file
rm -f "$favicon_file"
rm -f "$temp_favicon_file"
error_count=$((error_count + 1))
echo "Warning: Empty file for domain: $domain (mapped to $final_filename)"
echo "Warning: Empty file for domain: $domain"
fi
else
# Remove any partial file
rm -f "$favicon_file"
rm -f "$temp_favicon_file"
error_count=$((error_count + 1))
echo "Error: Failed to download favicon for domain: $domain (mapped to $final_filename)"
echo "Error: Failed to download favicon for domain: $domain"
fi
# Add high failure rate detection (stop if >80% failures after 100 domains)
if [ $counter -gt 100 ] && [ $((error_count * 100 / counter)) -gt 80 ]; then
echo "Error: High failure rate detected (${error_count}/${counter}). Stopping execution."
exit 1
fi
done < domains
echo "Favicon download completed!"
@@ -201,9 +191,9 @@ jobs:
git push origin assets --force
fi
- name: Install tzst compression tool
- name: Install tzst
run: |
echo "Installing tzst compression tool..."
echo "Installing tzst..."
pip install tzst
tzst --version
@@ -231,7 +221,7 @@ jobs:
echo "Generated release tag: $TAG"
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.tag.outputs.tag }}
name: "Archive (Top ${{ env.DOMAIN_COUNT }}) - ${{ steps.tag.outputs.tag }}"
+14 -13
View File
@@ -14,10 +14,10 @@ This repository hosts a collection of favicon images for the world's most popula
### Access Individual Favicons
Individual favicons are stored in the `assets` branch and are named according to their second-level domain:
Individual favicons are stored in the `assets` branch and are named according to their domain name:
- `google.png` for google.com
- `github.png` for github.com
- `google.com.png` for google.com
- `github.com.png` for github.com
Access patterns:
@@ -25,6 +25,12 @@ Access patterns:
https://raw.githubusercontent.com/xixu-me/favicons/assets/DOMAIN_NAME.png
```
For better performance and global availability, you can access the favicons through jsDelivr CDN:
```
https://cdn.jsdelivr.net/gh/xixu-me/favicons@assets/DOMAIN_NAME.png
```
### Download Compressed Archives
Pre-built archives are available in the [Releases](https://github.com/xixu-me/favicons/releases) section:
@@ -46,7 +52,7 @@ tzst x archive.tzst
Archives are available with the following domain counts:
- 200 (minimal)
- 200
- 500
- 1,000
- 2,000
@@ -56,8 +62,6 @@ Archives are available with the following domain counts:
- 50,000
- 100,000
- 200,000
- 500,000
- 1,000,000 (complete set)
## Self-Build Instructions
@@ -110,15 +114,12 @@ You can modify the run.yml file to change:
### File Naming
Favicons are named based on the second-level domain:
Favicons are named using the domain name:
- `example.com` → `example.png`
- `subdomain.example.com` → `example.png`
- `example.com` → `example.com.png`
- `subdomain.example.com` → `subdomain.example.com.png`
When duplicate second-level domains exist, sequential numbers are added:
- First `github.io` domain → `github.png`
- Second `github.io` domain → `github_1.png`
This ensures unique filenames for all domains and preserves the complete domain information.
### Error Handling