Skip to main content

A sneaky Tumblr API

Project description

Tumblr with no OAuth

TL;DR: tumblr_noauth is a Python package which provides a TumblrSession(email, password) class which extends requests.Session and provides a Tumblr login/logout process.

Tumblr supplies an OAuth API which you can use for fairly simple tasks, mostly for dashboard-like functions; there’s a lot left out, such as

  • Checking if a URL is available for creating a new blog; the endpoint at www.tumblr.com/check_if_tumblelog_name_is_available requires authentication
  • Probably others which I forget

With no official way to access that data, tumblr_noauth provides a workaround: emulate a whole Tumblr “session”; you feed it a username and password (which aren’t stored, even in the TumblrSession object) and it performs a login request (and a logout request with __exit__ or at the end of the with clause).

Under the hood, a TumblrSession is a requests.Session with some special behavior optimized for use with Python’s with statements.

The following methods in a TumblrSession object are specialized to make the https://www.tumblr.com/ prefix optional:

  • delete
  • get
  • head
  • options
  • patch
  • post
  • put

i.e. the high-level HTTP requests.

Example usage:

import json
import tumblr_noauth

with open('creds.json') as f:
    creds = json.load(f)

with TumblrSession(creds['email'], creds['password']) as session:
    data = {'name': staff}
    resp = session.post('check_if_tumblelog_name_is_available',
    data=data)

    print(resp, ';', resp.text)

Where the with clause automatically logs in and out of Tumblr.

For additional “authenticity”, you might want to set your headers to something like...

# this is lying
headers = {
    'Host': 'www.tumblr.com',
    'Origin': 'https://www.tumblr.com',
    'Referer': 'https://www.tumblr.com/dashboard',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest',
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for tumblr-noauth, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size tumblr_noauth-0.1.0-py3-none-any.whl (4.1 kB) File type Wheel Python version py3 Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page