A rust library to generate sitemaps.
Go to file
2021-02-01 11:04:40 +01:00
.github speed up gh actions 2020-11-27 14:29:53 +01:00
examples add entity escaping to the example 2021-02-01 11:04:40 +01:00
src add entity escaping to the example 2021-02-01 11:04:40 +01:00
.gitignore initial commit 2020-11-22 15:43:41 +01:00
Cargo.toml remove feature abuse 2021-02-01 10:35:45 +01:00
LICENSE add more author info to the license 2021-02-01 10:49:54 +01:00
README.md upd the readme 2021-02-01 10:48:24 +01:00

Sitewriter

Rust crates.io License codecov

A rust library to generate sitemaps.

It uses the quick-xml so it should be fast.

Example

To run the examples use cargo run --example gen_sitemap

use chrono::prelude::*;
use sitewriter::*;

fn main() {
    let mut sitemap = Sitemap::new();
    sitemap.urls.push(Url::new("https://edgarluque.com/projects".to_owned()));

    sitemap.urls.push(Url {
        loc: "https://edgarluque.com/".to_owned(),
        changefreq: Some(ChangeFreq::Daily),
        priority: Some(1.0),
        lastmod: Some(Utc::now()),
    });

    sitemap.urls.push(Url {
        loc: "https://edgarluque.com/blog".to_owned(),
        changefreq: Some(ChangeFreq::Weekly),
        priority: Some(0.8),
        lastmod: Some(Utc::now()),
    });

    sitemap.urls.push(Url {
        loc: "https://edgarluque.com/blog/sitewriter".to_owned(),
        changefreq: Some(ChangeFreq::Never),
        priority: Some(0.5),
        lastmod: Some(Utc.ymd(2020, 11, 22).and_hms(15, 10, 15)),
    });

    sitemap.urls.push(Url {
        loc: "https://edgarluque.com/blog/some-future-post".to_owned(),
        changefreq: Some(ChangeFreq::Never),
        priority: Some(0.5),
        lastmod: Some(Utc.from_utc_datetime(&Local.ymd(2020, 12, 5).and_hms(12, 30, 0).naive_utc())),
    });


    let result = sitemap.into_str();
    println!("{}", result);
}

Prints the following:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>https://edgarluque.com/projects</loc>
    </url>
    <url>
        <loc>https://edgarluque.com/</loc>
        <lastmod>2020-11-22T14:36:30Z</lastmod>
        <priority>1.0</priority>
        <changefreq>daily</changefreq>
    </url>
    <url>
        <loc>https://edgarluque.com/blog</loc>
        <lastmod>2020-11-22T14:36:30Z</lastmod>
        <priority>0.8</priority>
        <changefreq>weekly</changefreq>
    </url>
    <url>
        <loc>https://edgarluque.com/blog/sitewriter</loc>
        <lastmod>2020-11-22T15:10:15Z</lastmod>
        <priority>0.5</priority>
        <changefreq>never</changefreq>
    </url>
    <url>
        <loc>https://edgarluque.com/blog/some-future-post</loc>
        <lastmod>2020-12-05T11:30:00Z</lastmod>
        <priority>0.5</priority>
        <changefreq>never</changefreq>
    </url>
</urlset>