Skip to main content

Favicon generator for Python

Project description

Favicons

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


PyPI PyPI - Downloads CI

GitHub Contributors


⚠️ This library is brand new, and is still in progress. I would strongly suggest not using it in production until this message disappears.

Changelog

Installation

pip3 install favicons

Documentation

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

CLI

Coming soon

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.0.2.tar.gz (11.0 kB view hashes)

Uploaded Source

Built Distribution

favicons-0.0.2-py3-none-any.whl (10.6 kB view hashes)

Uploaded Python 3

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