Skip to main content

`ecoindex-cli` is a CLI tool that let you make ecoindex tests on given pages

Project description

Ecoindex-Cli

Quality check PyPI version

This tool provides an easy way to analyze websites with Ecoindex from your local computer using multi-threading. You have the ability to:

  • Make the analysis on multiple pages
  • Define multiple screen resolution
  • Make a recursive analysis from a given website

This CLI is built on top of ecoindex-python with Typer

The output is always a CSV file with the results of the analysis.

Requirements

  • Python ^3.10
  • pip

Setup

pip install --user -U ecoindex-cli

Use case

The cli gets 2 commands: analyze and report which can be used separately:

ecoindex-cli --help                                
Usage: ecoindex-cli [OPTIONS] COMMAND [ARGS]...

  Ecoindex cli to make analysis of webpages

Options:
  --install-completion [bash|zsh|fish|powershell|pwsh]
                                  Install completion for the specified shell.
  --show-completion [bash|zsh|fish|powershell|pwsh]
                                  Show completion for the specified shell, to
                                  copy it or customize the installation.

  --help                          Show this message and exit.

Commands:
  analyze  Make an ecoindex analysis of given webpages or website.
  report   If you already performed an ecoindex analysis and have your...

Make a simple analysis

You give just one web url

ecoindex-cli analyze --url https://www.ecoindex.fr
Result
๐Ÿ“๏ธ Urls recorded in file `/tmp/ecoindex-cli/input/www.ecoindex.fr.csv`
There are 1 url(s), do you want to process? [Y/n]: 
1 urls for 1 window size with 8 maximum workers
100% โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” 1/1 โ€ข 0:00:10 โ€ข 0:00:00
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Total analysis โ”ƒ Success โ”ƒ Failed โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 1              โ”‚ 1       โ”‚ 0      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
๐Ÿ™Œ๏ธ File /tmp/ecoindex-cli/output/www.ecoindex.fr/2023-14-04_140013/results.csv written !

This makes an analysis with a screen resolution of 1920x1080px by default and with the last known version of chromedriver. You can set those settings with options: --window-size and --chrome-version

Set the output file

You can define the csv output file

ecoindex-cli analyze --url https://www.ecoindex.fr --output-file ~/ecoindex-results/ecoindex.csv
Result
๐Ÿ“๏ธ Urls recorded in file `/tmp/ecoindex-cli/input/www.ecoindex.fr.csv`
There are 1 url(s), do you want to process? [Y/n]: 
1 urls for 1 window size with 8 maximum workers
100% โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” 1/1 โ€ข 0:00:12 โ€ข 0:00:00
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Total analysis โ”ƒ Success โ”ƒ Failed โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 1              โ”‚ 1       โ”‚ 0      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
๐Ÿ™Œ๏ธ File /home/20100229/ecoindex-results/ecoindex.csv written !

Export to JSON file

By default, the results are exported to a CSV file. But, you can specify to export the results to a JSON file.

ecoindex-cli analyze --url https://www.ecoindex.fr --export-format json
Result
๐Ÿ“๏ธ Urls recorded in file `/tmp/ecoindex-cli/input/www.ecoindex.fr.csv`
There are 1 url(s), do you want to process? [Y/n]: 
1 urls for 1 window size with 8 maximum workers
100% โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” 1/1 โ€ข 0:00:11 โ€ข 0:00:00
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Total analysis โ”ƒ Success โ”ƒ Failed โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 1              โ”‚ 1       โ”‚ 0      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
๐Ÿ™Œ๏ธ File /tmp/ecoindex-cli/output/www.ecoindex.fr/2023-14-04_140153/results.json written !

Multiple url analysis

