Skip to main content

The sitemap generator for Python projects.

Project description

Dynamic sitemap

Python version Build Status codecov PyPI - Downloads

The simple sitemap generator for Python projects.

Installation

  • using pip
pip install dynamic-sitemap

Usage

Static

from datetime import datetime
from dynamic_sitemap import SimpleSitemap, ChangeFreq

urls = [
    '/',
    {'loc': '/contacts', 'changefreq': ChangeFreq.NEVER.value},
    {'loc': '/about', 'priority': 0.9, 'lastmod': datetime.now().isoformat()},
]
sitemap = SimpleSitemap('https://mysite.com', urls)
# or sitemap.render()
sitemap.write('static/sitemap.xml')

Dynamic

Only FlaskSitemap is implemented yet, so there is an example:

from dynamic_sitemap import FlaskSitemap
from flask import Flask

app = Flask(__name__)
sitemap = FlaskSitemap(app, 'https://mysite.com')
sitemap.build()

Then run your server and visit http://mysite.com/sitemap.xml.

The basic example with some Models:

from dynamic_sitemap import ChangeFreq, FlaskSitemap
from flask import Flask
from models import Post, Tag

app = Flask(__name__)
sitemap = FlaskSitemap(app, 'https://mysite.com', orm='sqlalchemy')
sitemap.config.TIMEZONE = 'Europe/Moscow'
sitemap.ignore('/edit', '/upload')
sitemap.add_items(
    '/contacts',
    {'loc': '/faq', 'changefreq': ChangeFreq.MONTHLY.value, 'priority': 0.4},
)
sitemap.add_rule('/blog', Post, loc_from='slug', priority=1.0)
sitemap.add_rule('/blog/tag', Tag, loc_from='id', changefreq='daily')
sitemap.build()

Also you can set configurations from your class (and it's preferred):

from dynamic_sitemap import ChangeFreq, FlaskSitemap
from flask import Flask
from models import Product

class Config:
    FILENAME = 'static/sitemap.xml'
    IGNORED = {'/admin', '/back-office', '/other-pages'}
    ALTER_PRIORITY = 0.1

app = Flask(__name__)
sitemap = FlaskSitemap(app, 'https://myshop.org', config=Config)
sitemap.add_items(
    '/contacts',
    {'loc': '/about', 'changefreq': ChangeFreq.MONTHLY.value, 'priority': 0.4},
)
sitemap.add_rule('/goods', Product, loc_from='id', lastmod_from='updated')
sitemap.build()

Not supported yet:

  • urls with more than 1 converter, such as /page/<int:user_id>/<str:slug>

Check out the Changelog.

Contributing

Feel free to suggest any improvements :)

Development

Fork this repository, clone it and install dependencies:

pip install -r requirements/all.txt 

Checkout to a new branch, add your feature and some tests, then try:

make precommit

If the result is ok, create a pull request to "dev" branch of this repo with a detailed description.
Done!

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

dynamic-sitemap-1.0.0a1.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

dynamic_sitemap-1.0.0a1-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file dynamic-sitemap-1.0.0a1.tar.gz.

File metadata

  • Download URL: dynamic-sitemap-1.0.0a1.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.5.0 importlib_metadata/4.2.0 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.6.10

File hashes

Hashes for dynamic-sitemap-1.0.0a1.tar.gz
Algorithm Hash digest
SHA256 1c5a2135c12abd996ac7c783a652b41da505b0829ae38385959519b142e86c73
MD5 930f7bb3df8643fe3aef6a2d8a6a87b0
BLAKE2b-256 8fa9eafd84da5cebfe879c9a8878b89cc373aa6cbd582f009dd8b78e5bc8e0fe

See more details on using hashes here.

File details

Details for the file dynamic_sitemap-1.0.0a1-py3-none-any.whl.

File metadata

  • Download URL: dynamic_sitemap-1.0.0a1-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.5.0 importlib_metadata/4.2.0 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.6.10

File hashes

Hashes for dynamic_sitemap-1.0.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 eefab86b43d8afd005cd11089a338a380555a6913c011fe2a704670664724949
MD5 bd6f6952303c213385c44baac075caee
BLAKE2b-256 904cc4616afd78d2c8c320b94f6a3cdc117411940528d24257b5eb90d774abbe

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