go-get-youtube
go-get-youtube copied to clipboard
Library works only on some videos
Got the same problem
Head request failed: Head : unsupported protocol scheme ""
Looks like it does this when the video_id contains a dash. Don't know how to fix this but at least it will be easier with this information I think
@Ragnnn you're right. After experimenting a bit it seems like resp, err := http.Head(url) returns resp.StatusCode == 403 when video_id contains a dash.
Actually... Ig-86pjzzXg returns 403 but q0DRVz6M-e0 works fine and they both contain "-". Strange.
I'm also experiencing this issue on videos that do not include a dash. For example, WfCZd26xt3c and ZgSFN-Fvs1I are both valid IDs, but both fail with the same error: Head request failed: Head "": unsupported protocol scheme "" even though one has a dash and the other does not.
@knadh any suggestions?
Edit: I haven't had a ton of time to look into this, but from what I've been able to tell so far, I believe the issue is occurring in func parseMeta(). There appears to be an issue with the query, or the way it's being parsed.
Looking at this line: format_params := strings.Split(query.Get("url_encoded_fmt_stream_map"), ",")
query doesn't appear to contain anything called url_encoded_fmt_stream_map, so format_params ends up being empty. This causes additional issues later in the func as we attempt to range over the contents of format_params and create a video.Formats[] object, which doesn't exist, which I believe is the reason for the Head request failed error above.
Here's a screenshot of some simple fmt.Println() output that I added for debugging:

If I have time this evening I'll try to do some more digging, but I'm not familiar at all with what this query is supposed to look like so I'm not sure I'm the best person to work on this.