Service Api's


package main

import (
	"encoding/json"
	"fmt"
	"io"
	"log"
	"net/http"
	"net/url"
)

const (
	apiKey   = "YOUR API"
	videoURL = "URL SMULE"
	endpoint = "https://senpai-bot.store/smuledl"
)

type DuetInfo struct {
	Picture  string `json:"picture"`
	Username string `json:"username"`
	Verified bool   `json:"verified"`
	VIP      bool   `json:"vip"`
}

type Result struct {
	Artist     string   `json:"artist"`
	Caption    *string  `json:"caption"`
	Comments   int      `json:"comments"`
	Created    string   `json:"created"` // ISO-8601 format, pakai string
	Duet       DuetInfo `json:"duet"`
	Duration   *int     `json:"duration"` // nullable
	Gifts      int      `json:"gifts"`
	Listens    int      `json:"listens"`
	Loves      int      `json:"loves"`
	Mp3URL     string   `json:"mp3Url"`
	Mp4URL     string   `json:"mp4Url"`
	Picture    string   `json:"picture"`
	Thumbnail  string   `json:"thumbnail"`
	Title      string   `json:"title"`
	Type       string   `json:"type"`
	Username   string   `json:"username"`
	Verified   bool     `json:"verified"`
	VIP        bool     `json:"vip"`
}

type ApiResponse struct {
	Code   int    `json:"code"`
	Result Result `json:"result"`
}

func main() {
	encodedVideoURL := url.QueryEscape(videoURL)
	getData := fmt.Sprintf("%s?apikey=%s&url=%s", endpoint, apiKey, encodedVideoURL)

	resp, err := http.Get(getData)
	if err != nil {
		log.Fatalf("Error making request: %v", err)
	}
	defer resp.Body.Close()

	body, err := io.ReadAll(resp.Body)
	if err != nil {
		log.Fatalf("Error reading response: %v", err)
	}

	var response ApiResponse
	if err := json.Unmarshal(body, &response); err != nil {
		log.Fatalf("Error parsing JSON: %v", err)
	}

	r := response.Result
	fmt.Println("Username:", r.Username)
	fmt.Println("Verified:", r.Verified)
	fmt.Println("VIP:", r.VIP)
	fmt.Println("Title:", r.Title)
	fmt.Println("Artist:", r.Artist)
	if r.Caption != nil {
		fmt.Println("Caption:", *r.Caption)
	} else {
		fmt.Println("Caption: (null)")
	}
	fmt.Println("Comments:", r.Comments)
	fmt.Println("Created:", r.Created)
	if r.Duration != nil {
		fmt.Println("Duration:", *r.Duration)
	} else {
		fmt.Println("Duration: (null)")
	}
	fmt.Println("Gifts:", r.Gifts)
	fmt.Println("Listens:", r.Listens)
	fmt.Println("Loves:", r.Loves)
	fmt.Println("MP3 URL:", r.Mp3URL)
	fmt.Println("MP4 URL:", r.Mp4URL)
	fmt.Println("Picture:", r.Picture)
	fmt.Println("Thumbnail:", r.Thumbnail)
	fmt.Println("Type:", r.Type)

	fmt.Println("\nDuet Info:")
	fmt.Println("- Username:", r.Duet.Username)
	fmt.Println("- Picture:", r.Duet.Picture)
	fmt.Println("- Verified:", r.Duet.Verified)
	fmt.Println("- VIP:", r.Duet.VIP)
}