Security News
PyPI’s New Archival Feature Closes a Major Security Gap
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
The csecraft
Python library allows you to easily interact with the Google Custom Search API. This library provides methods for executing search queries, retrieving search results, paginating through search results, and accessing search metadata. Additionally, the library includes utility methods for displaying and analyzing search results, making it an ideal tool for applications that require embedded search functionality.
To install this library, follow either of the following methods:
pip install csecraft
Or
git clone https://github.com/benkimz/csecraft.git
cd csecraft
pip install .
To use this library, you'll need:
Visit the Google Custom Search documentation for setup instructions.
from cse-api import CustomSearchEngine
# Initialize the search engine with your API key and engine ID
api_key = "YOUR_API_KEY"
engine_id = "YOUR_ENGINE_ID"
search_engine = CustomSearchEngine(api_key, engine_id)
query = "Python programming"
response = search_engine.search(query)
if response:
print("Search Results:")
search_engine.display_results()
else:
print("No results found.")
# Get total number of results
total_results = search_engine.get_total_results()
print(f"Total results: {total_results}")
# Get search time
search_time = search_engine.get_search_time()
print(f"Search time: {search_time} seconds")
# Get all items (results) from the search
items = search_engine.get_items()
for i, item in enumerate(items, start=1):
print(f"{i}. Title: {item['title']}")
print(f" URL: {item['link']}")
print(f" Snippet: {item['snippet']}")
print(f" Display Link: {item['displayLink']}\n")
# Get promotions (if any)
promotions = search_engine.get_promotions()
for promo in promotions:
print(f"Promotion: {promo['title']}, Link: {promo['link']}")
# Get spelling-corrected query, if available
corrected_query = search_engine.get_corrected_query()
if corrected_query:
print(f"Did you mean: {corrected_query}?")
# Fetch search terms for the next page, if available
next_page_query = search_engine.get_next_page_query()
if next_page_query:
print(f"Suggested terms for next page: {next_page_query}")
# Fetch results for a specific page
page_number = 2
page_response = search_engine.fetch_page(page_number)
if page_response:
print(f"Results for page {page_number}:")
search_engine.display_results()
# Retrieve plain and HTML snippets for each result
snippets = search_engine.get_snippets()
for snippet, html_snippet in snippets:
print("Plain Snippet:", snippet)
print("HTML Snippet:", html_snippet)
print()
CustomSearchEngine
__init__(api_key: str, engine_id: str, base_url: str = "https://customsearch.googleapis.com/customsearch/v1")
Initialize the CustomSearchEngine with API key, engine ID, and an optional base URL.
search(query: str, **kwargs) -> Optional[CustomSearchResponse]
Perform a search with the given query and optional parameters.
str
): The search term or phrase.num
, start
, language
, etc.CustomSearchResponse
object with the search results.get_total_results() -> int
Returns the total number of results found in the last search response.
get_search_time() -> float
Returns the time taken for the last query in seconds.
get_items() -> List[Dict[str, Any]]
Retrieves a list of dictionaries with title, link, snippet, and display link for each search result.
get_promotions() -> List[Dict[str, Any]]
Retrieves a list of promotions from the last response, if available.
get_corrected_query() -> Optional[str]
Returns a spelling-corrected query if the API provides a suggestion.
get_next_page_query() -> Optional[str]
Retrieves the search terms for the next page of results if available.
get_metadata() -> Dict[str, Any]
Returns metadata from the last search context.
get_pagemap_data() -> List[Dict[str, Any]]
Retrieves page map data (metadata, images, etc.) from search results.
fetch_page(page_number: int) -> Optional[CustomSearchResponse]
Fetches a specific page of results based on the page number.
int
): The page number to fetch.CustomSearchResponse
for the specified page or None
if an error occurs.display_results()
Prints a formatted display of the search results for easy viewing in the console.
last_search_info
Property returning a dictionary with a summary of the last search results, including total results, search time, and formatted total results.
get_snippets() -> List[Tuple[str, str]]
Returns a list of tuples containing plain and HTML snippets for each result.
# Initialize the engine
search_engine = CustomSearchEngine(api_key="YOUR_API_KEY", engine_id="YOUR_ENGINE_ID")
# Perform a search
search_engine.search("machine learning")
search_engine.display_results()
# Access total results and search time
print(f"Total Results: {search_engine.get_total_results()}")
print(f"Search Time: {search_engine.get_search_time()}")
# Fetch snippets
snippets = search_engine.get_snippets()
for plain_snippet, html_snippet in snippets:
print(f"Plain Snippet: {plain_snippet}")
print(f"HTML Snippet: {html_snippet}")
This library is provided under the MIT License.
FAQs
A Python library for easily interacting with the Google Custom Search API
We found that csecraft 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
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
Research
Security News
Malicious npm package postcss-optimizer delivers BeaverTail malware, targeting developer systems; similarities to past campaigns suggest a North Korean connection.
Security News
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.