ecoindex-cli analyze --url https://www.ecoindex.fr --url https://www.greenit.fr/ --url https://donotwork.com
Result
๐Ÿ“๏ธ Urls recorded in file `/tmp/ecoindex-cli/input/www.ecoindex.fr.csv`
There are 3 url(s), do you want to process? [Y/n]: 
3 urls for 1 window size with 8 maximum workers
100% โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” 3/3 โ€ข 0:00:17 โ€ข 0:00:00
Errors found: please look at /tmp/ecoindex-cli/logs/www.ecoindex.fr.log)
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Total analysis โ”ƒ Success โ”ƒ Failed โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 3              โ”‚ 2       โ”‚ 1      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
๐Ÿ™Œ๏ธ File /tmp/ecoindex-cli/output/www.ecoindex.fr/2023-14-04_140317/results.csv written !

Provide urls from a file

You can use a file with given urls that you want to analyze: One url per line. This is helpful if you want to play the same scenario recurrently.

ecoindex-cli analyze --urls-file input/ecoindex.csv
Result
๐Ÿ“๏ธ Urls recorded in file `/tmp/ecoindex-cli/input/www.ecoindex.fr.csv`
There are 2 url(s), do you want to process? [Y/n]: 
2 urls for 1 window size with 8 maximum workers
100% โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” 2/2 โ€ข 0:00:14 โ€ข 0:00:00
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Total analysis โ”ƒ Success โ”ƒ Failed โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 2              โ”‚ 2       โ”‚ 0      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
๐Ÿ™Œ๏ธ File /tmp/ecoindex-cli/output/www.ecoindex.fr.csv/2023-14-04_140853/results.csv written !

Make a recursive analysis

You can make a recursive analysis of a given webiste. This means that the app will try to find out all the pages into your website and launch an analysis on all those web pages. โš ๏ธ This can process for a very long time! Use it at your own risks!

ecoindex-cli analyze --url https://www.ecoindex.fr --recursive
Result
You are about to perform a recursive website scraping. This can take a long time. Are you sure to want to proceed? [Y/n]: 
โฒ๏ธ Crawling root url https://www.ecoindex.fr -> Wait a minute!
-2023-04-14 14:09:38 [scrapy.utils.log] INFO: Scrapy 2.8.0 started (bot: scrapybot)
2023-04-14 14:09:38 [scrapy.utils.log] INFO: Versions: lxml 4.9.2.0, libxml2 2.9.14, cssselect 1.2.0, parsel 1.7.0, w3lib 2.1.1, Twisted 22.10.0, Python 3.11.3 (main, Apr  5 2023, 14:15:06) [GCC 9.4.0], pyOpenSSL 23.0.0 (OpenSSL 3.0.8 7 Feb 2023), cryptography 39.0.2, Platform Linux-5.15.0-67-generic-x86_64-with-glibc2.31
2023-04-14 14:09:38 [scrapy.crawler] INFO: Overridden settings:
{'LOG_ENABLED': False}
๐Ÿ“๏ธ Urls recorded in file `/tmp/ecoindex-cli/input/www.ecoindex.fr.csv`
There are 7 url(s), do you want to process? [Y/n]: 
7 urls for 1 window size with 8 maximum workers
100% โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” 7/7 โ€ข 0:00:25 โ€ข 0:00:00
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Total analysis โ”ƒ Success โ”ƒ Failed โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 7              โ”‚ 7       โ”‚ 0      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
๐Ÿ™Œ๏ธ File /tmp/ecoindex-cli/output/www.ecoindex.fr/2023-14-04_141011/results.csv written !

Using a specific Chrome version

You can use a specific Chrome version to make the analysis. This is useful if you use an old chrome version. You just have to provide the main Chrome version number.

ecoindex-cli analyze --url https://www.ecoindex.fr --chrome-version 107

Or if you do not know the Chrome version number, you can use the one line command

ecoindex-cli analyze --url https://www.ecoindex.fr --chrome-version (google-chrome --version  | grep --only -P '(?<=\\s)\\d{3}')

Using multi-threading

You can use multi-threading to speed up the analysis when you have a lot of websites to analyze. In this case, you can define the maximum number of workers to use:

