- Installation
- How I got the API endpoints?
- Start Guide
- Detailed Documentation
- Contributing
- Projects using this API
- License
-
Install via PyPi
pip install seedrcc
-
Install from the source
git clone https://github.com/hemantapkh/seedrcc && cd seedrcc && python setup.py sdist && pip install dist/*
Seedr don't provide an API to the freemium users. However, Seedr has a chrome and kodi extension that works for all users. Some of the endpoints (very few) are extracted from these extensions.
After analyzing the requests sent by the seedr site (old version), I found the seedr-site API (which needs captcha) are quiet similar to that of seedr-chrome and seedr-kode API. So, I just predicted the other endpoints.
This API works for all users since it uses the seedr-chrome and seedr-kodi API.
There are two methods to get the account token. You can login with username/password or by authorizing with device code.
This method uses the seedr Chrome extension API.
from seedrcc import Login
seedr = Login('foo@bar.com', 'password')
response = seedr.authorize()
print(response)
# Getting the token
print(seedr.token)
This method uses the seedr kodi API.
To use this method, generate a device & user code. Paste the user code in https://seedr.cc/devices and authorize with the device code.
from seedrcc import Login
seedr = Login()
deviceCode = seedr.getDeviceCode()
# Go to https://seedr.cc/devices and paste the user code
print(deviceCode)
# Authorize with device code
response = seedr.authorize(deviceCode['device_code'])
print(response)
# Getting the token
seedr.token
✏️ Note: You must use the token from the instance variable ‘token’ instead of the ‘access_token’ or ‘refresh_token’ from the response.
For all available methods, please refer to the documentation. Also, it is recommended to set a callback function, read more about it here.
from seedrcc import Seedr
account = Seedr(token='token')
# Getting user settings
print(account.getSettings())
# Adding torrent
response = account.addTorrent('magnetlink')
print(response)
#Listing folder contents
response = account.listContents()
print(response)
The access token may expire after certain time and need to be refreshed. However, this process is handled by the module and you don't have to worry about it.
You can set a callback function which will be called automatically each time the token is refreshed. You can use such function to deal with the refreshed token.
✏️ Note: The callback function must have at least one parameter. The first parameter of the callback function will be the updated token.
Here is an example of callback function with a single argument which read and update the token in a file called token.txt
.
# Read the token from token.txt
token = open('token.txt', 'r').read().strip()
# Defining the callback function
def afterRefresh(token):
with open('token.txt', 'w') as f:
f.write(token)
account = Seedr(token, callbackFunc=afterRefresh)
In situations where you need to pass multiple arguments to the callback function, you can use the lambda function. Callback function with multiple arguments can be useful if your app is dealing with multiple users.
Here is an example of callback function with multiple arguments which will update the token of certain user in the database after the token of that user is refreshed.
# Defining the callback function
def afterRefresh(token, userId):
# Add your code to deal with the database
print(f'Token of the user {userId} is updated.')
# Creating a Seedr object for user 12345
account = Seedr(token='token', callbackFunc=lambda token: afterRefresh(token, userId='12345'))
The detailled documentation of each methods is available here.
Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Thanks to every contributors who have contributed in this project.
- Torrent Seedr - Telegram bot to download torrents (Source code, Link).
Want to list your project here? Just make a pull request.
Distributed under the MIT License. See LICENSE for more information.
Author/Maintainer: Hemanta Pokharel