init: tools and commands
Signed-off-by: HeshamTB <hishaminv@gmail.com>
This commit is contained in:
commit
a33b90c5c7
88
bouncer/bounce.go
Normal file
88
bouncer/bounce.go
Normal file
@ -0,0 +1,88 @@
|
||||
package bouncer
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"gitea.hbanafa.com/hesham/yttopodcast/ytlinkprov"
|
||||
"github.com/lrstanley/go-ytdlp"
|
||||
)
|
||||
|
||||
const CTX_LINKPROV = "linkprov"
|
||||
|
||||
type Bouncer struct {
|
||||
http.Server
|
||||
ytdlpInstall ytdlp.ResolvedInstall
|
||||
urlProvider ytlinkprov.YtLinkProvider
|
||||
}
|
||||
|
||||
func NewBouncerHTTPServer(
|
||||
ctx context.Context,
|
||||
listAddr string,
|
||||
link_prov ytlinkprov.YtLinkProvider,
|
||||
) (srv *Bouncer, err error) {
|
||||
|
||||
ytInstall, err := ytdlp.Install(
|
||||
ctx,
|
||||
&ytdlp.InstallOptions{
|
||||
AllowVersionMismatch: true,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("GET /{$}", handleGETBounce)
|
||||
|
||||
var httpHandler http.Handler = mux
|
||||
httpHandler = UrlCache(mux, link_prov)
|
||||
|
||||
return &Bouncer{
|
||||
urlProvider: link_prov,
|
||||
Server: http.Server{
|
||||
WriteTimeout: time.Second * 60,
|
||||
ReadTimeout: time.Second * 60,
|
||||
Addr: listAddr,
|
||||
Handler: httpHandler,
|
||||
},
|
||||
ytdlpInstall: *ytInstall,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func handleGETBounce(w http.ResponseWriter, r *http.Request) {
|
||||
urlProv, ok := r.Context().Value(CTX_LINKPROV).(ytlinkprov.YtLinkProvider)
|
||||
if !ok {
|
||||
fmt.Fprintf(os.Stderr, "Could not get url provider from ctx!\n")
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
id := r.URL.Query().Get("id")
|
||||
if id == "" {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
log.Printf("request for %s", id)
|
||||
// vidUrl := fmt.Sprintf("https://youtube.com/watch?v=%s", id)
|
||||
// ytCmd := ytdlp.New().ExtractAudio().GetURL()
|
||||
// ytRes, err := ytCmd.Run(r.Context(), vidUrl)
|
||||
link, err := urlProv.GetLink(id)
|
||||
if err != nil {
|
||||
_, ok := err.(*ytdlp.ErrExitCode)
|
||||
if ok {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
fmt.Fprintln(os.Stderr, err.Error())
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
w.Header().Set("Content-Type", "audio/mp3")
|
||||
http.Redirect(w, r, strings.Trim(link, "\n"), http.StatusFound)
|
||||
}
|
15
bouncer/middle.go
Normal file
15
bouncer/middle.go
Normal file
@ -0,0 +1,15 @@
|
||||
package bouncer
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
"gitea.hbanafa.com/hesham/yttopodcast/ytlinkprov"
|
||||
)
|
||||
|
||||
func UrlCache(next http.Handler, url_prov ytlinkprov.YtLinkProvider) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
rr := r.WithContext(context.WithValue(r.Context(), CTX_LINKPROV, url_prov))
|
||||
next.ServeHTTP(w, rr)
|
||||
})
|
||||
}
|
1
cmd/genfeed/.gitignore
vendored
Normal file
1
cmd/genfeed/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
genfeed
|
43
cmd/genfeed/genfeed.go
Normal file
43
cmd/genfeed/genfeed.go
Normal file
@ -0,0 +1,43 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"gitea.hbanafa.com/hesham/yttopodcast/feed"
|
||||
)
|
||||
|
||||
const (
|
||||
EXIT_ERR_BAD_CLI = 64
|
||||
)
|
||||
|
||||
var (
|
||||
chan_id = flag.String("id", "", "YouTube channel ID")
|
||||
bounc_url = flag.String("bouncer", "http://localhost:8081/?id=%s", "Bouncer url as format string")
|
||||
lang = flag.String("lang", "en", "Content Language")
|
||||
)
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
if err := validFlags(); err != nil {
|
||||
fmt.Fprintln(os.Stderr, err.Error())
|
||||
os.Exit(EXIT_ERR_BAD_CLI)
|
||||
}
|
||||
fmt.Fprintf(os.Stderr, "id: %s\nbouncer: %s\n", *chan_id, *bounc_url)
|
||||
|
||||
err := feed.ConvertYtToRss(os.Stdout, *chan_id, *bounc_url,
|
||||
feed.RSSMetadata{Languge: "en", Copyright: "N/A", Summary: "YouTube Channel as podcast"})
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func validFlags() error {
|
||||
if *chan_id == "" {
|
||||
return errors.New("flag: id flag missing")
|
||||
}
|
||||
return nil
|
||||
}
|
32
cmd/ytbouncer/ytbouncer.go
Normal file
32
cmd/ytbouncer/ytbouncer.go
Normal file
@ -0,0 +1,32 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"gitea.hbanafa.com/hesham/yttopodcast/bouncer"
|
||||
"gitea.hbanafa.com/hesham/yttopodcast/ytlinkprov"
|
||||
)
|
||||
|
||||
var listenAddr = flag.String("listen-addr", ":8081", "Address and port to listen on")
|
||||
|
||||
func main() {
|
||||
|
||||
ctx := context.Background()
|
||||
flag.Parse()
|
||||
linkProv, err := ytlinkprov.NewCachedLinkProvider(time.Minute * 30)
|
||||
|
||||
bouncer, err := bouncer.NewBouncerHTTPServer(ctx, *listenAddr, linkProv)
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, err.Error())
|
||||
}
|
||||
|
||||
fmt.Printf("Starting server on %s\n", *listenAddr)
|
||||
err = bouncer.ListenAndServe()
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, err.Error())
|
||||
}
|
||||
}
|
214
feed/feed.go
Normal file
214
feed/feed.go
Normal file
@ -0,0 +1,214 @@
|
||||
package feed
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/url"
|
||||
"strings"
|
||||
"text/template"
|
||||
"time"
|
||||
|
||||
"gitea.hbanafa.com/hesham/yttopodcast/templates"
|
||||
"github.com/mmcdole/gofeed"
|
||||
)
|
||||
|
||||
|
||||
const (
|
||||
YT_FEED_URL = "https://www.youtube.com/feeds/videos.xml?channel_id=%s"
|
||||
YT_FEED_SAM = "https://www.youtube.com/feeds/videos.xml?channel_id=UC5Uxq95L6K60XVdNPmUxoYA"
|
||||
YT_VIDEO_URL = "https://youtube.com/watch?v=%s"
|
||||
__GENERATOR_NAME = "yttopodcast - H.B."
|
||||
)
|
||||
|
||||
type RSSMetadata struct {
|
||||
Summary string
|
||||
Languge string
|
||||
Copyright string
|
||||
BounceURL string
|
||||
}
|
||||
|
||||
/* bounce_url in the format of http://domain/?id=%s */
|
||||
func ConvertYtToRss(w io.Writer, channel_id string, bounce_url string, meta RSSMetadata) error {
|
||||
|
||||
var podFeed templates.FeedData
|
||||
channelUrl := fmt.Sprintf(YT_FEED_URL, channel_id)
|
||||
feed, err := getFeed(channelUrl)
|
||||
if err != nil {
|
||||
return FeedErr(err)
|
||||
}
|
||||
|
||||
t_now := time.Now().UTC()
|
||||
podFeed.Title = feed.Title
|
||||
podFeed.Summary = meta.Summary
|
||||
podFeed.BuildDateRfcEmail = t_now.Format(time.RFC1123Z)
|
||||
podFeed.CopyRight = meta.Copyright
|
||||
podFeed.PublishDateRfcEmail = t_now.Format(time.RFC1123Z)
|
||||
podFeed.PodcastPage = feed.Link
|
||||
podFeed.Lang = meta.Languge
|
||||
podFeed.GeneratorName = __GENERATOR_NAME
|
||||
|
||||
for i, item := range feed.Items {
|
||||
|
||||
subStrings := strings.Split(item.GUID, ":")
|
||||
id := subStrings[2]
|
||||
|
||||
bounceURL, err := url.Parse(
|
||||
fmt.Sprintf(bounce_url, id),
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Check this out
|
||||
g := item.Extensions["media"]["group"]
|
||||
gg := g[len(g)-1]
|
||||
thumb := gg.Children["thumbnail"][0]
|
||||
|
||||
coverArtUrl, err := url.Parse(thumb.Attrs["url"])
|
||||
if err != nil {
|
||||
return errors.Join(err, errors.New(
|
||||
fmt.Sprintf(
|
||||
"could not parse item cover art for %s GUID: %s\n",
|
||||
item.Title,
|
||||
item.GUID,
|
||||
)))
|
||||
}
|
||||
|
||||
if i == 0 {
|
||||
podFeed.PodcastImageURL = coverArtUrl.String()
|
||||
}
|
||||
|
||||
podFeed.Items = append(podFeed.Items,
|
||||
templates.FeedItem{
|
||||
Title: item.Title,
|
||||
CoverImageURL: coverArtUrl.String(),
|
||||
Id: id,
|
||||
Duration: "0",
|
||||
PublishDateRfcEmail: item.PublishedParsed.Format(time.RFC1123Z),
|
||||
Description: "TBI",
|
||||
Length: 0,
|
||||
EnclosureURL: bounceURL.String(),
|
||||
})
|
||||
}
|
||||
|
||||
rssTemplate, err := template.New("rss").Parse(templates.RSSTemplate)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = rssTemplate.Execute(w, podFeed)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
rssResult := bytes.Buffer{}
|
||||
rssTemplate.Execute(&rssResult, podFeed)
|
||||
_, err = gofeed.NewParser().ParseString(rssResult.String())
|
||||
if err != nil {
|
||||
return FeedErr(err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func convertAtomToRSS(w io.Writer, r io.Reader, meta RSSMetadata) error {
|
||||
var podFeed templates.FeedData
|
||||
|
||||
feed, err := gofeed.NewParser().Parse(r)
|
||||
if err != nil {
|
||||
return FeedErr(err)
|
||||
}
|
||||
|
||||
t_now := time.Now().UTC()
|
||||
podFeed.Title = feed.Title
|
||||
podFeed.Summary = meta.Summary
|
||||
podFeed.BuildDateRfcEmail = t_now.Format(time.RFC1123Z)
|
||||
podFeed.CopyRight = meta.Copyright
|
||||
podFeed.PublishDateRfcEmail = t_now.Format(time.RFC1123Z)
|
||||
podFeed.PodcastPage = feed.Link
|
||||
podFeed.Lang = meta.Languge
|
||||
podFeed.GeneratorName = __GENERATOR_NAME
|
||||
|
||||
for i, item := range feed.Items {
|
||||
|
||||
subStrings := strings.Split(item.GUID, ":")
|
||||
id := subStrings[2]
|
||||
|
||||
bounceURL, err := url.Parse(
|
||||
fmt.Sprintf(meta.BounceURL, id),
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Check this out
|
||||
g := item.Extensions["media"]["group"]
|
||||
gg := g[len(g)-1]
|
||||
thumb := gg.Children["thumbnail"][0]
|
||||
|
||||
coverArtUrl, err := url.Parse(thumb.Attrs["url"])
|
||||
if err != nil {
|
||||
return errors.Join(err, errors.New(
|
||||
fmt.Sprintf(
|
||||
"could not parse item cover art for %s GUID: %s\n",
|
||||
item.Title,
|
||||
item.GUID,
|
||||
)))
|
||||
}
|
||||
|
||||
if i == 0 {
|
||||
podFeed.PodcastImageURL = coverArtUrl.String()
|
||||
}
|
||||
|
||||
podFeed.Items = append(podFeed.Items,
|
||||
templates.FeedItem{
|
||||
Title: item.Title,
|
||||
CoverImageURL: coverArtUrl.String(),
|
||||
Id: id,
|
||||
Duration: "0",
|
||||
PublishDateRfcEmail: item.PublishedParsed.Format(time.RFC1123Z),
|
||||
Description: "TBI",
|
||||
Length: 0,
|
||||
EnclosureURL: bounceURL.String(),
|
||||
})
|
||||
}
|
||||
|
||||
rssTemplate, err := template.New("rss").Parse(templates.RSSTemplate)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = rssTemplate.Execute(w, podFeed)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
rssResult := bytes.Buffer{}
|
||||
rssTemplate.Execute(&rssResult, podFeed)
|
||||
_, err = gofeed.NewParser().ParseString(rssResult.String())
|
||||
if err != nil {
|
||||
return FeedErr(err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func FeedErr(err error) error {
|
||||
httpErr, ok := err.(gofeed.HTTPError)
|
||||
if ok {
|
||||
switch httpErr.StatusCode {
|
||||
case 404:
|
||||
return errors.Join(err, errors.New("yt: could not find channel id"))
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func getFeed(url string) (*gofeed.Feed, error) {
|
||||
parser := gofeed.NewParser()
|
||||
return parser.ParseURL(url)
|
||||
}
|
||||
|
||||
|
100
feed/feed_test.go
Normal file
100
feed/feed_test.go
Normal file
@ -0,0 +1,100 @@
|
||||
package feed
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/mmcdole/gofeed"
|
||||
)
|
||||
|
||||
func TestParseYTAtom(t *testing.T) {
|
||||
fnames := []string{"a.xml", "b.xml", "c.xml"}
|
||||
for _, n := range fnames {
|
||||
nn := "testdata/" + n
|
||||
runTestYTAtom(t, nn)
|
||||
}
|
||||
}
|
||||
|
||||
func runTestYTAtom(t *testing.T, fname string) {
|
||||
t.Run(fname, func(t *testing.T) {
|
||||
|
||||
f, err := os.Open(fname)
|
||||
if err != nil {
|
||||
t.Error(err.Error())
|
||||
}
|
||||
|
||||
feed, err := io.ReadAll(f)
|
||||
if err != nil {
|
||||
t.Error(err.Error())
|
||||
}
|
||||
|
||||
parser := gofeed.NewParser()
|
||||
parser.ParseString(string(feed))
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
func TestFetchRemoteYTFeed(t *testing.T) {
|
||||
f, err := os.Open("testdata/feedlink.txt")
|
||||
if err != nil {
|
||||
t.Log(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
linkb, err := io.ReadAll(f)
|
||||
if err != nil {
|
||||
t.Log(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
link := strings.Trim(string(linkb), "\n")
|
||||
|
||||
_, err = url.Parse(link)
|
||||
if err != nil {
|
||||
t.Log(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
resp, err := http.Get(link)
|
||||
if err != nil {
|
||||
t.Log(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
_, err = gofeed.NewParser().Parse(resp.Body)
|
||||
if err != nil {
|
||||
t.Log(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestAtomToRSS(t *testing.T) {
|
||||
f, err := os.Open("testdata/a.xml")
|
||||
if err != nil {
|
||||
t.Error(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
buf := bytes.Buffer{}
|
||||
|
||||
err = convertAtomToRSS(&buf, f, RSSMetadata{BounceURL: "http://localhost:8081/q=%s"})
|
||||
if err != nil {
|
||||
t.Error(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
_, err = gofeed.NewParser().Parse(&buf)
|
||||
if err != nil {
|
||||
t.Error(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
}
|
||||
|
697
feed/testdata/a.xml
vendored
Normal file
697
feed/testdata/a.xml
vendored
Normal file
@ -0,0 +1,697 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feed xmlns:yt="http://www.youtube.com/xml/schemas/2015" xmlns:media="http://search.yahoo.com/mrss/" xmlns="http://www.w3.org/2005/Atom">
|
||||
<link rel="self" href="http://www.youtube.com/feeds/videos.xml?channel_id=UC5Uxq95L6K60XVdNPmUxoYA"/>
|
||||
<id>yt:channel:5Uxq95L6K60XVdNPmUxoYA</id>
|
||||
<yt:channelId>5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>Samito</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2016-07-10T17:00:53+00:00</published>
|
||||
<entry>
|
||||
<id>yt:video:yUiFPNeCWKw</id>
|
||||
<yt:videoId>yUiFPNeCWKw</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>OVERWATCH 2 6V6 RESPONSE VIDEO TODAY! TOP 500 RANKED - COACHING !PATREON !AD</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=yUiFPNeCWKw"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-06-05T15:59:03+00:00</published>
|
||||
<updated>2024-06-05T16:00:22+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>OVERWATCH 2 6V6 RESPONSE VIDEO TODAY! TOP 500 RANKED - COACHING !PATREON !AD</media:title>
|
||||
<media:content url="https://www.youtube.com/v/yUiFPNeCWKw?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i2.ytimg.com/vi/yUiFPNeCWKw/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
|
||||
#Overwatch2 #LiveStream #ad</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="69" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="12"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:2Pi2sVwa8Sc</id>
|
||||
<yt:videoId>2Pi2sVwa8Sc</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>OVERWATCH 2 NEW TIER LIST TODAY TOP 500 RANKED - COACHING !PATREON !AD</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=2Pi2sVwa8Sc"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-06-04T21:21:11+00:00</published>
|
||||
<updated>2024-06-05T07:54:54+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>OVERWATCH 2 NEW TIER LIST TODAY TOP 500 RANKED - COACHING !PATREON !AD</media:title>
|
||||
<media:content url="https://www.youtube.com/v/2Pi2sVwa8Sc?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i3.ytimg.com/vi/2Pi2sVwa8Sc/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
|
||||
#Overwatch2 #LiveStream #ad</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="239" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="10926"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:80sv9fU3_wo</id>
|
||||
<yt:videoId>80sv9fU3_wo</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>OVERWATCH 2 TOP 500 COACHING & RANKED - !PATREON !AD</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=80sv9fU3_wo"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-06-03T18:09:28+00:00</published>
|
||||
<updated>2024-06-04T18:27:58+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>OVERWATCH 2 TOP 500 COACHING & RANKED - !PATREON !AD</media:title>
|
||||
<media:content url="https://www.youtube.com/v/80sv9fU3_wo?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i1.ytimg.com/vi/80sv9fU3_wo/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
|
||||
#Overwatch2 #LiveStream #ad</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="210" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="9099"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:8UwTveGCrOQ</id>
|
||||
<yt:videoId>8UwTveGCrOQ</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>The DEVS Have DELETED Hanzo in Overwatch 2 (I'm pissed)</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=8UwTveGCrOQ"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-06-01T16:40:13+00:00</published>
|
||||
<updated>2024-06-03T05:04:21+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>The DEVS Have DELETED Hanzo in Overwatch 2 (I'm pissed)</media:title>
|
||||
<media:content url="https://www.youtube.com/v/8UwTveGCrOQ?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i1.ytimg.com/vi/8UwTveGCrOQ/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Check out Patreon for coaching and community!!! https://www.patreon.com/samito27/membership
|
||||
|
||||
Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
https://twitter.com/senzeehpai
|
||||
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="2123" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="35899"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:jiD_futRl7M</id>
|
||||
<yt:videoId>jiD_futRl7M</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>OVERWATCH 2 LEARNING NEW PHARAH DAY 3 OP HERO !PATREON !AD</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=jiD_futRl7M"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-31T20:14:37+00:00</published>
|
||||
<updated>2024-06-02T09:35:50+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>OVERWATCH 2 LEARNING NEW PHARAH DAY 3 OP HERO !PATREON !AD</media:title>
|
||||
<media:content url="https://www.youtube.com/v/jiD_futRl7M?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i3.ytimg.com/vi/jiD_futRl7M/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
|
||||
#Overwatch2 #LiveStream #ad</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="205" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="11751"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:Grr3dX1NX8U</id>
|
||||
<yt:videoId>Grr3dX1NX8U</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>Actual Solutions to 5v5 and 6v6 in Overwatch 2 - (with Spilo)</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=Grr3dX1NX8U"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-30T21:16:25+00:00</published>
|
||||
<updated>2024-06-05T01:56:26+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Actual Solutions to 5v5 and 6v6 in Overwatch 2 - (with Spilo)</media:title>
|
||||
<media:content url="https://www.youtube.com/v/Grr3dX1NX8U?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i4.ytimg.com/vi/Grr3dX1NX8U/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Check out @StormcrowProductions
|
||||
|
||||
Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="1860" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="38301"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:NAT9jggf1Q8</id>
|
||||
<yt:videoId>NAT9jggf1Q8</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>OVERWATCH 2 LEARNING NEW PHARAH DAY 2 !PATREON !AD</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=NAT9jggf1Q8"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-30T19:29:02+00:00</published>
|
||||
<updated>2024-06-04T22:08:58+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>OVERWATCH 2 LEARNING NEW PHARAH DAY 2 !PATREON !AD</media:title>
|
||||
<media:content url="https://www.youtube.com/v/NAT9jggf1Q8?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i3.ytimg.com/vi/NAT9jggf1Q8/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>🚀 Install Star Trek Fleet Command for FREE now https://t2m.io/STFC_Samito and enter the promo code WARPSPEED to unlock 10 Epic Shards of Kirk, enhancing your command instantly!
|
||||
|
||||
Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
|
||||
#Overwatch2 #LiveStream #ad</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="175" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="9848"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:l7X8x8Ec8tE</id>
|
||||
<yt:videoId>l7X8x8Ec8tE</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>OVERWATCH 2 LEARNING NEW PHARAH DAY 1 !PATREON !AD</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=l7X8x8Ec8tE"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-29T19:19:48+00:00</published>
|
||||
<updated>2024-06-01T04:51:56+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>OVERWATCH 2 LEARNING NEW PHARAH DAY 1 !PATREON !AD</media:title>
|
||||
<media:content url="https://www.youtube.com/v/l7X8x8Ec8tE?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i1.ytimg.com/vi/l7X8x8Ec8tE/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>🚀 Install Star Trek Fleet Command for FREE now https://t2m.io/STFC_Samito and enter the promo code WARPSPEED to unlock 10 Epic Shards of Kirk, enhancing your command instantly!
|
||||
|
||||
Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
|
||||
#Overwatch2 #LiveStream #ad</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="198" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="9976"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:ksze1pinp78</id>
|
||||
<yt:videoId>ksze1pinp78</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>PLAT Support Needs a Reality Check - COACH ROASTS STUDENT | Overwatch 2</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=ksze1pinp78"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-29T14:40:08+00:00</published>
|
||||
<updated>2024-06-01T02:19:56+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>PLAT Support Needs a Reality Check - COACH ROASTS STUDENT | Overwatch 2</media:title>
|
||||
<media:content url="https://www.youtube.com/v/ksze1pinp78?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i4.ytimg.com/vi/ksze1pinp78/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Check out Patreon for coaching and community!!! https://www.patreon.com/samito27/membership
|
||||
|
||||
Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
https://twitter.com/senzeehpai
|
||||
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="754" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="17366"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:uqkGZpJpCq8</id>
|
||||
<yt:videoId>uqkGZpJpCq8</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>When you need to convince the homie to download a new game</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=uqkGZpJpCq8"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-29T13:45:04+00:00</published>
|
||||
<updated>2024-06-01T21:42:26+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>When you need to convince the homie to download a new game</media:title>
|
||||
<media:content url="https://www.youtube.com/v/uqkGZpJpCq8?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i2.ytimg.com/vi/uqkGZpJpCq8/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
https://twitter.com/senzeehpai
|
||||
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="276" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="4617"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:vmq1ZpCKoCg</id>
|
||||
<yt:videoId>vmq1ZpCKoCg</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>Here's Why Marvel Rivals Changes Everything</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=vmq1ZpCKoCg"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-28T16:29:53+00:00</published>
|
||||
<updated>2024-06-01T21:47:38+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Here's Why Marvel Rivals Changes Everything</media:title>
|
||||
<media:content url="https://www.youtube.com/v/vmq1ZpCKoCg?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i3.ytimg.com/vi/vmq1ZpCKoCg/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>For PRIVATE 6v6 Scrim Server Access - https://www.patreon.com/samito27/membership
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Check out! Sprixy
|
||||
https://youtu.be/GQHS9bD_IvQ?si=rsIYq5QjHnC4VywJ
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
Shadin
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="1139" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="18967"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:23Fj9HaXqEA</id>
|
||||
<yt:videoId>23Fj9HaXqEA</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>Support Mains are BOOSTED</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=23Fj9HaXqEA"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-28T13:45:00+00:00</published>
|
||||
<updated>2024-06-03T01:36:39+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Support Mains are BOOSTED</media:title>
|
||||
<media:content url="https://www.youtube.com/v/23Fj9HaXqEA?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i3.ytimg.com/vi/23Fj9HaXqEA/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
https://twitter.com/senzeehpai
|
||||
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="437" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="9305"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:IYGs54YQw9s</id>
|
||||
<yt:videoId>IYGs54YQw9s</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>Samito Might be a Little Mad</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=IYGs54YQw9s"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-27T13:00:13+00:00</published>
|
||||
<updated>2024-05-29T11:02:38+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Samito Might be a Little Mad</media:title>
|
||||
<media:content url="https://www.youtube.com/v/IYGs54YQw9s?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i2.ytimg.com/vi/IYGs54YQw9s/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
https://twitter.com/senzeehpai
|
||||
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="740" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="10119"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:KF6FDX8ju9U</id>
|
||||
<yt:videoId>KF6FDX8ju9U</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>It's Time to STOP the Overwatch Shill Accusations (kinda)</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=KF6FDX8ju9U"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-26T17:46:29+00:00</published>
|
||||
<updated>2024-05-29T15:10:12+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>It's Time to STOP the Overwatch Shill Accusations (kinda)</media:title>
|
||||
<media:content url="https://www.youtube.com/v/KF6FDX8ju9U?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i4.ytimg.com/vi/KF6FDX8ju9U/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Check out @GSRaider
|
||||
|
||||
Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
https://twitter.com/senzeehpai
|
||||
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="2559" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="46451"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:eWpanQXLPTY</id>
|
||||
<yt:videoId>eWpanQXLPTY</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>OVERWATCH 2 NEW TANK CHANGES FUN ROLE!! Star Trek Fleet Command Later !AD !PATREON</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=eWpanQXLPTY"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-25T21:00:39+00:00</published>
|
||||
<updated>2024-05-31T22:17:49+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>OVERWATCH 2 NEW TANK CHANGES FUN ROLE!! Star Trek Fleet Command Later !AD !PATREON</media:title>
|
||||
<media:content url="https://www.youtube.com/v/eWpanQXLPTY?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i2.ytimg.com/vi/eWpanQXLPTY/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>🚀 Install Star Trek Fleet Command for FREE now https://t2m.io/STFC_Samito and enter the promo code WARPSPEED to unlock 10 Epic Shards of Kirk, enhancing your command instantly!
|
||||
|
||||
Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
|
||||
#Overwatch2 #LiveStream #ad</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="213" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="9783"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
</feed>
|
697
feed/testdata/b.xml
vendored
Normal file
697
feed/testdata/b.xml
vendored
Normal file
@ -0,0 +1,697 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feed xmlns:yt="http://www.youtube.com/xml/schemas/2015" xmlns:media="http://search.yahoo.com/mrss/" xmlns="http://www.w3.org/2005/Atom">
|
||||
<link rel="self" href="http://www.youtube.com/feeds/videos.xml?channel_id=UC5Uxq95L6K60XVdNPmUxoYA"/>
|
||||
<id>yt:channel:5Uxq95L6K60XVdNPmUxoYA</id>
|
||||
<yt:channelId>5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>Samito</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2016-07-10T17:00:53+00:00</published>
|
||||
<entry>
|
||||
<id>yt:video:yUiFPNeCWKw</id>
|
||||
<yt:videoId>yUiFPNeCWKw</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>OVERWATCH 2 6V6 RESPONSE VIDEO TODAY! TOP 500 RANKED - COACHING !PATREON !AD</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=yUiFPNeCWKw"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-06-05T15:59:03+00:00</published>
|
||||
<updated>2024-06-05T16:00:22+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>OVERWATCH 2 6V6 RESPONSE VIDEO TODAY! TOP 500 RANKED - COACHING !PATREON !AD</media:title>
|
||||
<media:content url="https://www.youtube.com/v/yUiFPNeCWKw?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i2.ytimg.com/vi/yUiFPNeCWKw/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
|
||||
#Overwatch2 #LiveStream #ad</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="69" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="12"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:2Pi2sVwa8Sc</id>
|
||||
<yt:videoId>2Pi2sVwa8Sc</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>OVERWATCH 2 NEW TIER LIST TODAY TOP 500 RANKED - COACHING !PATREON !AD</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=2Pi2sVwa8Sc"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-06-04T21:21:11+00:00</published>
|
||||
<updated>2024-06-05T07:54:54+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>OVERWATCH 2 NEW TIER LIST TODAY TOP 500 RANKED - COACHING !PATREON !AD</media:title>
|
||||
<media:content url="https://www.youtube.com/v/2Pi2sVwa8Sc?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i3.ytimg.com/vi/2Pi2sVwa8Sc/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
|
||||
#Overwatch2 #LiveStream #ad</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="239" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="10926"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:80sv9fU3_wo</id>
|
||||
<yt:videoId>80sv9fU3_wo</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>OVERWATCH 2 TOP 500 COACHING & RANKED - !PATREON !AD</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=80sv9fU3_wo"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-06-03T18:09:28+00:00</published>
|
||||
<updated>2024-06-04T18:27:58+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>OVERWATCH 2 TOP 500 COACHING & RANKED - !PATREON !AD</media:title>
|
||||
<media:content url="https://www.youtube.com/v/80sv9fU3_wo?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i1.ytimg.com/vi/80sv9fU3_wo/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
|
||||
#Overwatch2 #LiveStream #ad</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="210" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="9099"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:8UwTveGCrOQ</id>
|
||||
<yt:videoId>8UwTveGCrOQ</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>The DEVS Have DELETED Hanzo in Overwatch 2 (I'm pissed)</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=8UwTveGCrOQ"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-06-01T16:40:13+00:00</published>
|
||||
<updated>2024-06-03T05:04:21+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>The DEVS Have DELETED Hanzo in Overwatch 2 (I'm pissed)</media:title>
|
||||
<media:content url="https://www.youtube.com/v/8UwTveGCrOQ?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i1.ytimg.com/vi/8UwTveGCrOQ/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Check out Patreon for coaching and community!!! https://www.patreon.com/samito27/membership
|
||||
|
||||
Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
https://twitter.com/senzeehpai
|
||||
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="2123" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="35899"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:jiD_futRl7M</id>
|
||||
<yt:videoId>jiD_futRl7M</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>OVERWATCH 2 LEARNING NEW PHARAH DAY 3 OP HERO !PATREON !AD</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=jiD_futRl7M"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-31T20:14:37+00:00</published>
|
||||
<updated>2024-06-02T09:35:50+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>OVERWATCH 2 LEARNING NEW PHARAH DAY 3 OP HERO !PATREON !AD</media:title>
|
||||
<media:content url="https://www.youtube.com/v/jiD_futRl7M?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i3.ytimg.com/vi/jiD_futRl7M/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
|
||||
#Overwatch2 #LiveStream #ad</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="205" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="11751"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:Grr3dX1NX8U</id>
|
||||
<yt:videoId>Grr3dX1NX8U</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>Actual Solutions to 5v5 and 6v6 in Overwatch 2 - (with Spilo)</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=Grr3dX1NX8U"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-30T21:16:25+00:00</published>
|
||||
<updated>2024-06-05T01:56:26+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Actual Solutions to 5v5 and 6v6 in Overwatch 2 - (with Spilo)</media:title>
|
||||
<media:content url="https://www.youtube.com/v/Grr3dX1NX8U?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i4.ytimg.com/vi/Grr3dX1NX8U/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Check out @StormcrowProductions
|
||||
|
||||
Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="1860" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="38301"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:NAT9jggf1Q8</id>
|
||||
<yt:videoId>NAT9jggf1Q8</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>OVERWATCH 2 LEARNING NEW PHARAH DAY 2 !PATREON !AD</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=NAT9jggf1Q8"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-30T19:29:02+00:00</published>
|
||||
<updated>2024-06-04T22:08:58+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>OVERWATCH 2 LEARNING NEW PHARAH DAY 2 !PATREON !AD</media:title>
|
||||
<media:content url="https://www.youtube.com/v/NAT9jggf1Q8?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i3.ytimg.com/vi/NAT9jggf1Q8/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>🚀 Install Star Trek Fleet Command for FREE now https://t2m.io/STFC_Samito and enter the promo code WARPSPEED to unlock 10 Epic Shards of Kirk, enhancing your command instantly!
|
||||
|
||||
Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
|
||||
#Overwatch2 #LiveStream #ad</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="175" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="9848"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:l7X8x8Ec8tE</id>
|
||||
<yt:videoId>l7X8x8Ec8tE</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>OVERWATCH 2 LEARNING NEW PHARAH DAY 1 !PATREON !AD</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=l7X8x8Ec8tE"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-29T19:19:48+00:00</published>
|
||||
<updated>2024-06-01T04:51:56+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>OVERWATCH 2 LEARNING NEW PHARAH DAY 1 !PATREON !AD</media:title>
|
||||
<media:content url="https://www.youtube.com/v/l7X8x8Ec8tE?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i1.ytimg.com/vi/l7X8x8Ec8tE/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>🚀 Install Star Trek Fleet Command for FREE now https://t2m.io/STFC_Samito and enter the promo code WARPSPEED to unlock 10 Epic Shards of Kirk, enhancing your command instantly!
|
||||
|
||||
Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
|
||||
#Overwatch2 #LiveStream #ad</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="198" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="9976"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:ksze1pinp78</id>
|
||||
<yt:videoId>ksze1pinp78</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>PLAT Support Needs a Reality Check - COACH ROASTS STUDENT | Overwatch 2</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=ksze1pinp78"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-29T14:40:08+00:00</published>
|
||||
<updated>2024-06-01T02:19:56+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>PLAT Support Needs a Reality Check - COACH ROASTS STUDENT | Overwatch 2</media:title>
|
||||
<media:content url="https://www.youtube.com/v/ksze1pinp78?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i4.ytimg.com/vi/ksze1pinp78/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Check out Patreon for coaching and community!!! https://www.patreon.com/samito27/membership
|
||||
|
||||
Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
https://twitter.com/senzeehpai
|
||||
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="754" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="17366"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:uqkGZpJpCq8</id>
|
||||
<yt:videoId>uqkGZpJpCq8</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>When you need to convince the homie to download a new game</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=uqkGZpJpCq8"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-29T13:45:04+00:00</published>
|
||||
<updated>2024-06-01T21:42:26+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>When you need to convince the homie to download a new game</media:title>
|
||||
<media:content url="https://www.youtube.com/v/uqkGZpJpCq8?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i2.ytimg.com/vi/uqkGZpJpCq8/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
https://twitter.com/senzeehpai
|
||||
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="276" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="4617"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:vmq1ZpCKoCg</id>
|
||||
<yt:videoId>vmq1ZpCKoCg</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>Here's Why Marvel Rivals Changes Everything</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=vmq1ZpCKoCg"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-28T16:29:53+00:00</published>
|
||||
<updated>2024-06-01T21:47:38+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Here's Why Marvel Rivals Changes Everything</media:title>
|
||||
<media:content url="https://www.youtube.com/v/vmq1ZpCKoCg?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i3.ytimg.com/vi/vmq1ZpCKoCg/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>For PRIVATE 6v6 Scrim Server Access - https://www.patreon.com/samito27/membership
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Check out! Sprixy
|
||||
https://youtu.be/GQHS9bD_IvQ?si=rsIYq5QjHnC4VywJ
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
Shadin
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="1139" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="18967"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:23Fj9HaXqEA</id>
|
||||
<yt:videoId>23Fj9HaXqEA</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>Support Mains are BOOSTED</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=23Fj9HaXqEA"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-28T13:45:00+00:00</published>
|
||||
<updated>2024-06-03T01:36:39+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Support Mains are BOOSTED</media:title>
|
||||
<media:content url="https://www.youtube.com/v/23Fj9HaXqEA?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i3.ytimg.com/vi/23Fj9HaXqEA/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
https://twitter.com/senzeehpai
|
||||
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="437" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="9305"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:IYGs54YQw9s</id>
|
||||
<yt:videoId>IYGs54YQw9s</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>Samito Might be a Little Mad</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=IYGs54YQw9s"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-27T13:00:13+00:00</published>
|
||||
<updated>2024-05-29T11:02:38+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Samito Might be a Little Mad</media:title>
|
||||
<media:content url="https://www.youtube.com/v/IYGs54YQw9s?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i2.ytimg.com/vi/IYGs54YQw9s/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
https://twitter.com/senzeehpai
|
||||
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="740" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="10119"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:KF6FDX8ju9U</id>
|
||||
<yt:videoId>KF6FDX8ju9U</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>It's Time to STOP the Overwatch Shill Accusations (kinda)</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=KF6FDX8ju9U"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-26T17:46:29+00:00</published>
|
||||
<updated>2024-05-29T15:10:12+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>It's Time to STOP the Overwatch Shill Accusations (kinda)</media:title>
|
||||
<media:content url="https://www.youtube.com/v/KF6FDX8ju9U?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i4.ytimg.com/vi/KF6FDX8ju9U/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>Check out @GSRaider
|
||||
|
||||
Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
Edited by:
|
||||
https://twitter.com/senzeehpai
|
||||
|
||||
|
||||
#Overwatch</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="2559" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="46451"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:eWpanQXLPTY</id>
|
||||
<yt:videoId>eWpanQXLPTY</yt:videoId>
|
||||
<yt:channelId>UC5Uxq95L6K60XVdNPmUxoYA</yt:channelId>
|
||||
<title>OVERWATCH 2 NEW TANK CHANGES FUN ROLE!! Star Trek Fleet Command Later !AD !PATREON</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=eWpanQXLPTY"/>
|
||||
<author>
|
||||
<name>Samito</name>
|
||||
<uri>https://www.youtube.com/channel/UC5Uxq95L6K60XVdNPmUxoYA</uri>
|
||||
</author>
|
||||
<published>2024-05-25T21:00:39+00:00</published>
|
||||
<updated>2024-05-31T22:17:49+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>OVERWATCH 2 NEW TANK CHANGES FUN ROLE!! Star Trek Fleet Command Later !AD !PATREON</media:title>
|
||||
<media:content url="https://www.youtube.com/v/eWpanQXLPTY?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i2.ytimg.com/vi/eWpanQXLPTY/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>🚀 Install Star Trek Fleet Command for FREE now https://t2m.io/STFC_Samito and enter the promo code WARPSPEED to unlock 10 Epic Shards of Kirk, enhancing your command instantly!
|
||||
|
||||
Leave a like if you enjoyed & subscribe for more: http://bit.ly/2ttxnC0
|
||||
|
||||
Business inquiries ONLY (Private coaching is not a business inquiry!):
|
||||
samito@loadscreen.gg
|
||||
|
||||
Stream Schedule:
|
||||
Mon-Friday @ 11 AM EST ON THIS CHANNEL!
|
||||
|
||||
Follow me on Twitter:
|
||||
https://www.twitter.com/SamitoFPS
|
||||
|
||||
|
||||
Join my discord!
|
||||
https://discord.gg/f6spsMA
|
||||
|
||||
|
||||
Twitch:
|
||||
https://twitch.tv/SamitoFPS
|
||||
|
||||
|
||||
#Overwatch2 #LiveStream #ad</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="213" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="9783"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
</feed>
|
491
feed/testdata/c.xml
vendored
Normal file
491
feed/testdata/c.xml
vendored
Normal file
@ -0,0 +1,491 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feed xmlns:yt="http://www.youtube.com/xml/schemas/2015" xmlns:media="http://search.yahoo.com/mrss/" xmlns="http://www.w3.org/2005/Atom">
|
||||
<link rel="self" href="http://www.youtube.com/feeds/videos.xml?channel_id=UCX6OQ3DkcsbYNE6H8uQQuVA"/>
|
||||
<id>yt:channel:X6OQ3DkcsbYNE6H8uQQuVA</id>
|
||||
<yt:channelId>X6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>MrBeast</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2012-02-20T00:43:50+00:00</published>
|
||||
<entry>
|
||||
<id>yt:video:U_LlX4t0A9I</id>
|
||||
<yt:videoId>U_LlX4t0A9I</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>$10,000 Every Day You Survive In The Wilderness</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=U_LlX4t0A9I"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-06-01T16:00:00+00:00</published>
|
||||
<updated>2024-06-05T16:22:24+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>$10,000 Every Day You Survive In The Wilderness</media:title>
|
||||
<media:content url="https://www.youtube.com/v/U_LlX4t0A9I?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i2.ytimg.com/vi/U_LlX4t0A9I/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>They survived longer than I expected lol
|
||||
Feast like a Beast with Zaxby’s new MrBeast Box, served with 4 Chicken Fingerz™, cheddar bites, fries, double Texas toast, two signature sauces, small drink…and a milk chocolate FEASTABLES BAR! Now available at Zaxby's for a limited time. Order today: https://www.zaxbys.com/mrbeast
|
||||
|
||||
Want to check out the Galaxy S24? Head over to Samsung https://smsng.us/MrBS24
|
||||
|
||||
Please make sure you have an email address on your profile!
|
||||
We will be reaching out from giveaway@mrbeastbusiness.com if you are selected as a winner!
|
||||
|
||||
New Merch - https://mrbeast.store
|
||||
|
||||
Check out Viewstats! - https://www.viewstats.com/
|
||||
|
||||
SUBSCRIBE OR I TAKE YOUR DOG
|
||||
╔═╦╗╔╦╗╔═╦═╦╦╦╦╗╔═╗
|
||||
║╚╣║║║╚╣╚╣╔╣╔╣║╚╣═╣
|
||||
╠╗║╚╝║║╠╗║╚╣║║║║║═╣
|
||||
╚═╩══╩═╩═╩═╩╝╚╩═╩═╝
|
||||
|
||||
For any questions or inquiries regarding this video, please reach out to chucky@mrbeastbusiness.com
|
||||
|
||||
Music Provided by https://www.extrememusic.com
|
||||
|
||||
----------------------------------------------------------------
|
||||
follow all of these or i will kick you
|
||||
• Facebook - https://www.facebook.com/MrBeast6000/
|
||||
• Twitter - https://twitter.com/MrBeast
|
||||
• Instagram - https://www.instagram.com/mrbeast
|
||||
• Im Hiring! - https://www.mrbeastjobs.com/
|
||||
--------------------------------------------------------------------</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="4734837" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="80244665"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:T8I165Qxeo8</id>
|
||||
<yt:videoId>T8I165Qxeo8</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>Sprinting with More and More Money</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=T8I165Qxeo8"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-05-30T16:00:01+00:00</published>
|
||||
<updated>2024-06-05T16:20:45+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Sprinting with More and More Money</media:title>
|
||||
<media:content url="https://www.youtube.com/v/T8I165Qxeo8?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i1.ytimg.com/vi/T8I165Qxeo8/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description></media:description>
|
||||
<media:community>
|
||||
<media:starRating count="6128945" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="129130378"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:i-9V21MqlhY</id>
|
||||
<yt:videoId>i-9V21MqlhY</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>Giving 1000 Phones Away</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=i-9V21MqlhY"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-05-28T16:00:00+00:00</published>
|
||||
<updated>2024-06-04T10:10:03+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Giving 1000 Phones Away</media:title>
|
||||
<media:content url="https://www.youtube.com/v/i-9V21MqlhY?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i2.ytimg.com/vi/i-9V21MqlhY/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description></media:description>
|
||||
<media:community>
|
||||
<media:starRating count="6171546" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="75948504"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:f0cXJ6mJxGc</id>
|
||||
<yt:videoId>f0cXJ6mJxGc</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>Bottle Head Smashing World Record Attempt!</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=f0cXJ6mJxGc"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-05-14T16:00:00+00:00</published>
|
||||
<updated>2024-05-31T18:41:15+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Bottle Head Smashing World Record Attempt!</media:title>
|
||||
<media:content url="https://www.youtube.com/v/f0cXJ6mJxGc?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i3.ytimg.com/vi/f0cXJ6mJxGc/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description></media:description>
|
||||
<media:community>
|
||||
<media:starRating count="5355465" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="136052940"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:F6PqxbvOCUI</id>
|
||||
<yt:videoId>F6PqxbvOCUI</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>Protect The Yacht, Keep It!</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=F6PqxbvOCUI"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-05-11T16:00:00+00:00</published>
|
||||
<updated>2024-05-17T01:09:30+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Protect The Yacht, Keep It!</media:title>
|
||||
<media:content url="https://www.youtube.com/v/F6PqxbvOCUI?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i3.ytimg.com/vi/F6PqxbvOCUI/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>This video did not go how I expected it to
|
||||
Craft your perfect defense from a combination of powerful Monkey Towers and awesome Heroes, then pop every last invading Bloon! Grab your copy of Bloons TD 6 now - https://ninja.kiwi/mrbeast
|
||||
|
||||
Play the Official Fortnite Creative Map For This Video Here:
|
||||
MrBeast Bed Wars 🛌 - 5948-5884-5269
|
||||
https://www.fortnite.com/@mrbeast/5948-5884-5269
|
||||
|
||||
New Merch - https://mrbeast.store
|
||||
|
||||
Check out Viewstats! - https://www.viewstats.com/
|
||||
|
||||
SUBSCRIBE OR I TAKE YOUR DOG
|
||||
╔═╦╗╔╦╗╔═╦═╦╦╦╦╗╔═╗
|
||||
║╚╣║║║╚╣╚╣╔╣╔╣║╚╣═╣
|
||||
╠╗║╚╝║║╠╗║╚╣║║║║║═╣
|
||||
╚═╩══╩═╩═╩═╩╝╚╩═╩═╝
|
||||
|
||||
For any questions or inquiries regarding this video, please reach out to chucky@mrbeastbusiness.com
|
||||
|
||||
Music Provided by https://www.extrememusic.com
|
||||
|
||||
----------------------------------------------------------------
|
||||
follow all of these or i will kick you
|
||||
• Facebook - https://www.facebook.com/MrBeast6000/
|
||||
• Twitter - https://twitter.com/MrBeast
|
||||
• Instagram - https://www.instagram.com/mrbeast
|
||||
• Im Hiring! - https://www.mrbeastjobs.com/
|
||||
--------------------------------------------------------------------</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="3486893" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="99467812"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:oA4LSZvX4iE</id>
|
||||
<yt:videoId>oA4LSZvX4iE</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>Ages 1-100 Try My Chocolate</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=oA4LSZvX4iE"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-05-09T16:00:00+00:00</published>
|
||||
<updated>2024-05-18T22:48:01+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Ages 1-100 Try My Chocolate</media:title>
|
||||
<media:content url="https://www.youtube.com/v/oA4LSZvX4iE?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i4.ytimg.com/vi/oA4LSZvX4iE/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description></media:description>
|
||||
<media:community>
|
||||
<media:starRating count="4291634" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="77466474"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:ZKxnjszkZto</id>
|
||||
<yt:videoId>ZKxnjszkZto</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>Spot The Hidden People For $10,000</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=ZKxnjszkZto"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-05-08T16:00:01+00:00</published>
|
||||
<updated>2024-05-25T01:59:55+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Spot The Hidden People For $10,000</media:title>
|
||||
<media:content url="https://www.youtube.com/v/ZKxnjszkZto?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i3.ytimg.com/vi/ZKxnjszkZto/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description></media:description>
|
||||
<media:community>
|
||||
<media:starRating count="3311833" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="85863073"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:8_gdcaX9Xqk</id>
|
||||
<yt:videoId>8_gdcaX9Xqk</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>Would You Split Or Steal $250,000?</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=8_gdcaX9Xqk"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-05-03T16:00:00+00:00</published>
|
||||
<updated>2024-05-08T21:04:20+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Would You Split Or Steal $250,000?</media:title>
|
||||
<media:content url="https://www.youtube.com/v/8_gdcaX9Xqk?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i1.ytimg.com/vi/8_gdcaX9Xqk/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description></media:description>
|
||||
<media:community>
|
||||
<media:starRating count="4952485" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="60912629"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:Pv0iVoSZzN8</id>
|
||||
<yt:videoId>Pv0iVoSZzN8</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>In 10 Minutes This Room Will Explode!</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=Pv0iVoSZzN8"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-04-27T16:00:00+00:00</published>
|
||||
<updated>2024-05-22T15:56:00+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>In 10 Minutes This Room Will Explode!</media:title>
|
||||
<media:content url="https://www.youtube.com/v/Pv0iVoSZzN8?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i1.ytimg.com/vi/Pv0iVoSZzN8/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>I didn’t expect that to happen…
|
||||
There’s no jumping through hoops (or plate glass windows) with T-Mobile. Customers can get Magenta Status from day one, including hotel discounts on select brands, deals on rental cars, discounts on select concert tickets nationwide, and so much more. See how at https://t-mobile.com/status
|
||||
|
||||
New Merch - https://mrbeast.store
|
||||
|
||||
Check out Viewstats! - https://www.viewstats.com/
|
||||
|
||||
SUBSCRIBE OR I TAKE YOUR DOG
|
||||
╔═╦╗╔╦╗╔═╦═╦╦╦╦╗╔═╗
|
||||
║╚╣║║║╚╣╚╣╔╣╔╣║╚╣═╣
|
||||
╠╗║╚╝║║╠╗║╚╣║║║║║═╣
|
||||
╚═╩══╩═╩═╩═╩╝╚╩═╩═╝
|
||||
|
||||
For any questions or inquiries regarding this video, please reach out to chucky@mrbeastbusiness.com
|
||||
|
||||
Music Provided by https://www.extrememusic.com
|
||||
|
||||
----------------------------------------------------------------
|
||||
follow all of these or i will kick you
|
||||
• Facebook - https://www.facebook.com/MrBeast6000/
|
||||
• Twitter - https://twitter.com/MrBeast
|
||||
• Instagram - https://www.instagram.com/mrbeast
|
||||
• Im Hiring! - https://www.mrbeastjobs.com/
|
||||
--------------------------------------------------------------------</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="3673894" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="99751852"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:CWbV3NItSdY</id>
|
||||
<yt:videoId>CWbV3NItSdY</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>The World's Fastest Cleaners</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=CWbV3NItSdY"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-04-25T16:00:03+00:00</published>
|
||||
<updated>2024-05-30T02:48:16+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>The World's Fastest Cleaners</media:title>
|
||||
<media:content url="https://www.youtube.com/v/CWbV3NItSdY?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i4.ytimg.com/vi/CWbV3NItSdY/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description></media:description>
|
||||
<media:community>
|
||||
<media:starRating count="12469917" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="243873329"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:l-nMKJ5J3Uc</id>
|
||||
<yt:videoId>l-nMKJ5J3Uc</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>Ages 1 - 100 Decide Who Wins $250,000</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=l-nMKJ5J3Uc"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-04-20T15:59:59+00:00</published>
|
||||
<updated>2024-05-21T18:41:00+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Ages 1 - 100 Decide Who Wins $250,000</media:title>
|
||||
<media:content url="https://www.youtube.com/v/l-nMKJ5J3Uc?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i1.ytimg.com/vi/l-nMKJ5J3Uc/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>I can’t believe who they picked
|
||||
Thanks Top Troops for sponsoring this video. Download Top Troops at https://toptroops.onelink.me/JHnC/mrbeast or scan the QR code to get a FREE special Starter Pack for a limited time
|
||||
|
||||
Thanks Samsung for the Tab S9s - the Galaxy AI features are cool too: https://smsng.us/MrBTabS9
|
||||
|
||||
New Merch - https://mrbeast.store
|
||||
|
||||
Check out Viewstats! - https://www.viewstats.com/
|
||||
|
||||
SUBSCRIBE OR I TAKE YOUR DOG
|
||||
╔═╦╗╔╦╗╔═╦═╦╦╦╦╗╔═╗
|
||||
║╚╣║║║╚╣╚╣╔╣╔╣║╚╣═╣
|
||||
╠╗║╚╝║║╠╗║╚╣║║║║║═╣
|
||||
╚═╩══╩═╩═╩═╩╝╚╩═╩═╝
|
||||
|
||||
For any questions or inquiries regarding this video, please reach out to chucky@mrbeastbusiness.com
|
||||
|
||||
Also thank you Concept Pixel for the LED Walls,it looked great!
|
||||
www.conceptpixels.com
|
||||
|
||||
Music Provided by https://www.extrememusic.com
|
||||
|
||||
----------------------------------------------------------------
|
||||
follow all of these or i will kick you
|
||||
• Facebook - https://www.facebook.com/MrBeast6000/
|
||||
• Twitter - https://twitter.com/MrBeast
|
||||
• Instagram - https://www.instagram.com/mrbeast
|
||||
• Im Hiring! - https://www.mrbeastjobs.com/
|
||||
--------------------------------------------------------------------</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="5089170" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="157333414"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:XE1Qyss8GIY</id>
|
||||
<yt:videoId>XE1Qyss8GIY</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>Guess The Gift, Keep It</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=XE1Qyss8GIY"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-04-09T17:00:00+00:00</published>
|
||||
<updated>2024-05-20T17:49:32+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Guess The Gift, Keep It</media:title>
|
||||
<media:content url="https://www.youtube.com/v/XE1Qyss8GIY?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i1.ytimg.com/vi/XE1Qyss8GIY/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description></media:description>
|
||||
<media:community>
|
||||
<media:starRating count="9990095" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="193541791"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:6GzHPS0rEgc</id>
|
||||
<yt:videoId>6GzHPS0rEgc</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>I’m Giving My 250M Subscriber $25,000</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=6GzHPS0rEgc"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-04-06T19:45:00+00:00</published>
|
||||
<updated>2024-05-25T21:32:48+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>I’m Giving My 250M Subscriber $25,000</media:title>
|
||||
<media:content url="https://www.youtube.com/v/6GzHPS0rEgc?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i3.ytimg.com/vi/6GzHPS0rEgc/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description></media:description>
|
||||
<media:community>
|
||||
<media:starRating count="4194421" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="52704231"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:imhY0pe-Sd8</id>
|
||||
<yt:videoId>imhY0pe-Sd8</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>Anything You Touch, You Keep!</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=imhY0pe-Sd8"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-04-02T16:00:03+00:00</published>
|
||||
<updated>2024-05-12T21:41:57+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>Anything You Touch, You Keep!</media:title>
|
||||
<media:content url="https://www.youtube.com/v/imhY0pe-Sd8?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i2.ytimg.com/vi/imhY0pe-Sd8/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description></media:description>
|
||||
<media:community>
|
||||
<media:starRating count="5585596" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="98750199"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>yt:video:erLbbextvlY</id>
|
||||
<yt:videoId>erLbbextvlY</yt:videoId>
|
||||
<yt:channelId>UCX6OQ3DkcsbYNE6H8uQQuVA</yt:channelId>
|
||||
<title>7 Days Stranded On An Island</title>
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=erLbbextvlY"/>
|
||||
<author>
|
||||
<name>MrBeast</name>
|
||||
<uri>https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA</uri>
|
||||
</author>
|
||||
<published>2024-03-30T16:00:01+00:00</published>
|
||||
<updated>2024-05-25T23:02:55+00:00</updated>
|
||||
<media:group>
|
||||
<media:title>7 Days Stranded On An Island</media:title>
|
||||
<media:content url="https://www.youtube.com/v/erLbbextvlY?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
|
||||
<media:thumbnail url="https://i2.ytimg.com/vi/erLbbextvlY/hqdefault.jpg" width="480" height="360"/>
|
||||
<media:description>I can’t believe we actually did this
|
||||
Send money around the world with Western Union. New customers get their first online transaction fee free. https://www.westernunion.com/mrbeast . Restrictions and FX gains apply.
|
||||
|
||||
Play the Official Fortnite Creative Map For This Video Here:
|
||||
MrBeast Zombie Island 🏝️ - 4231-6172-1988
|
||||
https://www.fortnite.com/@mrbeast/4231-6172-1988
|
||||
|
||||
New Merch - https://mrbeast.store
|
||||
|
||||
Check out Viewstats! - https://www.viewstats.com/
|
||||
|
||||
SUBSCRIBE OR I TAKE YOUR DOG
|
||||
╔═╦╗╔╦╗╔═╦═╦╦╦╦╗╔═╗
|
||||
║╚╣║║║╚╣╚╣╔╣╔╣║╚╣═╣
|
||||
╠╗║╚╝║║╠╗║╚╣║║║║║═╣
|
||||
╚═╩══╩═╩═╩═╩╝╚╩═╩═╝
|
||||
|
||||
For any questions or inquiries regarding this video, please reach out to chucky@mrbeastbusiness.com
|
||||
|
||||
Music Provided by https://www.extrememusic.com
|
||||
|
||||
----------------------------------------------------------------
|
||||
follow all of these or i will kick you
|
||||
• Facebook - https://www.facebook.com/MrBeast6000/
|
||||
• Twitter - https://twitter.com/MrBeast
|
||||
• Instagram - https://www.instagram.com/mrbeast
|
||||
• Im Hiring! - https://www.mrbeastjobs.com/
|
||||
--------------------------------------------------------------------</media:description>
|
||||
<media:community>
|
||||
<media:starRating count="5502975" average="5.00" min="1" max="5"/>
|
||||
<media:statistics views="164861211"/>
|
||||
</media:community>
|
||||
</media:group>
|
||||
</entry>
|
||||
</feed>
|
1
feed/testdata/feedlink.txt
vendored
Normal file
1
feed/testdata/feedlink.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
http://www.youtube.com/feeds/videos.xml?channel_id=UCX6OQ3DkcsbYNE6H8uQQuVA
|
23
go.mod
Normal file
23
go.mod
Normal file
@ -0,0 +1,23 @@
|
||||
module gitea.hbanafa.com/hesham/yttopodcast
|
||||
|
||||
go 1.22.2
|
||||
|
||||
require (
|
||||
github.com/lrstanley/go-ytdlp v0.0.0-20240504025846-c0493251b060
|
||||
github.com/mmcdole/gofeed v1.3.0
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/ProtonMail/go-crypto v1.0.0 // indirect
|
||||
github.com/PuerkitoBio/goquery v1.8.0 // indirect
|
||||
github.com/andybalholm/cascadia v1.3.1 // indirect
|
||||
github.com/cloudflare/circl v1.3.7 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/mmcdole/goxpp v1.1.1-0.20240225020742-a0c311522b23 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
golang.org/x/crypto v0.21.0 // indirect
|
||||
golang.org/x/net v0.21.0 // indirect
|
||||
golang.org/x/sys v0.18.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
)
|
87
go.sum
Normal file
87
go.sum
Normal file
@ -0,0 +1,87 @@
|
||||
github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78=
|
||||
github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
|
||||
github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U=
|
||||
github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI=
|
||||
github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c=
|
||||
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
|
||||
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
|
||||
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
|
||||
github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
|
||||
github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/lrstanley/go-ytdlp v0.0.0-20240504025846-c0493251b060 h1:UOZcZVKXvw5ZcQ/shW/7xonMJYib9n9FKyNs/TAYAKc=
|
||||
github.com/lrstanley/go-ytdlp v0.0.0-20240504025846-c0493251b060/go.mod h1:75ujbafjqiJugIGw4K6o52/p8C0m/kt+DrYwgClXYT4=
|
||||
github.com/mmcdole/gofeed v1.3.0 h1:5yn+HeqlcvjMeAI4gu6T+crm7d0anY85+M+v6fIFNG4=
|
||||
github.com/mmcdole/gofeed v1.3.0/go.mod h1:9TGv2LcJhdXePDzxiuMnukhV2/zb6VtnZt1mS+SjkLE=
|
||||
github.com/mmcdole/goxpp v1.1.1-0.20240225020742-a0c311522b23 h1:Zr92CAlFhy2gL+V1F+EyIuzbQNbSgP4xhTODZtrXUtk=
|
||||
github.com/mmcdole/goxpp v1.1.1-0.20240225020742-a0c311522b23/go.mod h1:v+25+lT2ViuQ7mVxcncQ8ch1URund48oH+jhjiwEgS8=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
||||
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
|
||||
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
|
||||
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
||||
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
|
||||
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
|
||||
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
54
templates/base.rss.templ
Normal file
54
templates/base.rss.templ
Normal file
@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cc="http://web.resource.org/cc/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:media="http://search.yahoo.com/mrss/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:podcast="https://podcastindex.org/namespace/1.0" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
<channel>
|
||||
<atom:link href="{{ .FeedURL }}" rel="self" type="application/rss+xml"/>
|
||||
<title>{{ .Title }}</title>
|
||||
<pubDate>{{ .PublishDateRfcEmail }}</pubDate>
|
||||
<lastBuildDate>{{ .BuildDateRfcEmail }}</lastBuildDate>
|
||||
<generator>{{ .GeneratorName }}</generator>
|
||||
<link>{{ .PodcastPage }}</link>
|
||||
<language>{{ .Lang }}</language>
|
||||
<copyright>
|
||||
<![CDATA[{{ .CopyRight }}]]>
|
||||
</copyright>
|
||||
<docs>{{ .PodcastPage }}</docs>
|
||||
<itunes:summary><![CDATA[{{ .Summary }}]]></itunes:summary>
|
||||
<image>
|
||||
<url>{{ .PodcastImageURL }}</url>
|
||||
<title>{{ .Title }}</title>
|
||||
<link><![CDATA[{{ .PodcastImageURL }}]]></link>
|
||||
</image>
|
||||
<itunes:author>{{ .Title }}</itunes:author>
|
||||
<itunes:keywords>Youtube,{{ .Title }}</itunes:keywords>
|
||||
<itunes:category text="Arts">
|
||||
<itunes:category text="Performing Arts"/>
|
||||
</itunes:category>
|
||||
<itunes:category text="Comedy">
|
||||
</itunes:category>
|
||||
<itunes:image href="{{ .PodcastImageURL }}" />
|
||||
<itunes:explicit>false</itunes:explicit>
|
||||
<itunes:owner>
|
||||
<itunes:name><![CDATA[{{ .Title }}]]></itunes:name>
|
||||
<itunes:email>mail@mail.none</itunes:email>
|
||||
</itunes:owner>
|
||||
<description><![CDATA[{{ .Summary }}]]></description>
|
||||
<itunes:type>episodic</itunes:type>
|
||||
<podcast:locked owner="{{ .Title }}">no</podcast:locked>{{ range .Items }}
|
||||
<item>
|
||||
<title><![CDATA[{{ .Title }}]]></title>
|
||||
<itunes:title><![CDATA[{{ .Title }}]]></itunes:title>
|
||||
<pubDate>{{ .PublishDateRfcEmail }}</pubDate>
|
||||
<guid isPermaLink="false"><![CDATA[{{ .Id }}]]></guid>
|
||||
<link><![CDATA[https://youtube.com/watch?v={{ .Id }}]]></link>
|
||||
<itunes:image href="{{ .CoverImageURL }}" />
|
||||
<description><![CDATA[ {{ .Description }}]]></description>
|
||||
<content:encoded><![CDATA[{{ .Description }}]]></content:encoded>
|
||||
<enclosure length="{{ .Length }}" type="audio/mpeg" url="{{ .EnclosureURL }}" />
|
||||
<itunes:duration>{{ .Duration }}</itunes:duration>
|
||||
<itunes:explicit>false</itunes:explicit>
|
||||
<itunes:keywords />
|
||||
<itunes:subtitle><![CDATA[The itunes subtitle]]></itunes:subtitle>
|
||||
<itunes:episodeType>full</itunes:episodeType>
|
||||
</item>{{ end }}
|
||||
</channel>
|
||||
</rss>
|
17
templates/item.rss.templ
Normal file
17
templates/item.rss.templ
Normal file
@ -0,0 +1,17 @@
|
||||
<item>
|
||||
<title>{{ .Title }}</title>
|
||||
<itunes:title>{{ .Title }}</itunes:title>
|
||||
<pubDate>{{ .PublishDateRfcEmail }}</pubDate>
|
||||
<guid isPermaLink="false"><![CDATA[d598cacb-25dd-4659-8839-2829707208da]]></guid>
|
||||
<link><![CDATA[https://youtube.com/watch?v={{ .Id }}]]></link>
|
||||
<itunes:image href="{{ .CoverImageURL }}" />
|
||||
<description><![CDATA[ {{ .Description }}]]></description>
|
||||
<content:encoded><![CDATA[{{ .Description }}]]></content:encoded>
|
||||
<enclosure length="{{ .Length }}" type="audio/mpeg" url="{{ .JumpUrl }}" />
|
||||
<itunes:duration>{{ .Duration }}</itunes:duration>
|
||||
<itunes:explicit>false</itunes:explicit>
|
||||
<itunes:keywords />
|
||||
<itunes:subtitle><![CDATA[In a bipartisan fashion the United States House of Representatives has passed the “Antisemitism Awareness Act,” a transparent evisceration of the first amendment’s free speech protections. If the bill passes the Senate and is signed by President...]]></itunes:subtitle>
|
||||
<itunes:episodeType>full</itunes:episodeType>
|
||||
</item>
|
||||
|
36
templates/types.go
Normal file
36
templates/types.go
Normal file
@ -0,0 +1,36 @@
|
||||
package templates
|
||||
|
||||
import (
|
||||
"embed"
|
||||
)
|
||||
|
||||
//go:embed *.templ
|
||||
var TemplatesFS embed.FS
|
||||
|
||||
//go:embed base.rss.templ
|
||||
var RSSTemplate string
|
||||
|
||||
type FeedData struct {
|
||||
Title string
|
||||
PublishDateRfcEmail string
|
||||
BuildDateRfcEmail string
|
||||
GeneratorName string
|
||||
PodcastPage string
|
||||
Lang string
|
||||
CopyRight string
|
||||
Summary string
|
||||
PodcastImageURL string
|
||||
FeedURL string
|
||||
Items []FeedItem
|
||||
}
|
||||
|
||||
type FeedItem struct {
|
||||
Title string
|
||||
PublishDateRfcEmail string
|
||||
Id string
|
||||
CoverImageURL string
|
||||
Description string
|
||||
Length int
|
||||
EnclosureURL string
|
||||
Duration string
|
||||
}
|
80
ytlinkprov/cache_provider.go
Normal file
80
ytlinkprov/cache_provider.go
Normal file
@ -0,0 +1,80 @@
|
||||
package ytlinkprov
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/lrstanley/go-ytdlp"
|
||||
)
|
||||
|
||||
type CacheLinkProv struct {
|
||||
cache map[string]TimedLink
|
||||
cacheWindow time.Duration
|
||||
ytInstall ytdlp.ResolvedInstall
|
||||
}
|
||||
|
||||
type TimedLink struct {
|
||||
Link string
|
||||
Time time.Time
|
||||
}
|
||||
|
||||
func NewCachedLinkProvider(expiration time.Duration) (*CacheLinkProv, error) {
|
||||
p := new(CacheLinkProv)
|
||||
p.cache = make(map[string]TimedLink)
|
||||
p.cacheWindow = expiration
|
||||
ctx := context.Background()
|
||||
ytInstall, err := ytdlp.Install(
|
||||
ctx,
|
||||
&ytdlp.InstallOptions{
|
||||
AllowVersionMismatch: true,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return p, err
|
||||
}
|
||||
p.ytInstall = *ytInstall
|
||||
|
||||
return p, nil
|
||||
}
|
||||
|
||||
func (c *CacheLinkProv) GetLink(id string) (link string, err error) {
|
||||
|
||||
cc, ok := c.cache[id]
|
||||
if ok && c.validCache(cc) {
|
||||
return cc.Link, nil
|
||||
}
|
||||
link, err = getRemoteLink(id)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
t_now := time.Now().UTC()
|
||||
c.cache[id] = TimedLink{
|
||||
Link: link,
|
||||
Time: t_now,
|
||||
}
|
||||
|
||||
// INFO: This is a vary, vary slow leak
|
||||
|
||||
return link, nil
|
||||
}
|
||||
|
||||
func (c *CacheLinkProv) validCache(l TimedLink) bool {
|
||||
t_exp := time.Now().UTC().Add(c.cacheWindow)
|
||||
if t_exp.Before(l.Time) {
|
||||
// expired
|
||||
return false
|
||||
}
|
||||
return true
|
||||
|
||||
}
|
||||
|
||||
func getRemoteLink(id string) (string, error) {
|
||||
vidUrl := fmt.Sprintf("https://youtube.com/watch?v=%s", id)
|
||||
ytCmd := ytdlp.New().ExtractAudio().GetURL()
|
||||
ytRes, err := ytCmd.Run(context.Background(), vidUrl)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return ytRes.Stdout, nil
|
||||
}
|
6
ytlinkprov/common.go
Normal file
6
ytlinkprov/common.go
Normal file
@ -0,0 +1,6 @@
|
||||
package ytlinkprov
|
||||
|
||||
type YtLinkProvider interface {
|
||||
GetLink(id string) (link string, err error)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user