Skip to content

rickywesker/MediaSearcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Media Searcher Package

Code style: black

Multiple data-platforms supported.

MediaSearcher

🆕简介

!MS是一个利用不同API提供商(如Pixabay、Unsplash、Pexels等)获取图片和视频的Python库。它允许用户通过统一的接口搜索不同源的媒体内容,支持异步搜索以提高性能,同时为将来可能集成的本地视觉模型和基于搜索引擎+AI的检索提供了扩展性。

💡功能特性

  • 支持多个API提供商:集成了多个流行的媒体内容API,如Pixabay、Unsplash和Pexels。
  • 未来支持本地模型生成拓展 (TODO)
  • 未来支持搜索引擎+AI筛选拓展 (TODO)
  • 异步搜索:利用Python的异步能力,支持非阻塞的并发搜索。
  • 可扩展设计:采用策略模式工厂模式,易于添加新的媒体内容提供商或搜索策略。
  • 参数适配:对于不同API接受的参数差异,提供了灵活的适配器来处理。(TODO)

📖安装指南

git clone https://github.com/rickywesker/MediaSearcher.git
cd MediaSearcher
pip install -r requirements.txt

👀使用方法

使用媒体搜索客户端进行搜索的基本步骤如下:

  1. 初始化客户端:选择合适的API提供商和API密钥初始化客户端。
  2. 执行搜索:传入搜索参数,执行异步搜索操作。
  3. 处理结果:获取搜索结果并进行处理。(TODO:目前为Raw content)
from MediaSearcher import SearchClient
from dotenv import load_dotenv
import os

load_dotenv()

pixabay_params = {"provider":"pixabay","key":os.getenv("PIXABAY_KEY")}
unsplash_params = {"provider":"unsplash","key":os.getenv("UNSPLASH_KEY")}
pexels_params = {"provider":"pexels","key":os.getenv("PEXELS_KEY")}

search_cli = SearchClient(param)
#async mode
images = await search_cli.asearch(params, 'hybrid')

#sync mode
images = search_cli.search(params, 'hybrid')

📉异步同步效果比较

⚡️Hybrid Mode

Result

💻代码结构

classDiagram
    %% Interface
    class SearchStrategy {
      <<interface>>
      +search(query: dict) dict
      +asearch(query: dict) dict
    }

    %% Concrete Strategies
    class PixabayStrategy {
      +search(query: dict) dict
      +asearch(query: dict) dict
    }
    class UnsplashStrategy {
      +search(query: dict) dict
      +asearch(query: dict) dict
    }
    class PexelsStrategy {
      +search(query: dict) dict
      +asearch(query: dict) dict
    }

    %% Future Strategies
    %% Use comments to mark not yet implemented features
    class EngineBasedSearchStrategy {
      +NOT_YET_IMPLEMENTED() SearchStrategy
    }
    class ModelGeneratedSearchStrategy {
      +NOT_YET_IMPLEMENTED() SearchStrategy
    }

   

    %% Relationships
    SearchStrategy <|.. PixabayStrategy: implements
    SearchStrategy <|.. UnsplashStrategy: implements
    SearchStrategy <|.. PexelsStrategy: implements
    SearchStrategy <|.. EngineBasedSearchStrategy: Not yet implemented
    SearchStrategy <|.. ModelGeneratedSearchStrategy: Not yet implemented

Loading
classDiagram
    

    %% Abstract Factory
    class MediaServiceFactory {
      <<abstract>>
      +get_search_strategy() SearchStrategy
    }

    %% Concrete Factories
    class PixabayFactory {
      +get_search_strategy() SearchStrategy
    }
    class UnsplashFactory {
      +get_search_strategy() SearchStrategy
    }
    class PexelsFactory {
      +get_search_strategy() SearchStrategy
    }



    MediaServiceFactory <|-- PixabayFactory: extends
    MediaServiceFactory <|-- UnsplashFactory: extends
    MediaServiceFactory <|-- PexelsFactory: extends

Loading

贡献指南

欢迎对项目做出贡献!如果你有好的意见或建议,请遵循以下步骤:

  1. Fork 仓库。
  2. 创建新的分支 (git checkout -b feature/AmazingFeature)。
  3. 提交更改 (git commit -m 'Add some AmazingFeature')。
  4. 推送到分支 (git push origin feature/AmazingFeature)。
  5. 打开 Pull Request。

许可证

本项目采用MIT许可证。详情请见LICENSE文件。

致谢

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages