youtube

package
v1.20.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 22, 2021 License: OSL-3.0 Imports: 12 Imported by: 3

README

YouTube

Device OAuth

How to get X-Goog-Api-Key

Next open your browser menu, and click Web Developer, Network or similar. Then go to:

https://www.youtube.com

then go back to Developer Tools, and you should see a JSON request like this:

POST /youtubei/v1/guide?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8 HTTP/1.1
Host: www.youtube.com

https://cloud.google.com/apis/docs/system-parameters

How to get client_id and client_secret

Set User-Agent to [1]:

Mozilla/5.0 (SMART-TV; LINUX; Tizen 5.0)

Then visit:

https://www.youtube.com/tv

Next open your browser menu, and click Web Developer, Network or similar. Then go back to the page, and click "Sign in", then "Sign in with a web browser". On the next page, dont bother with any of the instructions, just go back to Developer Tools, and after about five seconds you should see a JSON request like this:

POST /o/oauth2/token HTTP/1.1
Host: www.youtube.com

{"client_id":"861556708454-d6dlm3lh05idd8npek18k6be8ba3oc68.apps.googleusercontent.com",
"client_secret":"SboVhoG9s0rNafixCSGGKXAT",
"code":"AH-1Ng14qVvEj76OeM_h14Mgklgyhchbyc67MhULhCKPY6K-0DTYJqaKng2ULVFTmTzU...",
"grant_type":"http://oauth.net/grant_type/device/1.0"}

References:

  1. https://developer.samsung.com/smarttv/develop/guides/fundamentals/retrieving-platform-information.html

Free proxy list

https://proxy.webshare.io/register

Documentation

Overview

YouTube

Index

Constants

This section is empty.

Variables

View Source
var (
	WebP = ImageFormat{0, "vi_webp", "webp"}
	JPG  = ImageFormat{1, "vi", "jpg"}
)
View Source
var (
	Android = Client{"ANDROID", "16.05"}
	Mweb    = Client{"MWEB", "2.19700101"}
)
View Source
var Images = ImageSlice{
	{120, 90, 68, "default", JPG},
	{120, 90, 90, "1", JPG},
	{120, 90, 90, "2", JPG},
	{120, 90, 90, "3", JPG},
	{120, 90, 68, "default", WebP},
	{120, 90, 90, "1", WebP},
	{120, 90, 90, "2", WebP},
	{120, 90, 90, "3", WebP},
	{320, 180, 180, "mqdefault", JPG},
	{320, 180, 320, "mq1", JPG},
	{320, 180, 320, "mq2", JPG},
	{320, 180, 320, "mq3", JPG},
	{320, 180, 180, "mqdefault", WebP},
	{320, 180, 320, "mq1", WebP},
	{320, 180, 320, "mq2", WebP},
	{320, 180, 320, "mq3", WebP},
	{480, 360, 270, "0", JPG},
	{480, 360, 270, "hqdefault", JPG},
	{480, 360, 360, "hq1", JPG},
	{480, 360, 360, "hq2", JPG},
	{480, 360, 360, "hq3", JPG},
	{480, 360, 270, "0", WebP},
	{480, 360, 270, "hqdefault", WebP},
	{480, 360, 360, "hq1", WebP},
	{480, 360, 360, "hq2", WebP},
	{480, 360, 360, "hq3", WebP},
	{640, 480, 360, "sddefault", JPG},
	{640, 480, 480, "sd1", JPG},
	{640, 480, 480, "sd2", JPG},
	{640, 480, 480, "sd3", JPG},
	{640, 480, 360, "sddefault", WebP},
	{640, 480, 480, "sd1", WebP},
	{640, 480, 480, "sd2", WebP},
	{640, 480, 480, "sd3", WebP},
	{1280, 720, 720, "hq720", JPG},
	{1280, 720, 720, "maxres1", JPG},
	{1280, 720, 720, "maxres2", JPG},
	{1280, 720, 720, "maxres3", JPG},
	{1280, 720, 720, "maxresdefault", JPG},
	{1280, 720, 720, "hq720", WebP},
	{1280, 720, 720, "maxres1", WebP},
	{1280, 720, 720, "maxres2", WebP},
	{1280, 720, 720, "maxres3", WebP},
	{1280, 720, 720, "maxresdefault", WebP},
}
View Source
var Key = Auth{"X-Goog-Api-Key", "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8"}

