Code cleanup
This commit is contained in:
parent
ab527bf7c6
commit
369bca9547
2 changed files with 45 additions and 27 deletions
36
helpers.go
Normal file
36
helpers.go
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"github.com/wader/goutubedl"
|
||||||
|
)
|
||||||
|
|
||||||
|
func getRedirectURL(input string) (string, error) {
|
||||||
|
request, err := http.NewRequest("GET", input, nil)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
client := &http.Client{}
|
||||||
|
resp, err := client.Do(request)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("Found new URL: %s", resp.Request.URL.String())
|
||||||
|
return resp.Request.URL.String(), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getLargestFormat(input goutubedl.Result, sizeLimit float64) (format goutubedl.Format, err error) {
|
||||||
|
for i := len(input.Formats())-1; i >= 0; i-- {
|
||||||
|
size := input.Formats()[i].FilesizeApprox
|
||||||
|
if size <= sizeLimit {
|
||||||
|
return input.Formats()[i], nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return goutubedl.Format{}, errors.New(fmt.Sprintf("Could not find a video format that is under the size limit of %f", sizeLimit))
|
||||||
|
}
|
36
main.go
36
main.go
|
@ -10,7 +10,6 @@ import (
|
||||||
//"strings"
|
//"strings"
|
||||||
"regexp"
|
"regexp"
|
||||||
"context"
|
"context"
|
||||||
"net/http"
|
|
||||||
|
|
||||||
"github.com/bwmarrin/discordgo"
|
"github.com/bwmarrin/discordgo"
|
||||||
"github.com/wader/goutubedl"
|
"github.com/wader/goutubedl"
|
||||||
|
@ -158,29 +157,22 @@ func messageCreate(session *discordgo.Session, message *discordgo.MessageCreate)
|
||||||
log.Println("Cringe twitter post detected.")
|
log.Println("Cringe twitter post detected.")
|
||||||
|
|
||||||
if shortned, _ := regexp.MatchString("http.*t.co/.*", url); shortned {
|
if shortned, _ := regexp.MatchString("http.*t.co/.*", url); shortned {
|
||||||
|
var err error
|
||||||
|
|
||||||
log.Println("Short URL detected. Getting long version.")
|
log.Println("Short URL detected. Getting long version.")
|
||||||
|
url, err = getRedirectURL(url)
|
||||||
request, _ := http.NewRequest("GET", url, nil)
|
|
||||||
|
|
||||||
client := &http.Client{}
|
|
||||||
resp, err := client.Do(request)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("Found new URL: %s", resp.Request.URL.String())
|
|
||||||
url = resp.Request.URL.String()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
response.Content = response.Content + regexp.MustCompile("https://twitter.com/").ReplaceAllString(url, "https://nitter.pussthecat.org/")
|
response.Content = response.Content + regexp.MustCompile("https://twitter.com/").ReplaceAllString(url, "https://nitter.pussthecat.org/")
|
||||||
|
|
||||||
|
|
||||||
goutubedl.Path = "yt-dlp"
|
goutubedl.Path = "yt-dlp"
|
||||||
result, err := goutubedl.New(context.Background(), url, goutubedl.Options{})
|
result, err := goutubedl.New(context.Background(), url, goutubedl.Options{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
// If it's complaining due to a lack of videos, don't care.
|
||||||
// Probably no videos in it, don't care
|
|
||||||
if noVideo, _ := regexp.MatchString(".*There's no video in this tweet.*", err.Error()); ! noVideo {
|
if noVideo, _ := regexp.MatchString(".*There's no video in this tweet.*", err.Error()); ! noVideo {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
|
@ -188,21 +180,9 @@ func messageCreate(session *discordgo.Session, message *discordgo.MessageCreate)
|
||||||
//session.ChannelMessageSend(message.ChannelID, err.Error())
|
//session.ChannelMessageSend(message.ChannelID, err.Error())
|
||||||
continue
|
continue
|
||||||
} else {
|
} else {
|
||||||
// Get rid of the stupid short URL that Shitter appends to everything
|
choice, err := getLargestFormat(result, 8*1024*1024)
|
||||||
//response.Content = response.Content + fmt.Sprintf("\"%s\"\n", strings.Trim(regexp.MustCompile("https://t.co/.*").ReplaceAllString(result.Info.Description, ""), " ")) // Still ugly
|
log.Printf("Choice: %s | Size: %fM\n", choice.FormatID, choice.FilesizeApprox/1024/1024)
|
||||||
|
if err == nil {
|
||||||
var choice goutubedl.Format
|
|
||||||
for i := len(result.Formats())-1; i >= 0; i-- {
|
|
||||||
size := result.Formats()[i].FilesizeApprox
|
|
||||||
if size < 8*1024*1024 {
|
|
||||||
choice = result.Formats()[i]
|
|
||||||
log.Printf("Choice: %s | Size: %fM\n", choice.FormatID, size/1024/1024)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if len(choice.FormatID) > 0 {
|
|
||||||
downloadResult, err := result.Download(context.Background(), choice.FormatID)
|
downloadResult, err := result.Download(context.Background(), choice.FormatID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
|
@ -217,6 +197,8 @@ func messageCreate(session *discordgo.Session, message *discordgo.MessageCreate)
|
||||||
})
|
})
|
||||||
|
|
||||||
defer downloadResult.Close()
|
defer downloadResult.Close()
|
||||||
|
} else {
|
||||||
|
log.Println(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue