|
1 | 1 | module Youtube
|
2 | 2 | class Playlists < Youtube::Client
|
3 | 3 | DEFAULT_METADATA_PARSER = "Youtube::VideoMetadata"
|
| 4 | + |
4 | 5 | def all(channel_id:, title_matcher: nil)
|
5 | 6 | items = all_items("/playlists", query: {channelId: channel_id, part: "snippet,contentDetails"}).map do |metadata|
|
| 7 | + year = metadata.snippet.title.match(/\d{4}/).to_s.presence || DateTime.parse(metadata.snippet.publishedAt).year |
| 8 | + |
6 | 9 | OpenStruct.new({
|
7 | 10 | id: metadata.id,
|
8 | 11 | title: metadata.snippet.title,
|
| 12 | + location: "Earth", |
9 | 13 | description: metadata.snippet.description,
|
10 | 14 | published_at: DateTime.parse(metadata.snippet.publishedAt).to_date.to_s,
|
| 15 | + start_date: "#{year}-xx-xx", |
| 16 | + end_date: "#{year}-xx-xx", |
11 | 17 | channel_id: metadata.snippet.channelId,
|
12 |
| - year: metadata.snippet.title.match(/\d{4}/).to_s.presence || DateTime.parse(metadata.snippet.publishedAt).year, |
| 18 | + year: year, |
13 | 19 | videos_count: metadata.contentDetails.itemCount,
|
14 | 20 | metadata_parser: DEFAULT_METADATA_PARSER,
|
15 |
| - slug: metadata.snippet.title.parameterize |
| 21 | + slug: metadata.snippet.title.parameterize, |
| 22 | + banner_background: "#FF607F", |
| 23 | + featured_background: "#000000", |
| 24 | + featured_color: "#FFFFFF" |
16 | 25 | })
|
17 | 26 | end
|
18 | 27 | items = items.select { |item| item.title.match?(string_to_regex(title_matcher)) } if title_matcher
|
|
0 commit comments