yahoo-search
Search anything on Yahoo: web pages, news, videos, autocomplete, and weather.
$ pip install yahoo-search-py
Simple API
Simple and Pythonic API with Pydantic.
Get almost every result: also_try, pages, card, and related_searches.
from yahoo_search import search
result = search("chocolate")
print(result.pages[0])
See Example Output
PageResult(
title='Chocolate - Wikipedia',
link='https://en.wikipedia.org/wiki/Chocolate',
text='A "cocoa product" is defined as a food product that is sourced from cocoa beans and contains "cocoa nibs, cocoa liquor, cocoa mass, unsweetened chocolate, bitter chocolate, chocolate liquor, cocoa, low-fat cocoa, cocoa powder, or low-fat cocoa powder". Conching. Main article: Conching.'
)
Yahoo News Search
You can also search news with ease.
from yahoo_search import search_news
result = search_news("taiwan")
print(result.news[0])
See Example Output
News(
title='How to take the Taiwan Design Expo personality test that\'s trending on IG Stories',
thumbnail='https://s.yimg.com/fz/api/res/1.2/(...)',
source='Lifestyle Asia via Yahoo Style Singapore',
text='If you\'ve always wanted to know your personality type beyond the conventional MBTI variants, it\'s...'
)
Yahoo Videos Search
Search and preview online videos easily.
from yahoo_search import search_videos
result = search_videos("jvke - golden hour")
print(result.videos[0].video_preview)
See Example Output
https://tse3.mm.bing.net/th?id=OM.7UQt_nfsv8nF0A_1687237113&pid=Api
Yahoo Weather
Get the weather, because why not.
from yahoo_search import weather
w = weather()
print(w.celsius)
print(w.forecast["Monday"])
See Example Output
30
WeatherForecast(
fahrenheit=HighLowTemperature(
highest=92,
lowest=78
),
celsius=HighLowTemperature(
highest=34,
lowest=26
),
weather=WeatherForecastInner(
text='Haze',
icon='https://s.yimg.com/g/images/spaceball.gif'
),
precipitation=Precipitation(
icon='https://s.yimg.com/g/images/spaceball.gif',
percentage='0%'
)
)
Yahoo Autocomplete
You can add autocompletes to your applications.
from yahoo_search import autocomplete
print(autocomplete("hello"))
See Example Output
["hello fresh", "hello kitty", "hello molly", "hello neighbor", "hello october", "hello fresh log in to my account", "hello october images", "hello kitty coloring pages", "hello magazine", "hellosign"]
Examples
Below are some simple examples (and inspirations):
Simple App — Yahoo Search
Below is a simple app that implements Yahoo searching right in your terminal.
from yahoo_search import search
while True:
query = input("search: ")
result = search(query)
if result.card:
# if there's a wikipedia definition
print("meaning", result.card.heading)
print(result.card.text)
for page in result.pages:
print(page.title, page.link)
print(page.text)
for search in result.related_searches:
print("related search: ", search.text)
Minutely News — Yahoo News
Tired of "hourly" or "daily" news? Try minutely, and let them fill into your mind... full of news.
import time
from yahoo_search import search_news
keywords = ("news", "taiwan", "usa", "chocolate")
current = 0
while True:
result = search_news(keywords[current])
for news in result.news:
print(news.title)
print(news.text)
print()
# loop through the keywords
current += 1
current %= len(keywords)
time.sleep(60)
Video Previewer API — Yahoo Videos
We love public APIs, so let's make our own.
import fastapi
from yahoo_search import search_videos
app = fastapi.FastAPI()
@app.get("/preview")
def preview_video(query: str):
# takes the URL param
res = search_videos(query)
return {
"url": res.videos[0].video_preview
}
Weather Forecast App — Yahoo Weather
Nawh, I ain't gonna setup a whole Flask app for this 💀💀
Terminal app is enough.
from yahoo_search import weather
res = weather()
print("Forecast")
for day, forecast in res.forecast.items():
print(
day,
"-",
forecast.weather.text,
forecast.precipitation.percentage,
forecast.fahrenheit.highest,
"/",
forecast.fahrenheit.lowest
)
Extra: Async
If you're working with coroutines, such as Discord bots or FastAPI, you can wrap it into async.
(The below code structure is from Stackoverflow.)
import asyncio
from yahoo_search import search
async def asearch(loop, query):
# None uses the default executor (ThreadPoolExecutor)
await loop.run_in_executor(
None,
search,
query
)
Models & Functions Definitions
Below are the models & functions type definitions.
See All Models (15)
class AlsoTryItem(BaseModel):
link: str
text: str
class PageResult(BaseModel):
title: str
link: str
text: Optional[str] = None
class CardResultSource(BaseModel):
link: str
text: str
class CardResult(BaseModel):
image: Optional[str] = None
heading: Optional[str] = None
text: Optional[str] = None
source: Optional[CardResultSource] = None
class RelatedSearch(BaseModel):
link: str
text: str
class SearchResult(BaseModel):
also_try: List[AlsoTryItem]
pages: List[PageResult]
card: Optional[CardResult] = None
related_searches: List[RelatedSearch]
class News(BaseModel):
title: str
thumbnail: Optional[str] = None
source: Optional[str] = None
last_updated: Optional[str] = None
text: Optional[str] = None
class NewsSearchResult(BaseModel):
news: List[News]
class Video(BaseModel):
age: Optional[str] = None
cite: Optional[str] = None
thumbnail: Optional[str] = None
video_preview: Optional[str] = None
title: str
link: str
class VideoSearchResult(BaseModel):
videos: List[Video]
class HighLowTemperature(BaseModel):
highest: int
lowest: int
class WeatherForecastInner(BaseModel):
text: str
icon: str
class Precipitation(BaseModel):
icon: str
percentage: str
class WeatherForecast(BaseModel):
fahrenheit: HighLowTemperature
celsius: HighLowTemperature
weather: WeatherForecastInner
precipitation: Precipitation
class WeatherInformation(BaseModel):
location: str
country: str
time: str
celsius: int
fahrenheit: int
weather: str
weather_icon: str
forecast: Dict[
Literal[
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
WeatherForecast
]
See All Functions (4)
def search(query: str) -> SearchResult: ...
def search_news(query: str) -> NewsSearchResult: ...
def weather() -> WeatherInformation: ...
def autocomplete(query: str) -> List[str]: ...
No, this time I'm not bored. I just want to practice webscraping.
Metadata
Release files for yahoo-search-py 0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| yahoo-search-py-0.3.tar.gz | 11.4 kB | Without provenance | Details |
Release files / yahoo-search-py-0.3.tar.gz
| Download URL | yahoo-search-py-0.3.tar.gz |
|---|---|
| Size | 11.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
01b5ca2ff117e9e3aca3754c233e49272793cb013de7652f70be48bcddb31772
|
|
BLAKE2b-256 checksum How to use checksums |
e183fc0a9ebd324d275b6ae33762b2bf978d1c7e0b530eeffc031a5a03ac92f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.11
|
Security for yahoo-search-py 0.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.