Python library to capture screenshots of web applications or pages
Project description
[![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)
[![PyPI version](https://badge.fury.io/py/screamshot.svg)](https://badge.fury.io/py/screamshot)
# 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
0.1.6
===
Module is now available
0.1.7
===
From now on the browser endpoint is saved in the temporary directory
0.1.8
===
From now on `serialize` function returns a `dict` object and `deserialize` takes a `dict` object
[![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)
[![PyPI version](https://badge.fury.io/py/screamshot.svg)](https://badge.fury.io/py/screamshot)
# 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
0.1.6
===
Module is now available
0.1.7
===
From now on the browser endpoint is saved in the temporary directory
0.1.8
===
From now on `serialize` function returns a `dict` object and `deserialize` takes a `dict` object
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
screamshot-0.1.8.tar.gz
(9.8 kB
view hashes)
Built Distribution
screamshot-0.1.8-py3-none-any.whl
(11.8 kB
view hashes)
Close
Hashes for screamshot-0.1.8-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 129690c6a7c28493d9595e2dcd3b775cc66a0a676af768e6568a45845b765464 |
|
MD5 | 5706ca485b437a78e702f2b313ce6ec4 |
|
BLAKE2b-256 | e64ae390df7358ec3f12b81227e3f24d0f71deb858905dbd018741e3b58615d2 |