A library to get a random cartoon image url from ~20000 cartoons. It also contains the scrapers for many cartoon websites.
Project description
Cartoonista - A python cartoon library
A library to get a random cartoon image url from ~20000 cartoons. It also contains the scrapers for many cartoon websites.
:tada: :satisfied: :man_facepalming: A product of the finest german overengineering to solve a non existing problem with a complicated solution. :man_facepalming: :satisfied: :tada:
Sites
English:
- https://xkcd.com
- https://explosm.net
- https://loadingartist.com/
- https://www.smbc-comics.com
- https://www.commitstrip.com
- https://jamesofnotrades.com
German:
- https://joscha.com/nichtlustig
- https://ruthe.de
- https://martin-perscheid.de
- https://islieb.de
- https://www.schoenescheisse.de
This lib includes all scrapers for these sites, but it ships with all data, so these are only needed for manual updating.
Install
pip install cartoonista
Examples / Documentation
from cartoons import Cartoons
Cartoons.get_random_cartoon(
include=["xkcd_com", "ruthe_de"], # optional
exclude=["loadingartist_com", "commitstrip_com"], # optional
languages=["en"], # optional
exclude_tags=["offensive"], # optional
weighted=False # optional
)
This is the main function to get a random cartoon. There are optional filter parameters:
- cartoonists: Get only from these cartoonists. You can get the names and all infos with
Cartoons.get_all_cartoonists()
- language: Get only in this languages. There are currently only "en" and "de" cartoons.
- exclude_tags: Exclude cartoonists by tags. Possible values: "offensive", "nsfw"
- weighted: Default is to give cartoonists a weight by the amount of there cartoons, to prevent double cartoons for cartoonists with small amounts. This can be disabled, to randomize even over all cartoonists. The cartoons have to match all filters.
It returns something like this:
{
'img': 'https://imgs.xkcd.com/comics/standard_model_changes.png',
'title': 'Standard Model Changes',
'txt': "Bugs are spin 1/2 particles, unless it's particularly windy.",
'credits': 'Randall Munroe',
'website': 'https://xkcd.com',
'tags': []
}
Title/txt could be placed over/under the image and it would be fair to give credit and link to website.
Manual updating
Manual updating isn't strictly needed, cause the lib ships with all data, but it's possible.
Install the requirements with pip install pip install cartoonista[scraping]
or manually install requests and beautifulsoup4.
Run the scrape.py
from the repo (that gives you some logging output) or start scraping by running python -c "exec(\"from cartoons import Cartoons\nCartoons.start_scraping()\")"
. It's also possible to update only some cartoonist with Cartoons.start_scraping(cartoonists=["islieb.de", "xkcd.com"])
.
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
File details
Details for the file cartoonista-0.5.1.tar.gz
.
File metadata
- Download URL: cartoonista-0.5.1.tar.gz
- Upload date:
- Size: 357.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40eff52702237171d6661c7473ba8fe365cb666b8cc04e58c835958faf10994e |
|
MD5 | 5fb28700e16496873d7c7e819ae12d98 |
|
BLAKE2b-256 | f1ae819af5bf34e7b5c3de8e1da0bf8e8e9978bb9f14bb9c2f5957100969dbb4 |