Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
This is the unofficial API of 1337x. It supports all proxies of 1337x and almost all functions of 1337x. You can search, get trending, top and popular torrents. Furthermore, you can browse torrents of a certain category. It also supports filtering on result by category, supports sorting and caching.
Install via PyPi
pip install 1337x
Install from the source
git clone https://github.com/hemantapkh/1337x && cd 1337x && python setup.py sdist && pip install dist/*
>>> from py1337x import py1337x
# Using 1337x.tw and saving the cache in sqlite database which expires after 500 seconds
>>> torrents = py1337x(proxy='1337x.to', cache='py1337xCache', cacheTime=500)
>>> torrents.search('harry potter')
{'items': [...], 'currentPage': 1, 'itemCount': 20, 'pageCount': 50}
# Searching harry potter in category movies and sort by seeders in descending order
>>> torrents.search('harry potter', category='movies', sortBy='seeders', order='desc')
{'items': [...], 'currentPage': 1, 'itemCount': 40, 'pageCount': 50}
# Viewing the 5th page of the result
>>> torrents.search('harry potter', page=5)
{'items': [...], 'currentPage': , 'itemCount': 20, 'pageCount': 50}
>>> from py1337x import py1337x
# Using the default proxy (1337x.to) Without using cache
>>> torrents = py1337x()
# Today's trending torrents of all category
>>> torrents.trending()
{'items': [...], 'currentPage': 1, 'itemCount': 50, 'pageCount': 1}
# Trending torrents this week of all category
>>> torrents.trending(week=True)
{'items': [...], 'currentPage': 1, 'itemCount': 50, 'pageCount': 1}
# Todays trending anime
>>> torrents.trending(category='anime')
{'items': [...], 'currentPage': 1, 'itemCount': 50, 'pageCount': 1}
# Trending anime this week
>>> torrents.trending(category='anime', week=True)
{'items': [...], 'currentPage': 1, 'itemCount': 50, 'pageCount': 1}
>>> from py1337x import py1337x
# Using 11337x.st and passing the cookie since 11337x.st is cloudflare protected
>>> torrents = py1337x('11337x.st', cookie='<cookie>')
# Getting the information of a torrent by its link
>>> torrents.info(link='https://www.1337xx.to/torrent/258188/h9/')
{'name': 'Harry Potter and the Half-Blood Prince', 'shortName': 'Harry Potter', 'description': "....", 'category': 'Movies', 'type': 'HD', 'genre': ['Adventure', 'Fantasy', 'Family'], 'language': 'English', 'size': '3.0 GB', 'thumbnail': '...', 'images': [...], 'uploader': ' ...', 'uploaderLink': '...', 'downloads': '5310', 'lastChecked': '44 seconds ago', 'uploadDate': '4 years ago', 'seeders': '36', 'leechers': '3', 'magnetLink': '...', 'infoHash': '...'}
# Getting the information of a torrent by its link
>>> torrents.info(torrentId='258188')
{'name': 'Harry Potter and the Half-Blood Prince', 'shortName': 'Harry Potter', 'description': "....", 'category': 'Movies', 'type': 'HD', 'genre': ['Adventure', 'Fantasy', 'Family'], 'language': 'English', 'size': '3.0 GB', 'thumbnail': '...', 'images': [...], 'uploader': ' ...', 'uploaderLink': '...', 'downloads': '5310', 'lastChecked': '44 seconds ago', 'uploadDate': '4 years ago', 'seeders': '36', 'leechers': '3', 'magnetLink': '...', 'infoHash': '...'}
from py1337x import py1337x
torrents = py1337x(proxy='1337x.st', cookie='<cookie>', cache='py1337xCache', cacheTime=86400, backend='sqlite')
Proxy
If the default domain is banned in your country, you can use an alternative domain of 1337x.
1337x.to
(default)1337x.st
x1337x.ws
x1337x.eu
x1337x.se
1337x.so
1377x.to
(unofficial)1337xx.to
(unofficial)cookie
Some of the proxies are protected with Cloudflare. For such proxies you need to pass a cookie value. To get a cookie go the the protected site from your browser, solve the captcha and copy the value of cf_clearance
.
Firefox: Inspect element > Storage > Cookies
Chrome: Inspect element > Application > Storage > Cookies
cache
Py1337x uses requests-cache for caching to store data so that future requests for that data can be served faster. cache
can be any of the following.
True
for using cache and False
for not using cache. (cache is not used by default)cacheTime
By default the cache expires after one day. You can change the cache expiration time by setting a custom cacheTime
.
-1
(to never expire)
0
(to “expire immediately,” e.g. bypass the cache)
A positive number (in seconds [defaults to 86400])
A datetime
backend
The backend for storing the cache can be any of the following.
'sqlite'
: SQLite database (default)
'redis'
: Redis cache (requires redis
)
'mongodb'
: MongoDB database (requires pymongo
)
'gridfs'
: GridFS collections on a MongoDB database (requires pymongo
)
'dynamodb'
: Amazon DynamoDB database (requires boto3
)
'memory'
: A non-persistent cache that just stores responses in memory
from py1337x import py1337x
torrents = py1337x()
Method | Description | Arguments |
---|---|---|
torrents.search(query) | Search for torrents | self, query: Keyword to search for ,page (Defaults to 1): Page to view ,category (optional): category, sortBy (optional): Sort by, Order (optional): order |
torrents.trending() | Get trending torrents | self, category (optional): category, week (Defaults to False): True for weekely, False for daily |
torrents.top() | Get top torrents | self, category (optional): category |
torrents.popular(category) | Get popular torrents | self, category: category, week (Defaults to False): True for weekely, False for daily |
torrents.browse(category) | Browse browse of certain category | self, category: category, page (Defaults to 1): Page to view |
torrents.info(link or torrentId) | Get information of a torrent | self, link: Link of a torrent ortorrentId: ID of a torrent |
'movies'
'tv'
'games'
'music'
'apps'
'anime'
'documentaries'
'xxx'
'others'
'time'
'size'
'seeders'
'leechers'
'desc'
(for descending order)'asc'
(for ascending order)Any contributions you make are greatly appreciated.
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)Thanks to every contributors who have contributed in this project.
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 | Youtube: @H9Youtube
FAQs
Unofficial API of 1337x.to
We found that 1337x demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.