Unofficial API wrapper for https://ask.fm
Project description
askfm-api
This aims to be a powerful Python wrapper around the undocumented ASKfm API for its mobile apps.
Currently based on reverse-engineering ASKfm Android app v4.67.1, which uses ASKfm API version 1.18.
The core logic is quite complete, but I've implemented helpers (in the askfm_api.requests
module) for only a small subset of API methods.
Usage
The code should be self-explanatory so I won't go into great detail here. Quick example:
from askfm_api import AskfmApi, AskfmApiError
from askfm_api import requests as r
try:
api = AskfmApi("<secret key>", device_id="D2A6C471C4B4DA5C")
me = api.login("username", "password")
print(me)
# {'uid': 'jgrdlgrd', 'fullName': 'Снег не растает', 'location': 'my empire of dirt', ...}
qs = api.request_iter(r.fetch_questions())
print(next(qs))
# {'type': 'daily', 'body': 'Hi?', 'answer': None, 'author': None, 'qid': 153352, ...}
res = api.request(
r.post_answer(question_type="daily", question_id=153352, text="Hi there!")
)
print(res)
# {'question': {...}, 'answer': {...}}
except AskfmApiError as e:
print(e)
# error code returned by the API, e. g. 'session_expired'
Signing key
All requests are signed using a secret key (unique per app version) that is stored inside the official app in an obfuscated manner. I don't find it ethical to publish it, so if you want to use this library, your options are:
- extract the key by yourself
- contact me, explain your use case and ask for the key
Related work / See also
- a similar library (currently outdated): https://github.com/Hexalyse/pyAskFm
- blog post with a more in-depth explanation of reverse-engineering ASKfm API: https://hexaly.se/2017/06/14/how-i-reverse-engineered-the-ask-fm-api-part-1/
Contributing
Any activity is welcome, but I would be especially grateful if someone wrote tests for this code.
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
File details
Details for the file askfm-api-0.1.1.tar.gz
.
File metadata
- Download URL: askfm-api-0.1.1.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.1.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.9.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb0d9c4a1450b423fe12e62799b2582b5c0887157c81dc073a259c3aa33a225f |
|
MD5 | f1a5c241136a212f93cd38906a8306ba |
|
BLAKE2b-256 | c0ef83b02a3c9f0cd4792fd9a1459aee69c0e2addc3252f0d1d945c4f782b549 |
File details
Details for the file askfm_api-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: askfm_api-0.1.1-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.1.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.9.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8bbb95165f836c380b9d8df9e5ce33d27e0e41f5e3bb09ccd0b83e5534e503f0 |
|
MD5 | 1d44011fa95202e6477cf951a14a52bc |
|
BLAKE2b-256 | 66ecba6fba4a56876d103321f1ae7985487cf981afe8e20681fe617c42b35cbd |