addet a config file

This commit is contained in:
pika 2024-12-11 00:11:58 +01:00
parent ac8eafd44c
commit 20ab5804c6
3 changed files with 58 additions and 14 deletions

32
config/config.go Normal file
View file

@ -0,0 +1,32 @@
package config
import (
"fmt"
"os"
"path/filepath"
"github.com/BurntSushi/toml"
)
type Config struct {
APIKey string `toml:"api_key"`
}
func LoadConfig() (*Config, error) {
homeDir, err := os.UserHomeDir()
if err != nil {
return nil, fmt.Errorf("could not determine home directory: %w", err)
}
configPath := filepath.Join(homeDir, ".config", "ytgo", "config.toml")
var config Config
if _, err := toml.DecodeFile(configPath, &config); err != nil {
return nil, fmt.Errorf("could not read config file: %w", err)
}
if config.APIKey == "" {
return nil, fmt.Errorf("API key is missing in config file")
}
return &config, nil
}

View file

@ -4,10 +4,17 @@ import (
"log"
"os"
"ytgo/config"
"ytgo/tui"
)
func main() {
_, err := config.LoadConfig()
if err != nil {
log.Fatalf("Error loading configuration: %v", err)
os.Exit(1)
}
if err := tui.Run(); err != nil {
log.Fatalf("Error running application: %v", err)
os.Exit(1)

View file

@ -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:
@ -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)