Search anything on Yahoo: web pages, news, videos, autocomplete, and weather.
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file yahoo-search-py-0.3.tar.gz
.
File metadata
- Download URL: yahoo-search-py-0.3.tar.gz
- Upload date:
- Size: 11.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 01b5ca2ff117e9e3aca3754c233e49272793cb013de7652f70be48bcddb31772 |
|
MD5 | be8b4d2cf7d3ce1abb192077307978a6 |
|
BLAKE2b-256 | e183fc0a9ebd324d275b6ae33762b2bf978d1c7e0b530eeffc031a5a03ac92f4 |