A python module to generate link previews.
Project description
SneakPeek
A python module and a minimalistic server to generate link previews.
What is supported
- Any page which supports Open Graph Protocol (which most sane websites do)
- Special handling for sites like
Installation
Run the following to install
pip install sneakpeek
Usage as a Python Module
From a URL
>>> import sneakpeek
>>> from pprint import pprint
>>> link = sneakpeek.SneakPeek("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
>>> link.fetch()
>>> link.is_valid()
True
>>> pprint(link)
{'description': 'The official video for “Never Gonna Give You Up” by Rick '
'AstleyTaken from the album ‘Whenever You Need Somebody’ – '
'deluxe 2CD and digital deluxe out 6th May ...',
'domain': 'www.youtube.com',
'image': 'https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg',
'image:height': '720',
'image:width': '1280',
'scrape': False,
'site_name': 'YouTube',
'title': 'Rick Astley - Never Gonna Give You Up (Official Music Video)',
'type': 'video.other',
'url': 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
'video:height': '720',
'video:secure_url': 'https://www.youtube.com/embed/dQw4w9WgXcQ',
'video:tag': 'never gonna give you up karaoke',
'video:type': 'text/html',
'video:url': 'https://www.youtube.com/embed/dQw4w9WgXcQ',
'video:width': '1280'}
>>> link = sneakpeek.SneakPeek(url="https://codingcoffee.dev")
>>> print(link)
{
'title': 'Home',
'description': 'Software Engineer, with over 3 years of professional working experience, with full stack development and system design. I like blogging about things which interest me, have a niche for optimizing and customizing things to the very last detail, this includes my text editor and operating system alike.',
'domain': 'codingcoffee.dev',
'image': 'https://codingcoffee.dev/src/images/avatar.png',
}
>>> link = sneakpeek.SneakPeek(url="https://github.com/codingcoffee")
>>> print(link)
{'_url': 'https://github.com/codingcoffee',
'description': 'Automate anything and everything 🙋\u200d♂️. codingCoffee has '
'68 repositories available. Follow their code on GitHub.',
'image': 'https://avatars.githubusercontent.com/u/13611153?v=4?s=400',
'image:alt': 'Automate anything and everything 🙋\u200d♂️. codingCoffee has 68 '
'repositories available. Follow their code on GitHub.',
'scrape': False,
'site_name': 'GitHub',
'title': 'codingCoffee - Overview',
'type': 'profile',
'url': 'https://github.com/codingCoffee'}
From HTML
>>> HTML = """
... <html xmlns:og="http://ogp.me/ns#">
... <head>
... <title>The Rock (1996)</title>
... <meta property="og:title" content="The Rock" />
... <meta property="og:type" content="movie" />
... <meta property="og:url" content="http://www.imdb.com/title/tt0117500/" />
... <meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />
... </head>
... </html>
... """
>>> movie = opengraph.OpenGraph() # or you can instantiate as follows: opengraph.OpenGraph(html=HTML)
>>> movie.parser(HTML)
>>> movie.is_valid()
True
Usage as a Server
A simple django server is used to serve the requests. Checkout the server folder for more details
sneekpeek serve
Development
pip install -U poetry
git clone https://github.com/codingcoffee/sneakpeek
cd sneakpeek
poetry install
Running Tests
poetry run pytest
- Tested Websites
TODO
- Twitter (requires a twitter API key)
- Instagram (using instagram-scraper)
- CI/CD for tests
Contribution
Have better suggestions to optimize the server image? Found some typos? Need special handling for a new website? Found a bug? Want to work on a TODO? Go ahead and send in a Pull Request or create an Issue! Contributions of any kind welcome!
License
The code in this repository has been released under the MIT License
Attributions
- Python opengraph
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sneakpeek-0.2.0.tar.gz.
File metadata
- Download URL: sneakpeek-0.2.0.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.14 CPython/3.10.5 Linux/5.18.14-arch1-1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65b039204a49dc103de044ff62062accc7758686bb7f51b209fc641ca0834c37
|
|
| MD5 |
865437258c6ac35d120c34630bf17223
|
|
| BLAKE2b-256 |
fc480362ff9c7287e53346955acc4e0656ff82075308181c3b068970d59b3030
|
File details
Details for the file sneakpeek-0.2.0-py3-none-any.whl.
File metadata
- Download URL: sneakpeek-0.2.0-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.14 CPython/3.10.5 Linux/5.18.14-arch1-1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48da007c06cd997bffca802f394def8e461e9c81cc9846b874d9ff554a2ba082
|
|
| MD5 |
0c77e745589aeebe5bd4d6dc0b35cc30
|
|
| BLAKE2b-256 |
cd3186fb3f6c077b164da423f9aa44b916d5c42e99348f91a30f8fcd71acc21e
|