youtube

package
v1.19.8 Latest Latest
Warning

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

Go to latest
Published: Jul 13, 2021 License: OSL-3.0 Imports: 7 Imported by: 4

README

YouTube

Age gate videos that can be embedded:

https://www.youtube.com/embed/HtVdAasjOgU

Age gate videos that can cannot be embedded:

https://www.youtube.com/embed/bO7PgQ-DtZk

Old:

https://github.com/89z/mech/blob/160417ea/youtube/video.go#L50-L58

Tests:

https://github.com/Hexer10/youtube_explode_dart/blob/master/test/video_test.dart

PS D:\Desktop> youtube-dl.exe --print-traffic MeJVWBSsPAY
GET /watch?v=MeJVWBSsPAY&bpctr=9999999999&has_verified=1 HTTP/1.1
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding: gzip, deflate\r\nAccept-Language: en-us,en;q=0.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Connection: close
Host: www.youtube.com\r\nCookie: CONSENT=YES+cb.20210328-17-p0.en+FX+512
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.6 Safari/537.36

watch

desktop:

curl -o index.html https://www.youtube.com/watch?v=UpNXI3_ctAc

Next:

<script nonce="GWQS4dROIhbOWa4QpveqWw">var ytInitialPlayerResponse = {"respons...
...ta":false,"viewCount":"11059","category":"Music","publishDate":"2020-10-02"...
...1"}},"adSlotLoggingData":{"serializedSlotAdServingDataEntry":""}}}]};</script>

Next:

<script nonce="GWQS4dROIhbOWa4QpveqWw">var ytInitialPlayerResponse = {"respons...
...u0026sp=sig\u0026url=https://r4---sn-q4flrner.googlevideo.com/videoplayback...
...1"}},"adSlotLoggingData":{"serializedSlotAdServingDataEntry":""}}}]};</script>

mobile good:

Never Gonna Reach Me
curl -o index.html -A iPad https://m.youtube.com/watch?v=UpNXI3_ctAc

mobile bad:

Goon Gumpas
curl -o index.html -A iPad https://m.youtube.com/watch?v=NMYIVsdGfoo

Free proxy list

https://proxy.webshare.io/register

Documentation

Overview

YouTube

Index

Constants

View Source
const (
	WidthAutoHeightBlack = 0
	WidthAuto            = 1
	WidthBlack           = 2
	HeightCrop           = 3
)
View Source
const (
	JPG  = 1
	WebP = 0
)

Variables

View Source
var AdaptiveImages = Images{
	{90, WidthAutoHeightBlack, JPG, "default"},
	{90, WidthAutoHeightBlack, WebP, "default"},
	{90, WidthBlack, JPG, "1"},
	{90, WidthBlack, JPG, "2"},
	{90, WidthBlack, JPG, "3"},
	{90, WidthBlack, WebP, "1"},
	{90, WidthBlack, WebP, "2"},
	{90, WidthBlack, WebP, "3"},
	{180, HeightCrop, JPG, "mq1"},
	{180, HeightCrop, JPG, "mq2"},
	{180, HeightCrop, JPG, "mq3"},
	{180, HeightCrop, WebP, "mq1"},
	{180, HeightCrop, WebP, "mq2"},
	{180, HeightCrop, WebP, "mq3"},
	{180, WidthAuto, JPG, "mqdefault"},
	{180, WidthAuto, WebP, "mqdefault"},
	{360, WidthAutoHeightBlack, JPG, "0"},
	{360, WidthAutoHeightBlack, JPG, "hqdefault"},
	{360, WidthAutoHeightBlack, WebP, "0"},
	{360, WidthAutoHeightBlack, WebP, "hqdefault"},
	{360, WidthBlack, JPG, "hq1"},
	{360, WidthBlack, JPG, "hq2"},
	{360, WidthBlack, JPG, "hq3"},
	{360, WidthBlack, WebP, "hq1"},
	{360, WidthBlack, WebP, "hq2"},
	{360, WidthBlack, WebP, "hq3"},
	{480, WidthAutoHeightBlack, JPG, "sddefault"},
	{480, WidthAutoHeightBlack, WebP, "sddefault"},
	{480, WidthBlack, JPG, "sd1"},
	{480, WidthBlack, JPG, "sd2"},
	{480, WidthBlack, JPG, "sd3"},
	{480, WidthBlack, WebP, "sd1"},
	{480, WidthBlack, WebP, "sd2"},
	{480, WidthBlack, WebP, "sd3"},
	{720, WidthAuto, JPG, "hq720"},
	{720, WidthAuto, JPG, "maxresdefault"},
	{720, WidthAuto, WebP, "hq720"},
	{720, WidthAuto, WebP, "maxresdefault"},
	{720, WidthBlack, JPG, "maxres1"},
	{720, WidthBlack, JPG, "maxres2"},
	{720, WidthBlack, JPG, "maxres3"},
	{720, WidthBlack, WebP, "maxres1"},
	{720, WidthBlack, WebP, "maxres2"},
	{720, WidthBlack, WebP, "maxres3"},
}

Functions

This section is empty.

Types

type CompactVideoRenderer added in v1.16.9

type CompactVideoRenderer struct {
	VideoID string
}

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 Formats added in v1.17.9

type Formats []Format

func (Formats) Filter added in v1.17.9

func (s Formats) Filter(keep func(Format) bool) Formats

func (Formats) Sort added in v1.17.9

func (s Formats) Sort(less ...func(a, b Format) bool)

type Image added in v1.15.8

type Image struct {
	Height int
	Frame  int
	Format int
	Base   string
}

func (Image) Address added in v1.15.9

func (i Image) Address(id string) string

type Images added in v1.15.8

type Images []Image

func (Images) Filter added in v1.17.9

func (s Images) Filter(keep func(Image) bool) Images

func (Images) Sort added in v1.17.9

func (s Images) Sort(less ...func(a, b Image) bool)

type Microformat added in v1.13.6

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

type Player added in v1.13.0

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

func GetVideoInfo added in v1.19.6

func GetVideoInfo(id string, detailPage bool) (*Player, error)

func IPlayer added in v1.19.7

func IPlayer(id string) (*Player, error)

type PlayerMicroformatRenderer added in v1.13.6

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

func ISearch added in v1.19.7

func ISearch(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 Formats
}

type VideoDetails added in v1.13.6

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

Jump to

Keyboard shortcuts

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