Skip to content

Petros0/supadata-go

Repository files navigation

supadata-go

Go Reference Go Report Card CI License: MIT

Go SDK for the Supadata API - extract transcripts from YouTube, Instagram, and other video platforms.

This is an UNOFFICIAL library and is not affiliated with https://supadata.ai/

Supported Features

OpenAPI specification: https://supadata.ai/api/v1/openapi.json

Endpoint Supported
Universal Transcript
Universal Transcript Result
Universal Metadata
Youtube Search
Youtube Video
Youtube Video Batch
Youtube Transcript
Youtube Transcript Batch
Youtube Transcript Translate
Youtube Channel
Youtube Playlist
Youtube Channel Videos
Youtube Playlist Videos
Youtube Batch Result
Web Scrape
Web Map
Web Crawl
Web Crawl Status
Account Information

Installation

go get github.com/petros0/supadata-go

Quick Start

package main

import (
	"fmt"

	supadata "github.com/petros0/supadata-go"
)

func main() {
	client := supadata.NewSupadata() // Will use SUPADATA_API_KEY env var

	transcript, err := client.Transcript(&supadata.TranscriptParams{
		Url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
	})
	if err != nil {
		panic(err)
	}

	if transcript.IsAsync() {
		fmt.Println("Job ID:", transcript.Async.JobId)
	} else {
		for _, segment := range transcript.Sync.Content {
			fmt.Println(segment.Text)
		}
	}
}

Development

The project uses https://asdf-vm.com/guide/getting-started.html for version management. To set up the development environment, run:

asdf install

Examples

See the example folder for more usage examples.

To run the examples, set your API key as an environment variable and execute the main file:

export SUPADATA_API_KEY=your_api_key
go run ./example

Configuration

API Key

You can provide your API key in two ways:

  1. Environment variable (recommended):
export SUPADATA_API_KEY=your_api_key
client := supadata.NewSupadata() // Will use SUPADATA_API_KEY env var
  1. Explicit configuration:
client := supadata.NewSupadata(
    WithAPIKey("sd_..."),
    WithTimeout(30*time.Second), // just override timeout of the client
)

Custom HTTP client

You can provide a custom HTTP client for advanced use cases:

client := supadata.NewSupadata(
	WithAPIKey("sd_..."),
	WithClient(
		&http.Client{
            Timeout:   30 * time.Second,
            Transport: http.DefaultTransport,
        },
    ),
)

License

MIT License - see LICENSE for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors