The sitemap generator for Python projects.
Project description
Dynamic sitemap
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c5a2135c12abd996ac7c783a652b41da505b0829ae38385959519b142e86c73 |
|
MD5 | 930f7bb3df8643fe3aef6a2d8a6a87b0 |
|
BLAKE2b-256 | 8fa9eafd84da5cebfe879c9a8878b89cc373aa6cbd582f009dd8b78e5bc8e0fe |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | eefab86b43d8afd005cd11089a338a380555a6913c011fe2a704670664724949 |
|
MD5 | bd6f6952303c213385c44baac075caee |
|
BLAKE2b-256 | 904cc4616afd78d2c8c320b94f6a3cdc117411940528d24257b5eb90d774abbe |