ecoindex-cli analyze --url https://www.ecoindex.fr --url https://www.greenit.fr/ --max-workers 10

By default, the number of maximum workers is set to CPU count.

Disable console interaction

You can disable confirmations, and force the app to answer yes to all of them. It can be useful if you need to start the app from another script, or if you have no time to wait it to finish.

ecoindex-cli analyze --url https://www.ecoindex.fr --recursive --no-interaction

Set other screen resolutions

You can provide other screen resolutions. By default, the screen resolution is 1920x1080px but you can provide other resolution for example if you want to test ecoindex for mobile.

ecoindex-cli analyze --url https://www.ecoindex.fr --window-size 1920,1080 --window-size 386,540

Generate a html report

You can generate a html report easily at the end of the analysis. You just have to add the option --html-report.

ecoindex-cli analyze --url https://www.ecoindex.fr --recursive --html-report
Result
You are about to perform a recursive website scraping. This can take a long time. Are you sure to want to proceed? [Y/n]: 
โฒ๏ธ Crawling root url https://www.ecoindex.fr -> Wait a minute!
-2023-04-14 14:16:13 [scrapy.utils.log] INFO: Scrapy 2.8.0 started (bot: scrapybot)
2023-04-14 14:16:13 [scrapy.utils.log] INFO: Versions: lxml 4.9.2.0, libxml2 2.9.14, cssselect 1.2.0, parsel 1.7.0, w3lib 2.1.1, Twisted 22.10.0, Python 3.11.3 (main, Apr  5 2023, 14:15:06) [GCC 9.4.0], pyOpenSSL 23.0.0 (OpenSSL 3.0.8 7 Feb 2023), cryptography 39.0.2, Platform Linux-5.15.0-67-generic-x86_64-with-glibc2.31
2023-04-14 14:16:13 [scrapy.crawler] INFO: Overridden settings:
{'LOG_ENABLED': False}
๐Ÿ“๏ธ Urls recorded in file `/tmp/ecoindex-cli/input/www.ecoindex.fr.csv`
There are 7 url(s), do you want to process? [Y/n]: 
7 urls for 1 window size with 8 maximum workers
100% โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” 7/7 โ€ข 0:00:28 โ€ข 0:00:00
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Total analysis โ”ƒ Success โ”ƒ Failed โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 7              โ”‚ 7       โ”‚ 0      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
๐Ÿ™Œ๏ธ File /tmp/ecoindex-cli/output/www.ecoindex.fr/2023-14-04_141645/results.csv written !
๐Ÿฆ„๏ธ Amazing! A report has been generated to /tmp/ecoindex-cli/output/www.ecoindex.fr/2023-14-04_141645/index.html

When generating a html report, the results are written in a CSV file and you can not specify the result file location. So options --export-format and --output-file are ignored.

Here is a sample result: Sample report

Only generate a report from existing result file

If you already performed an anlayzis and (for example), forgot to generate the html report, you do not need to re-run a full analyzis, you can simply request a report from your result file :

ecoindex-cli report "/tmp/ecoindex-cli/output/www.ecoindex.fr/2021-05-06_191355/results.csv" "www.synchrone.fr"
Result
๐Ÿฆ„๏ธ Amazing! A report has been generated to /tmp/ecoindex-cli/output/www.ecoindex.fr/2021-05-06_191355/index.html

Results example

The result of the analysis is a CSV or JSON file which can be easily used for further analysis:

CSV example

width,height,url,size,nodes,requests,grade,score,ges,water,date,page_type
1920,1080,https://www.ecoindex.fr,521.54,45,68,B,75.0,1.5,2.25,2022-05-03 22:28:49.280479,
1920,1080,https://www.greenit.fr,1374.641,666,167,E,32.0,2.36,3.54,2022-05-03 22:28:51.176216,website

JSON example

[
    {
        "width": 1920,
        "height": 1080,
        "url": "https://www.ecoindex.fr",
        "size": 521.54,
        "nodes": 45,
        "requests": 68,
        "grade": "B",
        "score": 75.0,
        "ges": 1.5,
        "water": 2.25,
        "date": "2022-05-03 22:25:01.016749",
        "page_type": null
    },
    {
        "width": 1920,
        "height": 1080,
        "url": "https://www.greenit.fr",
        "size": 1163.386,
        "nodes": 666,
        "requests": 148,
        "grade": "E",
        "score": 34.0,
        "ges": 2.32,
        "water": 3.48,
        "date": "2022-05-03 22:25:04.516676",
        "page_type": "website"
    }
]

Docker

You can use this application in a docker container. You can simply run the container with the following command:

docker run -it --rm -v /tmp/ecoindex-cli:/tmp/ecoindex-cli ecoindex-cli:latest ecoindex-cli analyze --url https://www.ecoindex.fr --recursive --html-report 

Fields description

  • width is the screen width used for the page analysis (in pixels)
  • height is the screen height used for the page analysis (in pixels)
  • url is the analysed page url
  • size is the size of the page and of the downloaded elements of the page in KB
  • nodes is the number of the DOM elements in the page
  • requests is the number of external requests made by the page
  • grade is the corresponding ecoindex grade of the page (from A to G)
  • scoreย is the corresponding ecoindex score of the page (0 to 100)
  • ges is the equivalent of greenhouse gases emission (in gCO2e) of the page
  • wateris the equivalent water consumption (in cl) of the page
  • date is the datetime of the page analysis
  • page_type is the type of the page, based ton the opengraph type tag

Testing

In order to develop or test, you have to use Poetry, install the dependencies and execute a poetry shell:

poetry install && \
poetry shell

We use Pytest to run unit tests for this project. The test suite are in the tests folder. Just execute :

pytest --cov-report term-missing:skip-covered --cov=. --cov-config=.coveragerc tests

This runs pytest and also generate a coverage report (terminal and html)

Disclaimer

The LCA values used by ecoindex_cli to evaluate environmental impacts are not under free license - ยฉFrรฉdรฉric Bordage Please also refer to the mentions provided in the code files for specifics on the IP regime.

License

Contributing

Code of conduct

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

ecoindex_cli-2.18.0.tar.gz (25.9 kB view details)

Uploaded Source

Built Distribution

ecoindex_cli-2.18.0-py3-none-any.whl (33.2 kB view details)

Uploaded Python 3

File details

Details for the file ecoindex_cli-2.18.0.tar.gz.

File metadata

  • Download URL: ecoindex_cli-2.18.0.tar.gz
  • Upload date:
  • Size: 25.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.10.9 Linux/5.15.0-1035-azure

File hashes

Hashes for ecoindex_cli-2.18.0.tar.gz
Algorithm Hash digest
SHA256 8ab0e577a55a9195afbf59f9e1cd9ee39c75989719b5461bdea1539b2eae1951
MD5 9b1417789774f9882adff0e07a74548b
BLAKE2b-256 375e9cd238bfc90e92e859fc01bd09ed7f20d34e80debbbf64b11582a3a803dd

See more details on using hashes here.

File details

Details for the file ecoindex_cli-2.18.0-py3-none-any.whl.

File metadata

  • Download URL: ecoindex_cli-2.18.0-py3-none-any.whl
  • Upload date:
  • Size: 33.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.10.9 Linux/5.15.0-1035-azure

File hashes

Hashes for ecoindex_cli-2.18.0-py3-none-any.whl
Algorithm Hash digest
SHA256 59cf885545f2e3073bf1de6ae679e1e301809bb69d8068cb8905a5be3b07a02a
MD5 dff200c88f5313fc414014444b54fad9
BLAKE2b-256 befdd50435fd2f2a63ecd063ace35c31ad6a2d610ebdcecb97cc689a8b1ad1b7

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