master
1package main
2
3import (
4 "bytes"
5 "github.com/gorilla/feeds"
6 "github.com/mmcdole/gofeed"
7 "log"
8 "os"
9 "os/exec"
10 "strings"
11 "time"
12 "fmt"
13)
14
15func main() {
16 YouTubePlaylistRSS := "https://www.youtube.com/feeds/videos.xml?playlist_id=PLiZxWe0ejyv8CSMylrxb6Nx4Ii2RHbu_j"
17 audiodir := "/var/www/audio/"
18 fp := gofeed.NewParser()
19 feed, _ := fp.ParseURL(YouTubePlaylistRSS)
20 now := time.Now()
21
22 newfeed := &feeds.AtomFeed{
23 Title: "Late Show w/ Stephen Colbert Intro Monologues",
24 Link: &feeds.AtomLink{Href: "https://www.youtube.com/channel/UCMtFAi84ehTSYSE9XoHefig"},
25 Subtitle: "Podcast version of Intro Monologues",
26 Author: &feeds.AtomAuthor{AtomPerson: feeds.AtomPerson{Name: "CBS", Email: ""}},
27 Updated: now.String(),
28 }
29
30 for _, i := range feed.Items {
31 guid := strings.Split(i.GUID, ":")
32 id := guid[len(guid)-1]
33
34 if _, err := os.Stat(audiodir + id + ".mp3"); os.IsNotExist(err) {
35 // id mp3 hasn't been downloaded
36 fmt.Println("downloading: ", id)
37 cmd := exec.Command("youtube-dl", "--extract-audio", "--audio-format", "mp3", "-o", audiodir+"%(id)s.%(ext)s", i.Link)
38 var out bytes.Buffer
39 cmd.Stdout = &out
40 err := cmd.Run()
41 if err != nil {
42 log.Fatal(err)
43 }
44 }
45 //fmt.Println("adding: ", id)
46
47 newentry := &feeds.AtomEntry{
48 Title: i.Title,
49 Id: id,
50 Link: &feeds.AtomLink{Href: "https://trustme.click/audio/" + id + ".mp3", Type: "audio/mpeg", Length: "1024", Rel: "enclosure"},
51 Updated: i.Published,
52 }
53 newfeed.Entries = append(newfeed.Entries, newentry)
54 }
55 writer, _ := os.Create("/var/www/audio/feed.xml")
56 feeds.WriteXML(newfeed, writer)
57 fmt.Println("feed update complete", now)
58
59}