Skip to main content
[![Build Status](https://travis-ci.org/makinacorpus/screamshot.svg?branch=master)](https://travis-ci.org/makinacorpus/screamshot)
[![Coverage Status](https://coveralls.io/repos/github/makinacorpus/screamshot/badge.svg?branch=master&service=github)](https://coveralls.io/github/makinacorpus/screamshot?branch=master&service=github)
[![Documentation Status](https://readthedocs.org/projects/screamshot/badge/?version=latest)](https://screamshot.readthedocs.io/en/latest/?badge=latest)

# Screamshot
Python library to capture screenshots of web applications

## Good practices

* Any code addition must be done in your own branch. You can name it `fl/what_this_branch_brings` where 'f' is the first letter of your first name and 'l' the first letter of your last name.
* A branch resolves a specific issue.
* Please write exhaustive tests. The coverage must not decrease.
* Please merge the master branch into yours, run the tests and checks and correct all errors and warnings before pushing your code.
* When you think you have finished you can make a pull request.

## Testing and checks
### To start the tests and checks
#### The first time

1. Install **docker** and **docker-compose**.
2. Run: `docker-compose build`, to create all the required images.
3. To start the verification, run: `docker-compose up`.

#### When it is already setup

You just need to run `docker-compose up`.

#### To clean up

* If you want to stop containers and remove containers, networks, volumes, and images created by up command, run: `docker-compose down`.
* If you want to delete all the images, run: `docker rmi -f $(docker images -q)`.

### To write new tests

* You must use the `unittest` package
* You must put your test file in the **tests** folder
* You must name your test file using the following next pattern: **test_*.py**

#### Local server

A server with a web page can be used at the following address: <http://server:5000/index.html> and <http://server:5000/other.html>

## Usage
### Documentation

The documentation is accessible [here](https://screamshot.readthedocs.io/en/latest/), on readthedocs.


### Exemple with django

The server must be launched using --nothreading and --noreload as argument.
```
# views.py in a Django project
from django.http import HttpResponse

import asyncio

from screamshot import generate_bytes_img_prom

def home(request):
loop = asyncio.get_event_loop()
future = asyncio.Future()

asyncio.ensure_future(
generate_bytes_img_prom('https://www.google.fr', future))
loop.run_until_complete(future)

return HttpResponse(future.result(), content_type='image')
```
Or using the already wrapped function
```
# views.py in a Django project
from django.http import HttpResponse

from screamshot import generate_bytes_img__django_wrap

def home(request):
img = generate_bytes_img__django_wrap('https://www.google.fr')
return HttpResponse(img, content_type='image')
```


#### Using Gunicorn

With [Gunicorn](https://gunicorn.org/) there isn't the thread related problems so we don't need to use the --nothreading and --noreload arguments.


CHANGELOG
=========

0.0.1
===

Initialization of Screamshot library
1. __init__ file:
* __author__
* __version__
* __all__
2. core file:
* A `ScreenShot` object with three methods:
* `load`, loads a web page
* `screamshot`, takes a screenshot of a loaded page
* `load_and_screamshot`, loads a web page and takes a screenshot

0.1.0
===

There is no more `ScreenShot` object just a function named `generate_bytes_img` which
takes some parameters and returns a binary `bytes` object.

0.1.1
===

`generate_bytes_img` is no more a sync function and `generate_bytes_img_prom` has been added
`generate_bytes_img_prom` uses the `asyncio.Future` object

0.1.2
===

A test and verification tool using Docker is now available

0.1.3
===

Add two commands:
* `browser-manager`
* `screamshot`

0.1.4
===

Add two functions:
* `serialize`
* `deserialize`

0.1.5
===

Add `generate_bytes_img_django_wrap` function


Release files for screamshot 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for screamshot 0.1.5
File Size Uploaded
screamshot-0.1.5.tar.gz 9.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for screamshot 0.1.5
File Interpreter ABI Platform
screamshot-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 28.7 kB

Release files / screamshot-0.1.5.tar.gz

Download URL screamshot-0.1.5.tar.gz
Size 9.5 kB
Tags Source
SHA-256 checksum
How to use checksums
e61e9cc0814089bdeef652d66305610c55292a68319a3dac9a7e4a47721e5172
BLAKE2b-256 checksum
How to use checksums
1c67648271bc01c008e9cb15235d7d18316bb75088d31b0de20b08a2a1d339ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.15+

Release files / screamshot-0.1.5-py3-none-any.whl

Download URL screamshot-0.1.5-py3-none-any.whl
Size 19.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7bb942cf573349ee387eb58c4bce437e05e0d3ab325ac1a2372363dc23739b40
BLAKE2b-256 checksum
How to use checksums
08755624fe9776d00ee7f0398b38ca078cb559a583e990248739f63baf381d9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.15+

Release history Release notifications | RSS feed

0.1.12

2 release files

0.1.9

4 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

This release

0.1.5 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page