Skip to main content

Favicon generator for Python 3 with strongly typed sync & async APIs, CLI, & HTML generation.

Project description

Favicons

Favicon generator for Python 3 with strongly typed sync & async APIs, CLI, & HTML generation.


Installation

pip3 install favicons

Documentation

More docs are coming. Remember, this is a work in progress.

Supported Formats

  • SVG
  • PNG
  • JPEG
  • TIFF

CLI

$ favicons --help

Usage: favicons [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  generate  Generate Favicons
  html      Get favicons as HTML.
  json      Get favicons as JSON.
  names     Get favicon file names.

generate

Generate Favicons from the command line:

Usage: favicons generate [OPTIONS]

  Generate Favicons

Options:
  --source PATH                    Source Image  [required]
  --output-directory PATH          Output Directory  [required]
  --background-color TEXT          Background Color  [default: #000000]
  --transparent / --no-transparent Transparent Background  [default: True]
  --base-url TEXT                  Base URL for HTML output  [default: /]
  --help                           Show this message and exit.

html

Generate HTML elements (same options as generate).

json

Generate JSON array of favicon objects (same options as generate).

names

Generate list of favicon file names (same options as generate).

Python Sync API

from favicons import Favicons

YOUR_ICON = "/home/user/icon.jpg"
WEB_SERVER_ROOT = "/var/www/html"

with Favicons(YOUR_ICON, WEB_SERVER_ROOT) as favicons:
    favicons.generate()
    for icon in favicons.filenames():
        print(icon)

# favicon.ico
# favicon-16x16.png
# favicon-32x32.png
# favicon-64x64.png
# favicon-96x96.png
# favicon-180x180.png
# apple-touch-icon-57x57.png
# apple-touch-icon-60x60.png
# apple-touch-icon-72x72.png
# apple-touch-icon-76x76.png
# apple-touch-icon-114x114.png
# apple-touch-icon-120x120.png
# apple-touch-icon-144x144.png
# apple-touch-icon-152x152.png
# apple-touch-icon-167x167.png
# apple-touch-icon-180x180.png
# mstile-70x70.png
# mstile-270x270.png
# mstile-310x310.png
# mstile-310x150.png
# favicon-196x196.png

Python Async API

from favicons import Favicons

YOUR_ICON = "/home/user/icon.jpg"
WEB_SERVER_ROOT = "/var/www/html"

async with Favicons(YOUR_ICON, WEB_SERVER_ROOT) as favicons:
    await favicons.generate()
    for icon in favicons.filenames():
        print(icon)

# favicon.ico
# favicon-16x16.png
# favicon-32x32.png
# favicon-64x64.png
# favicon-96x96.png
# favicon-180x180.png
# apple-touch-icon-57x57.png
# apple-touch-icon-60x60.png
# apple-touch-icon-72x72.png
# apple-touch-icon-76x76.png
# apple-touch-icon-114x114.png
# apple-touch-icon-120x120.png
# apple-touch-icon-144x144.png
# apple-touch-icon-152x152.png
# apple-touch-icon-167x167.png
# apple-touch-icon-180x180.png
# mstile-70x70.png
# mstile-270x270.png
# mstile-310x310.png
# mstile-310x150.png
# favicon-196x196.png

HTML

Get HTML elements for each generated favicon:

from favicons import Favicons

YOUR_ICON = "/home/user/icon.jpg"
WEB_SERVER_ROOT = "/var/www/html"

async with Favicons(YOUR_ICON, WEB_SERVER_ROOT) as favicons:
    await favicons.generate()
    # As generator
    html = favicons.html_gen()
    # As tuple
    html = favicons.html()

print(html)
# (
#   '<link rel="None" type="image/ico" href="/favicon.ico" />',
#   '<link rel="icon" type="image/png" href="/favicon-16x16.png" />',
#   '<link rel="icon" type="image/png" href="/favicon-32x32.png" />',
#   '<link rel="icon" type="image/png" href="/favicon-64x64.png" />',
#   '<link rel="icon" type="image/png" href="/favicon-96x96.png" />',
#   '<link rel="icon" type="image/png" href="/favicon-180x180.png" />',
#   '<link rel="apple-touch-icon" type="image/png" '
#   'href="/apple-touch-icon-57x57.png" />',
#   '<link rel="apple-touch-icon" type="image/png" '
#   'href="/apple-touch-icon-60x60.png" />',
#   '<link rel="apple-touch-icon" type="image/png" '
#   'href="/apple-touch-icon-72x72.png" />',
#   '<link rel="apple-touch-icon" type="image/png" '
#   'href="/apple-touch-icon-76x76.png" />',
#   '<link rel="apple-touch-icon" type="image/png" '
#   'href="/apple-touch-icon-114x114.png" />',
#   '<link rel="apple-touch-icon" type="image/png" '
#   'href="/apple-touch-icon-120x120.png" />',
#   '<link rel="apple-touch-icon" type="image/png" '
#   'href="/apple-touch-icon-144x144.png" />',
#   '<link rel="apple-touch-icon" type="image/png" '
#   'href="/apple-touch-icon-152x152.png" />',
#   '<link rel="apple-touch-icon" type="image/png" '
#   'href="/apple-touch-icon-167x167.png" />',
#   '<link rel="apple-touch-icon" type="image/png" '
#   'href="/apple-touch-icon-180x180.png" />',
#   '<link rel="None" type="image/png" href="/mstile-70x70.png" />',
#   '<link rel="None" type="image/png" href="/mstile-270x270.png" />',
#   '<link rel="None" type="image/png" href="/mstile-310x310.png" />',
#   '<link rel="None" type="image/png" href="/mstile-310x150.png" />',
#   '<link rel="shortcut icon" type="image/png" href="/favicon-196x196.png" />'
# )

Tuple

Get a Python tuple containing each generated favicon's properties:

from favicons import Favicons

YOUR_ICON = "/home/user/icon.jpg"
WEB_SERVER_ROOT = "/var/www/html"

async with Favicons(YOUR_ICON, WEB_SERVER_ROOT) as favicons:
    await favicons.generate()
    as_tuple = favicons.formats()
    print(as_tuple)
# (
#   {
#     'dimensions': (64, 64),
#     'image_format': 'ico',
#     'prefix': 'favicon',
#     'rel': None
#   },
#   {
#     'dimensions': (16, 16),
#     'image_format': 'png',
#     'prefix': 'favicon',
#     'rel': 'icon'
#   },
#   {
#     'dimensions': (32, 32),
#     'image_format': 'png',
#     'prefix': 'favicon',
#     'rel': 'icon'
#   },
#   {
#     'dimensions': (64, 64),
#     'image_format': 'png',
#     'prefix': 'favicon',
#     'rel': 'icon'
#   },
#   {
#     'dimensions': (96, 96),
#     'image_format': 'png',
#     'prefix': 'favicon',
#     'rel': 'icon'
#   },
#   {
#     'dimensions': (180, 180),
#     'image_format': 'png',
#     'prefix': 'favicon',
#     'rel': 'icon'
#   },
#   {
#     'dimensions': (57, 57),
#     'image_format': 'png',
#     'prefix': 'apple-touch-icon',
#     'rel': 'apple-touch-icon'
#   },
#   {
#     'dimensions': (60, 60),
#     'image_format': 'png',
#     'prefix': 'apple-touch-icon',
#     'rel': 'apple-touch-icon'
#   },
#   {
#     'dimensions': (72, 72),
#     'image_format': 'png',
#     'prefix': 'apple-touch-icon',
#     'rel': 'apple-touch-icon'
#   },
#   {
#     'dimensions': (76, 76),
#     'image_format': 'png',
#     'prefix': 'apple-touch-icon',
#     'rel': 'apple-touch-icon'
#   },
#   {
#     'dimensions': (114, 114),
#     'image_format': 'png',
#     'prefix': 'apple-touch-icon',
#     'rel': 'apple-touch-icon'
#   },
#   {
#     'dimensions': (120, 120),
#     'image_format': 'png',
#     'prefix': 'apple-touch-icon',
#     'rel': 'apple-touch-icon'
#   },
#   {
#     'dimensions': (144, 144),
#     'image_format': 'png',
#     'prefix': 'apple-touch-icon',
#     'rel': 'apple-touch-icon'
#   },
#   {
#     'dimensions': (152, 152),
#     'image_format': 'png',
#     'prefix': 'apple-touch-icon',
#     'rel': 'apple-touch-icon'
#   },
#   {
#     'dimensions': (167, 167),
#     'image_format': 'png',
#     'prefix': 'apple-touch-icon',
#     'rel': 'apple-touch-icon'
#   },
#   {
#     'dimensions': (180, 180),
#     'image_format': 'png',
#     'prefix': 'apple-touch-icon',
#     'rel': 'apple-touch-icon'
#   },
#   {
#     'dimensions': (70, 70),
#     'image_format': 'png',
#     'prefix': 'mstile',
#     'rel': None
#   },
#   {
#     'dimensions': (270, 270),
#     'image_format': 'png',
#     'prefix': 'mstile',
#     'rel': None
#   },
#   {
#     'dimensions': (310, 310),
#     'image_format': 'png',
#     'prefix': 'mstile',
#     'rel': None
#   },
#   {
#     'dimensions': (310, 150),
#     'image_format': 'png',
#     'prefix': 'mstile',
#     'rel': None
#   },
#   {
#     'dimensions': (196, 196),
#     'image_format': 'png',
#     'prefix': 'favicon',
#     'rel': 'shortcut icon'
#   }
# )

JSON

Get a JSON array containing each generated favicon's properties:

from favicons import Favicons

YOUR_ICON = "/home/user/icon.jpg"
WEB_SERVER_ROOT = "/var/www/html"

async with Favicons(YOUR_ICON, WEB_SERVER_ROOT) as favicons:
    await favicons.generate()
    as_json = favicons.json(indent=2)
    print(as_json)

# [
#   {
#     "image_format": "ico",
#     "dimensions": [
#       64,
#       64
#     ],
#     "prefix": "favicon",
#     "rel": null
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       16,
#       16
#     ],
#     "prefix": "favicon",
#     "rel": "icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       32,
#       32
#     ],
#     "prefix": "favicon",
#     "rel": "icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       64,
#       64
#     ],
#     "prefix": "favicon",
#     "rel": "icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       96,
#       96
#     ],
#     "prefix": "favicon",
#     "rel": "icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       180,
#       180
#     ],
#     "prefix": "favicon",
#     "rel": "icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       57,
#       57
#     ],
#     "prefix": "apple-touch-icon",
#     "rel": "apple-touch-icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       60,
#       60
#     ],
#     "prefix": "apple-touch-icon",
#     "rel": "apple-touch-icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       72,
#       72
#     ],
#     "prefix": "apple-touch-icon",
#     "rel": "apple-touch-icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       76,
#       76
#     ],
#     "prefix": "apple-touch-icon",
#     "rel": "apple-touch-icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       114,
#       114
#     ],
#     "prefix": "apple-touch-icon",
#     "rel": "apple-touch-icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       120,
#       120
#     ],
#     "prefix": "apple-touch-icon",
#     "rel": "apple-touch-icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       144,
#       144
#     ],
#     "prefix": "apple-touch-icon",
#     "rel": "apple-touch-icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       152,
#       152
#     ],
#     "prefix": "apple-touch-icon",
#     "rel": "apple-touch-icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       167,
#       167
#     ],
#     "prefix": "apple-touch-icon",
#     "rel": "apple-touch-icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       180,
#       180
#     ],
#     "prefix": "apple-touch-icon",
#     "rel": "apple-touch-icon"
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       70,
#       70
#     ],
#     "prefix": "mstile",
#     "rel": null
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       270,
#       270
#     ],
#     "prefix": "mstile",
#     "rel": null
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       310,
#       310
#     ],
#     "prefix": "mstile",
#     "rel": null
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       310,
#       150
#     ],
#     "prefix": "mstile",
#     "rel": null
#   },
#   {
#     "image_format": "png",
#     "dimensions": [
#       196,
#       196
#     ],
#     "prefix": "favicon",
#     "rel": "shortcut icon"
#   }
# ]

License

Clear BSD License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

favicons-0.2.2.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

favicons-0.2.2-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file favicons-0.2.2.tar.gz.

File metadata

  • Download URL: favicons-0.2.2.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.2 Linux/6.2.0-1019-azure

File hashes

Hashes for favicons-0.2.2.tar.gz
Algorithm Hash digest
SHA256 57749e6b3145b485d9ea9b6239dc679fbc00d092a873545c018c03597abce1c9
MD5 7c3de2eb075a36a99a195a8401c2ac17
BLAKE2b-256 8b676f701e807ca31d76b63fd2ff90d6c1a0f2ead70b59dd031d34a47ae6a071

See more details on using hashes here.

File details

Details for the file favicons-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: favicons-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.2 Linux/6.2.0-1019-azure

File hashes

Hashes for favicons-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b94fb2312ed33afb65873d04a0354d70a45f99207e78fa59d68ba64c37e368d4
MD5 468b3fe135e8b651c1b528aa1811a1d8
BLAKE2b-256 071fb1e89aee2260f9dfd31a60b78ee048a098af05fed83a0d2161a17897e74c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page