Skip to main content

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)
![Python version](https://img.shields.io/badge/Python-3.6-blue.svg?style=flat&logo=appveyor)
# 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

0.1.9
===

Remove serializer functions and add a bytes_to_img function

0.1.10
===
``generate_bytes_img_django_wrap`` is renamed ``generate_bytes_img_wrap``


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.10.tar.gz (10.0 kB view details)

Uploaded Source

Built Distributions

screamshot-0.1.10-py3.7.egg (10.7 kB view details)

Uploaded Source

screamshot-0.1.10-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file screamshot-0.1.10.tar.gz.

File metadata

  • Download URL: screamshot-0.1.10.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for screamshot-0.1.10.tar.gz
Algorithm Hash digest
SHA256 0ebb9a3c1e44b8c11ab9b267aed093a479709ad6e2a493a3146fab66eb27e273
MD5 25eb242e278a843d81f4ec06be53a699
BLAKE2b-256 32f4de04e19d56f9c4b005776719a322612195820c6d2837128708978eb5dad0

See more details on using hashes here.

Provenance

File details

Details for the file screamshot-0.1.10-py3.7.egg.

File metadata

  • Download URL: screamshot-0.1.10-py3.7.egg
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for screamshot-0.1.10-py3.7.egg
Algorithm Hash digest
SHA256 c557a08fd1a44c9d3d8da5db2bee4a45f7b584949a6170a3e0d00cf2ef2c5473
MD5 7d1fe0bd5fc06c3ac8090bcbf5d4d66c
BLAKE2b-256 13d162289bc5e3c21795f1ddc33bae7d7d1d98951c06f9012516e6c8284a7249

See more details on using hashes here.

Provenance

File details

Details for the file screamshot-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: screamshot-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for screamshot-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 4b7aff2bbec532abdb157eb84671ff634f07f83cadba0cb87d16f64dc56ef323
MD5 ad03ea31c3cb511ef56d627b4cf32356
BLAKE2b-256 919da1f00184c05dcd19f9d5a8a3dd8fa6cd52347aa18698e0dddcf2c38130bb

See more details on using hashes here.

Provenance

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