All Projects → nomnoms12 → saucenao_api

nomnoms12 / saucenao_api

Licence: GPL-3.0 license
Wrapper for SauceNAO JSON API

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to saucenao api

saucenao
python module to work with SauceNao locally
Stars: ✭ 25 (-44.44%)
Mutual labels:  saucenao, saucenao-api
michelle
An anime-centric bot for Discord
Stars: ✭ 12 (-73.33%)
Mutual labels:  saucenao
PicImageSearch
整合图片识别api,用于以图搜源(以图搜图,以图搜番),支持SauceNAO,tracemoe,iqdb,ascii2d,google(谷歌识图),baidu(百度识图),E-Hentai,ExHentai识图
Stars: ✭ 175 (+288.89%)
Mutual labels:  saucenao
HibiAPI
一个实现了多种常用站点的易用化API的程序 / A program that implements easy-to-use APIs for a variety of commonly used sites.
Stars: ✭ 427 (+848.89%)
Mutual labels:  saucenao-api
weapp-saucenao
微信小程序: 识图娘
Stars: ✭ 19 (-57.78%)
Mutual labels:  saucenao
SmartImage
Reverse image search tool (SauceNao, ImgOps, trace.moe, and more)
Stars: ✭ 346 (+668.89%)
Mutual labels:  saucenao
Mirai-Bot
Robot developed based on RICQ framework
Stars: ✭ 6 (-86.67%)
Mutual labels:  saucenao
hibpwned
Python API wrapper for haveibeenpwned.com (API v3)
Stars: ✭ 21 (-53.33%)
Mutual labels:  python-api-wrapper
search photo-telegram-bot-heroku
一个可以部署在heroku上的搜图机器人
Stars: ✭ 137 (+204.44%)
Mutual labels:  saucenao
Fixator10-Cogs
Cogs for Red-DiscordBot. Including port of Stevy's V2 leveler.
Stars: ✭ 66 (+46.67%)
Mutual labels:  saucenao

SauceNAO Logo

saucenao_api

Tests codecov License SauceNao Status PyPI - Python Version

“The rough edges are a part of its charm”

Unofficial wrapper for the SauceNAO JSON API

Installation

This package requires Python 3.6 or later.

pip install -U saucenao_api

Usage

from saucenao_api import SauceNao

# Replace the key with your own
sauce = SauceNao('077f16b38a2452401790540f41246c7d951330c0')
results = sauce.from_url('https://i.imgur.com/oZjCxGo.jpg')  # or from_file()

best = results[0]  # results sorted by similarity

The library attempts to provide a developer friendly container format for all results. Meaning, no matter if SauceNao returns a Pixiv source result or a more obscure source, you'll be able to easily pull the title, urls, author and other useful information:

from saucenao_api import SauceNao
results = SauceNao('077f16b38a2452401790540f41246c7d951330c0').from_url('https://i.imgur.com/oZjCxGo.jpg')

len(results)   # 6
bool(results)  # True

# Request limits
results.short_remaining  # 4  (per 30 seconds limit)
results.long_remaining   # 99 (per day limit)

results[0].thumbnail     # temporary URL for picture preview
results[0].similarity    # 93.3
results[0].title         # めぐみん
results[0].urls          # ['https://www.pixiv.net/member_illust.php?mode=medium&illust_id=77630170']
results[0].author        # frgs
results[0].raw           # raw result

Video search results and book search results provide additional attributes:

from saucenao_api import SauceNao, VideoSauce, BookSauce
result = SauceNao('077f16b38a2452401790540f41246c7d951330c0').from_url('https://i.imgur.com/k9xlw6f.jpg')[0]

if isinstance(result, VideoSauce):
    result.part      # 02
    result.year      # 2009-2009
    result.est_time  # 00:05:32 / 00:21:10

elif isinstance(result, BookSauce):
    result.part

You can use the dir function to see all the attributes.

Asyncio

import asyncio
from saucenao_api import AIOSauceNao

async def main():
    # async requesting is also supported via the AIOSauceNao class
    async with AIOSauceNao('077f16b38a2452401790540f41246c7d951330c0') as aio:
        results = await aio.from_url('https://i.imgur.com/k9xlw6f.jpg')
    
asyncio.run(main())

The async with functionality is pretty useful if you want to make multiple requests. Note that you can still search without the async with syntax by simply calling await AIOSauceNao(...).from_url(...).

Advanced usage

from saucenao_api import SauceNao
from saucenao_api.params import DB, Hide, BgColor

sauce = SauceNao(api_key=None,          # Optional[str] 
                 testmode=0,            # int
                 dbmask=None,           # Optional[int]
                 dbmaski=None,          # Optional[int]
                 db=DB.ALL,             # int
                 numres=6,              # int
                 frame=1,               # int
                 hide=Hide.NONE,        # int
                 bgcolor=BgColor.NONE,  # int
)

The parameters frame, hide and bgcolor are taken from the main page and from the testing page, so their performance is not guaranteed. For the rest see SauceNAO User Config page (registration required).

Exceptions

All exceptions inherit from SauceNaoApiError for easy catching and handling. See errors.py file for details.

Note: SauceNao doesn't have good documentation. Exceptions are created only based on observations of changes in the returned status codes. If you find a specific error that is not being processed, please report it.

License

This package is based on pysaucenao.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].