A fork of the site-icons crate that's Sync (failed experiment)
This repository has been archived on 2025-01-30. You can view files and clone it, but cannot push or open issues or pull requests.
Find a file
2022-04-01 02:16:56 +01:00
src update clap 2022-04-01 02:16:56 +01:00
.gitignore initial commit 2021-01-29 12:23:15 +00:00
.rustfmt.toml initial commit 2021-01-29 12:23:15 +00:00
Cargo.lock update clap 2022-04-01 02:16:56 +01:00
Cargo.toml update clap 2022-04-01 02:16:56 +01:00
Makefile.toml fix 2021-01-30 19:12:13 +00:00
README.md fixes 2021-02-02 15:57:40 +00:00

site_icons

Crates.io Documentation GitHub Sponsors

An efficient website icon scraper for rust or command line usage.

Features

  • Super fast!
  • Partially downloads images to find the sizes
  • Can extract a site logo <img> using a weighing system
  • Works with inline-data URIs (and automatically converts <svg> to them)
  • Supports WASM (and cloudflare workers)

Command line usage

cargo install site_icons

site-icons https://github.com
# https://github.githubassets.com/favicons/favicon.svg site_favicon svg
# https://github.githubassets.com/app-icon-512.png app_icon png 512x512
# https://github.githubassets.com/app-icon-192.png app_icon png 192x192
# https://github.githubassets.com/apple-touch-icon-180x180.png app_icon png 180x180

Rust usage

use site_icons::Icons;

let icons = Icons::new();
// scrape the icons from a url
icons.load_website("https://github.com").await?;

// fetch all icons, ensuring they exist & determining size
let entries = icons.entries().await;

// entries are sorted from highest to lowest resolution
for icon in entries {
  println("{:?}", icon)
}

Sources

  • HTML favicon tag (or looking for default /favicon.ico)
  • Web app manifest icons field
  • <img> tags on the page, directly inside the header OR with a src|alt|class containing the text "logo"

Running locally

Install cargo make and then:

cargo make run https://github.com