Comments (15)
me too ...
from youtubeextractor.
Same issue:
at System.Text.RegularExpressions.Match.Result(String replacement) at YoutubeExtractor.DownloadUrlResolver.GetHtml5PlayerVersion(JObject json) at YoutubeExtractor.DownloadUrlResolver.GetDownloadUrls(String videoUrl, Boolean decryptSignature)
from youtubeextractor.
I have found that the json don't contains args url_encoded_fmt_stream_map and adaptive_fmts so the functions GetStreamMap and GetAdaptiveStreamMap failed to provide the urls.
Any idea how to solve this?
from youtubeextractor.
I have tried to change the GetStreamMap from
json["args"]["url_encoded_fmt_stream_map"];
to
json["args"]["player_response"];
and then navigate to ["streamingData"]["formats"]
the same thing in GetAdaptiveStreamMap json["args"]["player_response"]; -> ["streamingData"]["adaptiveFormats"];
The function ExtractDownloadUrls is still failed because of the change of the structure.
Any idea how to solve this?
from youtubeextractor.
from youtubeextractor.
I was able to get around this by doing the following:
1- Replace ExtractDownloadUrls by the following:
private static IEnumerable<ExtractionInfo> ExtractDownloadUrls(JObject json)
{
var info = new List<ExtractionInfo>();
var formats = GetStreamMap(json);
var adaptiveFormats = GetAdaptiveStreamMap(json);
ExtractInfo(info, formats);
ExtractInfo(info, adaptiveFormats);
return info;
}
2- Add the following helper function:
private static void ExtractInfo(List<ExtractionInfo> info, JArray items)
{
if (items != null)
{
foreach (var item in items)
{
bool requiresDecryption = false;
var url = item["url"]?.ToString();
info.Add(new ExtractionInfo { RequiresDecryption = requiresDecryption, Uri = new Uri(url) });
}
}
}
3- Replace GetAdaptiveStreamMap by the following
private static JArray GetAdaptiveStreamMap(JObject json)
{
JArray adaptiveFormat = null;
JToken streamMap = json["args"]["player_response"];
string streamMapString = streamMap == null ? null : streamMap.ToString();
if (streamMapString != null)
{
dynamic playerResponse = JsonConvert.DeserializeObject(streamMapString);
adaptiveFormat = playerResponse?.streamingData?.adaptiveFormats;
}
return adaptiveFormat;
}
4- Replace GetStreamMap by the following:
private static JArray GetStreamMap(JObject json)
{
JToken streamMap = json["args"]["player_response"];
string streamMapString = streamMap == null ? null : streamMap.ToString();
if (streamMapString == null || streamMapString.Contains("been+removed"))
{
throw new Exception("Video is removed or has an age restriction.");
}
dynamic playerResponse = JsonConvert.DeserializeObject(streamMapString);
return playerResponse.streamingData?.formats;
}
5- Replace GetHtml5PlayerVersion by the following:
private static string GetHtml5PlayerVersion(JObject json)
{
var regex = new Regex(@"player[-|_](.+?).js");
string js = json["assets"]["js"].ToString();
return regex.Match(js).Result("$1");
}
My fix will work only for unencrypted contents. We still need to fix the isEncrypted attribute
Cheers
from youtubeextractor.
Thanks a lot for the response and solution.
the URL is not in var url = item["url"]?.ToString(); it should be
var url = item["url"]?.ToString();
if (url == null)
{
url = item["cipher"]?.ToString();
}
The Decipherer.cs - DecipherWithVersion need to change
from string jsUrl = string.Format("http://s.ytimg.com/yts/jsbin/player{0}.js", cipherVersion);
to string jsUrl = string.Format("http://s.ytimg.com/yts/jsbin/player_{0}.js", cipherVersion);
I have still having problem to download and i think it related to encrypted/signature. i'm getting 403 error.
from youtubeextractor.
Whats the link with the issue or are you having problems with all in general ?
from youtubeextractor.
for example: https://www.youtube.com/watch?v=DkeiKbqa02g
from youtubeextractor.
for example: https://www.youtube.com/watch?v=DkeiKbqa02g
i will download this library and see if i can fix for you.
from youtubeextractor.
Which library you are using?
from youtubeextractor.
Which library you are using?
im using my own code but when i started my project i used the decipher from this one.i am working on this one as i type and should be able to upload it tomorrow.
from youtubeextractor.
I fixed the structure change of Youtube. You can try it.
from youtubeextractor.
I fixed the structure change of Youtube. You can try it.
took a quick look at it and it did download noammaoz link.i see you never changed the get title does it ever return a title that way ? and if you get the cipher once you can reuse for the lifetime of the app.Thank you now i will continue my own app as it needs love too ;)
from youtubeextractor.
LinPolly/YoutubeExtractor
This library is working fine. Thanks a lot.
from youtubeextractor.
Related Issues (20)
- YoutubeExtractor.YoutubeParseException:
- DownloadUrlResolver.cs HOT 1
- Downloading very slow
- i have it
- Cant get youtube video by URL
- New Issue HOT 1
- Cant find VideoDownloader and AudioDownloader HOT 1
- Could not open file MediaPlayerCtrl
- Decipherer broken HOT 1
- someone know why i dont have sound with 1080 HOT 7
- False: Video is removed or has an age restriction HOT 11
- (429) Too Many Requests
- (403) Forbidden HOT 4
- Error 404 not found http://s.ytimg.com/yts/jsbin/player{0}.js HOT 1
- (404) Not Found
- where is op
- Error with https
- YouTube changed deciphering HOT 1
- Not Working of Android
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from youtubeextractor.