malai 0e04abf4b8 feat(search): add logging, rate limiting, and genre ID support
Enhance the ITunesProvider by adding logging with detailed caller information, implementing rate limiting to prevent API abuse, and supporting genre IDs for more precise searches. Also, update the User-Agent string and improve error handling and logging throughout the search and charts functionality.
2025-03-30 00:14:24 +08:00
2025-03-29 00:03:29 +08:00
2025-03-28 22:27:08 +08:00

Podcast Search for Go

这是一个用于搜索播客和解析播客RSS订阅的Go库。支持iTunes和PodcastIndex目录以及章节和转录等新功能。

功能

  • 通过iTunes和PodcastIndex搜索播客
  • 解析播客RSS订阅
  • 获取播客剧集详情
  • 支持播客章节和转录

安装

go get github.com/amugofjava/podcast_search/golang

使用方法

搜索播客

package main

import (
	"fmt"
	"github.com/amugofjava/podcast_search/golang/search"
)

func main() {
	// 创建iTunes搜索提供者
	searchProvider := search.NewITunesProvider()
	
	// 搜索播客
	result, err := searchProvider.SearchPodcasts("golang", nil)
	if err != nil {
		fmt.Printf("搜索错误: %v\n", err)
		return
	}
	
	// 打印结果
	fmt.Printf("找到 %d 个播客\n", result.ResultCount)
	for _, item := range result.Items {
		fmt.Printf("标题: %s\n", item.Title)
		fmt.Printf("作者: %s\n", item.Author)
		fmt.Printf("Feed URL: %s\n\n", item.FeedURL)
	}
}

加载播客订阅

package main

import (
	"fmt"
	"github.com/amugofjava/podcast_search/golang/model"
)

func main() {
	// 加载播客订阅
	podcast, err := model.LoadFeed("https://feeds.simplecast.com/XA_851k3")
	if err != nil {
		fmt.Printf("加载订阅错误: %v\n", err)
		return
	}
	
	// 打印播客信息
	fmt.Printf("标题: %s\n", podcast.Title)
	fmt.Printf("描述: %s\n", podcast.Description)
	fmt.Printf("剧集数量: %d\n\n", len(podcast.Episodes))
	
	// 打印剧集信息
	for i, episode := range podcast.Episodes {
		if i >= 3 {
			break // 只显示前3个剧集
		}
		fmt.Printf("剧集: %s\n", episode.Title)
		fmt.Printf("发布日期: %s\n\n", episode.PublicationDate)
	}
}

许可证

此库使用MIT许可证。详情请参阅LICENSE文件。

Description
No description provided
Readme 116 KiB
Languages
Go 100%