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`][session] and provides a Tumblr login/logout process.
Tumblr supplies an [OAuth API][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__`).
Under the hood, a `TumblrSession` is a [`requests.Session`][session] with some
special behavior optimized for use with Python’s [`with` statements][with].
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',
}
[requests]: http://docs.python-requests.org/en/master/
[session]: http://docs.python-requests.org/en/master/api/#request-sessions
[api]: https://www.tumblr.com/docs/en/api/v2
[with]: https://docs.python.org/3/reference/compound_stmts.html#the-with-statement
TL;DR: `tumblr_noauth` is a Python package which provides a
`TumblrSession(email, password)` class which extends
[`requests.Session`][session] and provides a Tumblr login/logout process.
Tumblr supplies an [OAuth API][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__`).
Under the hood, a `TumblrSession` is a [`requests.Session`][session] with some
special behavior optimized for use with Python’s [`with` statements][with].
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',
}
[requests]: http://docs.python-requests.org/en/master/
[session]: http://docs.python-requests.org/en/master/api/#request-sessions
[api]: https://www.tumblr.com/docs/en/api/v2
[with]: https://docs.python.org/3/reference/compound_stmts.html#the-with-statement
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Close
Hashes for tumblr_noauth-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e10477894d594c409f297f31fd9a43140b1a3d7bac44363aa9e460581c2d10ec |
|
MD5 | dbeae1dcee234563baadfeeda90a1bd0 |
|
BLAKE2b-256 | 514b321162d5aa295203516c7d81708770e0f417fb23d112b96c993ada230c0b |