Metadata-Version: 2.1
Name: search-me
Version: 4.0.0
Summary: Web search
License: MIT
Keywords: google,bing,brave,mojeek,async,async search,aiohttp,niquests,web search,async scraper,osint
Author: Michael R. Kisel
Author-email: search-me@aioboy.tech
Maintainer: Michael R. Kisel
Maintainer-email: search-me@aioboy.tech
Requires-Python: >=3.8.1,<3.15
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: AsyncIO
Classifier: Framework :: aiohttp
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.8
Classifier: Topic :: Home Automation
Classifier: Topic :: Internet
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Sociology
Classifier: Topic :: Software Development
Requires-Dist: aiohttp (<=3.14.1)
Requires-Dist: bcrypt (==3.2.2)
Requires-Dist: bs4 (<=0.0.1)
Requires-Dist: cryptography (==42.0.8)
Requires-Dist: importlib_resources
Requires-Dist: jmespath (<=1.1.0)
Requires-Dist: niquests (<=3.19.1)
Requires-Dist: numpy (<=2.5.0)
Requires-Dist: pandas (<=3.0.3)
Requires-Dist: tabulate (<=0.10.0)
Project-URL: documentation, https://aioboy.tech/p/search-me/
Project-URL: homepage, https://pypi.org/project/search-me
Project-URL: repository, https://gitlab.com/aioboy/search-me/
Description-Content-Type: text/markdown

<p align="center">
    <a href="https://pypi.org/project/search-me"><img src="https://gitlab.com/aioboy/search-me/-/raw/master/assets/logo.gif" alt="SEARCH-ME"></a>
</p>
<p align="center">
    <a href="https://pypi.org/project/search-me"><img src="https://img.shields.io/pypi/v/search-me.svg?style=flat-square&logo=appveyor" alt="Version"></a>
    <a href="https://pypi.org/project/search-me"><img src="https://img.shields.io/pypi/l/search-me.svg?style=flat-square&logo=appveyor&color=blueviolet" alt="License"></a>
    <a href="https://pypi.org/project/search-me"><img src="https://img.shields.io/pypi/pyversions/search-me.svg?style=flat-square&logo=appveyor" alt="Python"></a>
    <a href="https://pypi.org/project/search-me"><img src="https://img.shields.io/pypi/status/search-me.svg?style=flat-square&logo=appveyor" alt="Status"></a>
    <a href="https://pypi.org/project/search-me"><img src="https://img.shields.io/pypi/format/search-me.svg?style=flat-square&logo=appveyor&color=yellow" alt="Format"></a>
    <a href="https://pypi.org/project/search-me"><img src="https://img.shields.io/pypi/wheel/search-me.svg?style=flat-square&logo=appveyor&color=red" alt="Wheel"></a>
    <a href="https://pypi.org/project/search-me"><img src="https://img.shields.io/gitlab/pipeline-status/aioboy%2Fsearch-me?branch=master&style=flat-square&logo=appveyor" alt="Build"></a>
    <a href="https://pypi.org/project/search-me"><img src="https://gitlab.com/aioboy/search-me/-/raw/master/assets/coverage.svg" alt="Coverage"></a>
    <a href="https://pepy.tech/project/search-me"><img src="https://static.pepy.tech/personalized-badge/search-me?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads" alt="Downloads"></a>
    <br><br><br>
</p>

# SEARCH-ME

## INSTALL

```bash
pip install search-me
```

## USAGE

```python
import asyncio
import itertools
import aiohttp
import niquests
from search_me import Bing, Brave, GoodSearch

bing, brave, goodsearch = Bing(retry=3), Brave(), GoodSearch()

# ASYNC

async def main():

    headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:100.0) Gecko/20100101 Firefox/100.0"}

    async with aiohttp.ClientSession(headers=headers) as session:
        results = await asyncio.gather(
            bing.search(session, q="python 3.15"),
            brave.search(session, q="python 3.15"),
            goodsearch.search(session, q="python 3.15")
            )
        for result in itertools.chain(*results):
            print(result.to_dict())


try:
    loop = asyncio.get_event_loop()
except RuntimeError as e:
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)

loop.run_until_complete(main())


# SYNC

def main():

    headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:100.0) Gecko/20100101 Firefox/100.0"}

    with niquests.Session(headers=headers) as session:
        results = (engine.search(session, q="python 3.15") for engine in (bing, brave, goodsearch))
        for result in itertools.chain(*results):
            print(result.to_dict())


main()
```