Functions

This section is empty.

Types

type Auth added in v1.20.3

type Auth struct {
	Key string
	Val string
}

type Client added in v1.16.9

type Client struct {
	ClientName    string `json:"clientName"`
	ClientVersion string `json:"clientVersion"`
}

type CompactVideoRenderer added in v1.16.9

type CompactVideoRenderer struct {
	VideoID string
}

type Exchange added in v1.20.3

type Exchange struct {
	Access_Token  string
	Refresh_Token string
}

func (*Exchange) Refresh added in v1.20.3

func (x *Exchange) Refresh() error

type Format

type Format struct {
	Bitrate       int64
	ContentLength int64 `json:"contentLength,string"`
	Height        int
	Itag          int
	MimeType      string
	URL           string
}

func (Format) Ext added in v1.17.8

func (f Format) Ext() string

func (Format) Write

func (f Format) Write(w io.Writer) error

type FormatSlice added in v1.17.8

type FormatSlice []Format

func (FormatSlice) Filter added in v1.17.8

func (f FormatSlice) Filter(keep func(Format) bool) FormatSlice

func (FormatSlice) Sort added in v1.17.8

func (f FormatSlice) Sort(less ...func(a, b Format) bool)

type Image added in v1.15.8

type Image struct {
	Width     int
	Height    int
	SubHeight int
	Base      string
	Format    ImageFormat
}

func (Image) Address added in v1.15.9

func (i Image) Address(id string) string

func (Image) Rect added in v1.20.0

func (i Image) Rect() image.Rectangle

type ImageFormat added in v1.20.0

type ImageFormat struct {
	Sort int
	Dir  string
	Ext  string
}

type ImageSlice added in v1.17.6

type ImageSlice []Image

func (ImageSlice) Filter added in v1.17.6

func (i ImageSlice) Filter(keep func(Image) bool) ImageSlice

func (ImageSlice) Sort added in v1.17.6

func (i ImageSlice) Sort(less ...func(a, b Image) bool)

type Microformat added in v1.13.6

type Microformat struct {
	PlayerMicroformatRenderer `json:"playerMicroformatRenderer"`
}

type OAuth added in v1.20.4

type OAuth struct {
	Device_Code      string
	User_Code        string
	Verification_URL string
}

func NewOAuth added in v1.20.4

func NewOAuth() (*OAuth, error)

func (OAuth) Exchange added in v1.20.4

func (o OAuth) Exchange() (*Exchange, error)

type Player added in v1.13.0

type Player struct {
	Microformat       `json:"microformat"`
	PlayabilityStatus struct {
		ReasonTitle string
		Status      string
	}
	StreamingData `json:"streamingData"`
	VideoDetails  `json:"videoDetails"`
}

func NewPlayer added in v1.13.0

func NewPlayer(id string, head Auth, body Client) (*Player, error)

type PlayerMicroformatRenderer added in v1.13.6

type PlayerMicroformatRenderer struct {
	PublishDate string
}
type Search struct {
	Contents struct {
		SectionListRenderer struct {
			Contents []struct {
				ItemSectionRenderer struct {
					Contents []struct {
						CompactVideoRenderer CompactVideoRenderer
					}
				}
			}
		}
	}
}

func NewSearch added in v1.11.2

func NewSearch(query string) (*Search, error)

func (Search) Videos added in v1.18.2

func (s Search) Videos() []CompactVideoRenderer

type StreamingData added in v1.17.9

type StreamingData struct {
	AdaptiveFormats FormatSlice
}

type VideoDetails added in v1.13.6

type VideoDetails struct {
	Author           string
	ShortDescription string
	Title            string
	VideoID          string
	ViewCount        int `json:"viewCount,string"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL