Skip to content

Instantly share code, notes, and snippets.

@Horrendus
Created July 16, 2020 15:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Horrendus/287ecb53cd9e7085e43b07248f1af03e to your computer and use it in GitHub Desktop.
Save Horrendus/287ecb53cd9e7085e43b07248f1af03e to your computer and use it in GitHub Desktop.
RSSWriter
package main
import (
"encoding/xml"
"fmt"
"github.com/gorilla/feeds"
"github.com/kr/pretty"
"io/ioutil"
"log"
"net/http"
"reflect"
"time"
)
func main() {
now := time.Now()
feed := &feeds.Feed{
Title: "Golden Memories",
Link: &feeds.Link{Href: "http://stefan.derkits.at/files/"},
Description: "test test",
Author: &feeds.Author{Name: "Stefan Derkits", Email: "stefan@derkits.at"},
Created: now,
}
feed.Items = []*feeds.Item{
&feeds.Item{
Title: "Golden Memories July 6",
Link: &feeds.Link{Href: "https://stefan.derkits.at/files/Golden%20Memories%20with%20DJ%20Velvet%20_%20July.6.2020-zanjradio_golden-memories-with-dj-velvet-july62020.mp3"},
Description: "Music",
Author: &feeds.Author{Name: "Stefan Derkits", Email: "stefan@derkits.at"},
Enclosure: &feeds.Enclosure{
Url: "https://stefan.derkits.at/files/Golden%20Memories%20with%20DJ%20Velvet%20_%20July.6.2020-zanjradio_golden-memories-with-dj-velvet-july62020.mp3",
Length: "110004880",
Type: "audio/mpeg",
},
Created: now,
},
&feeds.Item{
Title: "Golden Memories June 28",
Link: &feeds.Link{Href: "https://stefan.derkits.at/files/Golden%20Memories%20with%20DJ%20Velvet%20_%20June.28.2020-zanjradio_golden-memories-with-dj-velvet-june282020.mp3"},
Description: "Music",
Author: &feeds.Author{Name: "Stefan Derkits", Email: "stefan@derkits.at"},
Enclosure: &feeds.Enclosure{
Url: "https://stefan.derkits.at/files/Golden%20Memories%20with%20DJ%20Velvet%20_%20June.28.2020-zanjradio_golden-memories-with-dj-velvet-june282020.mp3",
Length: "107308792",
Type: "audio/mpeg",
},
Created: now,
},
&feeds.Item{
Title: "Golden Memories June 21",
Link: &feeds.Link{Href: "https://stefan.derkits.at/files/Golden%20Memories%20with%20DJ%20Velvet%20_%20June..21.2020-zanjradio_golden-memories-with-dj-velvet-june212020.mp3"},
Description: "Music",
Author: &feeds.Author{Name: "Stefan Derkits", Email: "stefan@derkits.at"},
Enclosure: &feeds.Enclosure{
Url: "https://stefan.derkits.at/files/Golden%20Memories%20with%20DJ%20Velvet%20_%20June..21.2020-zanjradio_golden-memories-with-dj-velvet-june212020.mp3",
Length: "112862835",
Type: "audio/mpeg",
},
Created: now,
},
}
rss, err := feed.ToRss()
if err != nil {
log.Fatal(err)
}
fmt.Println(rss)
var xmlFeed feeds.RssFeedXml
resp, err := http.Get("https://stefan.derkits.at/files/gm_orig.rss")
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
buf, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
return
}
xml.Unmarshal(buf, &xmlFeed)
rssFeed := (&feeds.Rss{Feed: feed}).RssFeed()
if !reflect.DeepEqual(rssFeed, xmlFeed) {
diffs := pretty.Diff(feed, xmlFeed)
fmt.Println("Diff")
fmt.Println(pretty.Println(diffs))
}
item :=
&feeds.RssItem{
Title: "Golden Memories July 12",
Link: "https://stefan.derkits.at/files/Golden%20Memories%20with%20DJ%20Velvet%20_%20July.12.2020-zanjradio_golden-memories-with-dj-velvet-july122020.mp3",
Description: "Music",
Author: "Stefan Derkits (stefan@derkits.at)",
Enclosure: &feeds.RssEnclosure{
Url: "https://stefan.derkits.at/files/Golden%20Memories%20with%20DJ%20Velvet%20_%20July.12.2020-zanjradio_golden-memories-with-dj-velvet-july122020.mp3",
Length: "109717110",
Type: "audio/mpeg",
},
PubDate: "Thu, 16 Jul 2020 17:45:09 +0200",
}
xmlFeed.Channel.Items = append([]*feeds.RssItem{item}, xmlFeed.Channel.Items...)
xmlFeed.Channel.PubDate = "Thu, 16 Jul 2020 17:48:09 +0200"
println("New Feed:")
newStr, _ := feeds.ToXML(xmlFeed.Channel)
fmt.Println(newStr)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment