Skip to content

Zype-Z/ShareImage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ShareImage

A Python Library to Generate Dynamic Share Images. Powered by Cloudinary.

Libraries

It is currently available as a Python and Node.js Library and as an API!

Installation (Python and Node.js)

Windows

pip install ShareImage

Linux / macOS

python3 -m pip install ShareImage

API (Currently in Beta)

To use the API use all the parameters as you do in Node.js Library: https://shimg.zype.cf/v1/image?paramName=paramValue

Usage

ShareImage Can be easily integrated in any Python Project.
For example, in Flask:

from flask import Flask, render_template
from ShareImage import ShareImage

app = Flask(__name__)

@app.route('/')
def index():
    image = ShareImage(
        title="Home",
        cloudName="CLOUDINARY_CLOUD_NAME",
        imagePublicId="CLOUDINARY_IMAGE_ID"
    )
    return render_template('index.html', image=image)
    
@app.route('/posts/<string:slug>')
def posts(slug):
    image = ShareImage(
        title=bySlug.get(slug)['title'],
        cloudName="CLOUDINARY_CLOUD_NAME",
        imagePublicId="CLOUDINARY_IMAGE_ID"
    )
    return render_template('index.html', image=image)

if __name__=="__main__":
    app.run()

Now, you can use the image variable in any img Tag or og:image/twitter:image/image Meta Tags!
Note: CLOUDINARY_CLOUD_NAME and CLOUDINARY_IMAGE_ID are respectedly Your Cloudinary Cloud Name and Image Public Id (Including Folder Name) & the bySlug is a Special Variable to find specific posts in a Array of Dictionaries by Slug and it can be achieved by the following Code:

def build_dict(seq, key):
    return dict((d[key], dict(d, index=index)) for (index, d) in enumerate(seq))

bySlug = build_dict(ARRAY_OF_POSTS, key="KEY_OF_SLUG")

# Usage: bySlug(SLUG_OF_POST)['KEY_TO_FIND']

Utilites

By default ShareImage provides two useful Utility Functions.

Clean Text (clean_text)

It Cleanes a Text String and makes it URI-Compatible. Note: It uses Double-Escape for most Special Charecters to use it with Cloudinary. Example:

from ShareImage import clean_text

title = "A Test String"
print(clean_text(title)) # Will return A%2520Test%2520String

Join Tags (join_tags)

It Joins a Array of Tags to with # to use it as the tagline of ShareImage.
Example:

from ShareImage import ShareImage, join_tags

tags = [
    'Python',
    'Cloudinary'
]

image = ShareImage(
    cloudName="zype",
    imagePublicId="blog/Post-Image",
    title='A Python Library to Generate Dynamic Share Images',
    tagline=join_tags(tags),
    taglineFont="futura"
)

Parameters

Required Parameters

Parameter Type Description
title String Title of Text
cloudName String Name of your Cloudinary Cloud
imagePublicId String Public Id of Your Image including Folder Name

Optional Parameters

Parameter Type Default Description
tagline String None Tagline of Website or Tags of Post
titleFont String futura Font of Title
titleExtraConfig String '' Extra Title Config
taglineExtraConfig String '' Extra Config of Tagline
cloudinaryUrlBase String https://res.cloudinary.com URL Base of Cloudinary
taglineFont String arial Font of Tagline
imageWidth Integer 1280 Width of Image
imageHeight Integer 669 Height of Image
textAreaWidth Integer 760 Width of TextArea
textLeftOffset Integer 480 Left Offset of Text
titleGravity String south_west Gravity of Title
taglineGravity String north_west Gravity of Tagline
titleLeftOffset Integer None Left Offset of Title
taglineLeftOffset Integer None Left Offset of Tagline
titleBottomOffset Integer 254 Bottom Offset of Title
taglineTopOffset Integer 445 Top Offset of Tagline
textColor String 000000 Color of Text
titleColor String None Color of Title (If not provided textColor will be used instead
taglineColor String None Color of Tagline (If not provided textColor will be used instead
titleFontSize Integer 64 Font Size of Title
taglineFontSize Integer 48 Font Size of Tagline

Note: If you don't provide Tagline, Parameters with tagline Prefix will be ignored.
We may add more Customization to ShareImage in the Future.

Sponsors

Powered By Vercel