addet a config file
This commit is contained in:
parent
ac8eafd44c
commit
20ab5804c6
3 changed files with 58 additions and 14 deletions
|
@ -4,10 +4,13 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
// "log"
|
||||
"html"
|
||||
"strings"
|
||||
|
||||
"ytgo/config"
|
||||
|
||||
"google.golang.org/api/option"
|
||||
"google.golang.org/api/youtube/v3"
|
||||
)
|
||||
|
@ -22,9 +25,6 @@ type Video struct {
|
|||
UploadDate string
|
||||
}
|
||||
|
||||
// Replace with your actual API key
|
||||
const API_KEY = "AIzaSyAzsihRkp8mYTOXLOkVN09yTqld9TJ4Nts"
|
||||
|
||||
func formatViews(count uint64) string {
|
||||
switch {
|
||||
case count >= 1000000000:
|
||||
|
@ -41,16 +41,16 @@ func formatViews(count uint64) string {
|
|||
func formatDuration(duration string) string {
|
||||
// Remove PT from the start
|
||||
duration = strings.TrimPrefix(duration, "PT")
|
||||
|
||||
|
||||
var result strings.Builder
|
||||
|
||||
|
||||
// Handle hours
|
||||
if i := strings.Index(duration, "H"); i != -1 {
|
||||
result.WriteString(duration[:i])
|
||||
result.WriteString(":")
|
||||
duration = duration[i+1:]
|
||||
}
|
||||
|
||||
|
||||
// Handle minutes
|
||||
if i := strings.Index(duration, "M"); i != -1 {
|
||||
minutes := duration[:i]
|
||||
|
@ -63,7 +63,7 @@ func formatDuration(duration string) string {
|
|||
} else if result.Len() > 0 {
|
||||
result.WriteString("00:")
|
||||
}
|
||||
|
||||
|
||||
// Handle seconds
|
||||
if i := strings.Index(duration, "S"); i != -1 {
|
||||
seconds := duration[:i]
|
||||
|
@ -74,7 +74,7 @@ func formatDuration(duration string) string {
|
|||
} else {
|
||||
result.WriteString("00")
|
||||
}
|
||||
|
||||
|
||||
return result.String()
|
||||
}
|
||||
|
||||
|
@ -89,7 +89,7 @@ func formatUploadDate(uploadDate string) string {
|
|||
days := int(diff.Hours() / 24)
|
||||
|
||||
formattedDate := t.Format("02-01-2006")
|
||||
|
||||
|
||||
// If video is less than 30 days old, add "X days ago"
|
||||
if days < 30 {
|
||||
var timeAgo string
|
||||
|
@ -113,8 +113,13 @@ func formatUploadDate(uploadDate string) string {
|
|||
}
|
||||
|
||||
func FetchVideos(query string) ([]Video, error) {
|
||||
cfg, err := config.LoadConfig()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error loading config: %w", err)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
youtubeService, err := youtube.NewService(ctx, option.WithAPIKey(API_KEY))
|
||||
youtubeService, err := youtube.NewService(ctx, option.WithAPIKey(cfg.APIKey))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error creating YouTube client: %w", err)
|
||||
}
|
||||
|
@ -134,10 +139,10 @@ func FetchVideos(query string) ([]Video, error) {
|
|||
var videos []Video
|
||||
for _, item := range response.Items {
|
||||
video := Video{
|
||||
Title: item.Snippet.Title,
|
||||
URL: fmt.Sprintf("https://www.youtube.com/watch?v=%s", item.Id.VideoId),
|
||||
Channel: item.Snippet.ChannelTitle,
|
||||
Thumbnail: item.Snippet.Thumbnails.Default.Url,
|
||||
Title: item.Snippet.Title,
|
||||
URL: fmt.Sprintf("https://www.youtube.com/watch?v=%s", item.Id.VideoId),
|
||||
Channel: item.Snippet.ChannelTitle,
|
||||
Thumbnail: item.Snippet.Thumbnails.Default.Url,
|
||||
UploadDate: item.Snippet.PublishedAt,
|
||||
}
|
||||
videos = append(videos, video)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue