Skip to main content

A python module to generate link previews.

Project description

SneakPeek

A python module and a minimalistic server to generate link previews.

License: MIT

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

TODO

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

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

sneakpeek-0.2.0.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sneakpeek-0.2.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

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

Hashes for sneakpeek-0.2.0.tar.gz
Algorithm Hash digest
SHA256 65b039204a49dc103de044ff62062accc7758686bb7f51b209fc641ca0834c37
MD5 865437258c6ac35d120c34630bf17223
BLAKE2b-256 fc480362ff9c7287e53346955acc4e0656ff82075308181c3b068970d59b3030

See more details on using hashes here.

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

Hashes for sneakpeek-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 48da007c06cd997bffca802f394def8e461e9c81cc9846b874d9ff554a2ba082
MD5 0c77e745589aeebe5bd4d6dc0b35cc30
BLAKE2b-256 cd3186fb3f6c077b164da423f9aa44b916d5c42e99348f91a30f8fcd71acc21e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page