Skip to content

Commit f993d55

Browse files
authored
Merge pull request #12 from dotnettools/dev
Fixed null uriString exception
2 parents dbda2fa + ea6cee1 commit f993d55

File tree

3 files changed

+12
-20
lines changed

3 files changed

+12
-20
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ to easily add more or even override part of grabbing algorithm with your own cod
3030
Include *SharpGrabber* library in your own .NET projects.
3131

3232
### Install via <a href="https://www.nuget.org/packages/SharpGrabber/">NuGet</a>
33-
Install-Package SharpGrabber -Version 1.1.0
33+
Install-Package SharpGrabber -Version 1.2.0
3434

3535
## SharpGrabber Usage Example
3636

@@ -67,7 +67,7 @@ To contribute to this project, I'd appreciate if you'd help with adding support
6767
more top providers such as *Vimeo*, *DailyMotion* etc.
6868

6969
## License
70-
Copyright &copy; 2019 Javid Shoaei<br />
70+
Copyright &copy; 2020 Javid Shoaei<br />
7171
All Rights Reserved &reg;
7272

7373
This project is licensed under the GNU Lesser General Public License (LGPL) version 3.

src/SharpGrabber/Internal/Grabbers/YouTubeGrabber.cs

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ protected virtual void UnmangleEntries(List<KeyValuePair<string, string>> entrie
4141
{
4242
sb.Clear();
4343
var currentKey = pair.Key;
44-
foreach (var ch in pair.Value.Concat(new[] {'\0'}))
44+
foreach (var ch in pair.Value.Concat(new[] { '\0' }))
4545
{
4646
switch (ch)
4747
{
@@ -118,7 +118,7 @@ void Feed(string key, string value)
118118

119119
case "type":
120120
draft.Type = value;
121-
var parts = value.Split(new[] {';'}, 2, StringSplitOptions.RemoveEmptyEntries);
121+
var parts = value.Split(new[] { ';' }, 2, StringSplitOptions.RemoveEmptyEntries);
122122
draft.Mime = parts[0];
123123
break;
124124

@@ -192,7 +192,7 @@ void Feed(string key, string value)
192192

193193
case "type":
194194
draft.Type = value;
195-
var parts = value.Split(new[] {';'}, 2, StringSplitOptions.RemoveEmptyEntries);
195+
var parts = value.Split(new[] { ';' }, 2, StringSplitOptions.RemoveEmptyEntries);
196196
draft.Mime = parts[0];
197197
break;
198198

@@ -268,8 +268,8 @@ protected virtual YouTubeMuxedStream TranslateMuxedStream(JObject input)
268268
};
269269
result.Mime = ExtractActualMime(result.Type);
270270

271-
// get cipher info
272-
var cipher = input.Value<string>("cipher");
271+
// get cipher info (+signatureCipher)
272+
var cipher = input.Value<string>("cipher") ?? input.Value<string>("signatureCipher");
273273
if (!string.IsNullOrEmpty(cipher))
274274
UpdateStreamCipherInfo(result, cipher);
275275

@@ -301,7 +301,7 @@ protected virtual YouTubeAdaptiveStream TranslateAdaptiveStream(JObject input)
301301
result.Mime = ExtractActualMime(result.Type);
302302

303303
// get cipher info
304-
var cipher = input.Value<string>("cipher");
304+
var cipher = input.Value<string>("cipher") ?? input.Value<string>("signatureCipher");
305305
if (!string.IsNullOrEmpty(cipher))
306306
UpdateStreamCipherInfo(result, cipher);
307307

@@ -376,7 +376,7 @@ protected virtual YouTubePlayerResponse ExtractPlayerResponseMetadata(JToken pla
376376
/// </summary>
377377
protected virtual async Task<YouTubeMetadata> DownloadMetadata(string id, CancellationToken cancellationToken)
378378
{
379-
var rawMetadata = new Dictionary<string, string>();
379+
IDictionary<string, string> rawMetadata;
380380
Status.Update(null, "Downloading metadata...", WorkStatusType.DownloadingFile);
381381

382382
// make http client
@@ -387,15 +387,7 @@ protected virtual async Task<YouTubeMetadata> DownloadMetadata(string id, Cancel
387387
{
388388
// decode metadata into rawMetadata
389389
var content = await response.Content.ReadAsStringAsync();
390-
var @params = content.Split('&');
391-
foreach (var param in @params)
392-
{
393-
var pair = param.Split('=')
394-
.Select(Uri.UnescapeDataString)
395-
.ToArray();
396-
397-
rawMetadata.Add(pair[0], pair[1]);
398-
}
390+
rawMetadata = YouTubeUtils.ExtractUrlEncodedParamMap(content);
399391
}
400392

401393
// extract metadata

src/SharpGrabber/SharpGrabber.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
66
<Title>SharpGrabber</Title>
77
<Description>Grab information and media from YouTube and Instagram. Supports images, thumbnails, video, audio with different formats and qualities. YouTube deciphering is supported.</Description>
8-
<Copyright>Copyright (C) 2019 Javid Shoaei</Copyright>
8+
<Copyright>Copyright (C) 2020 Javid Shoaei</Copyright>
99
<PackageProjectUrl>https://github.com/dotnettools/SharpGrabber</PackageProjectUrl>
1010
<PackageLicenseUrl></PackageLicenseUrl>
1111
<RepositoryUrl>https://github.com/dotnettools/SharpGrabber</RepositoryUrl>
@@ -16,7 +16,7 @@
1616
<PackageIconUrl>https://raw.githubusercontent.com/dotnettools/SharpGrabber/master/assets/icon.png</PackageIconUrl>
1717
<FileVersion>1.1.0.0</FileVersion>
1818
<AssemblyVersion>1.1.0.0</AssemblyVersion>
19-
<Version>1.1.0</Version>
19+
<Version>1.2.0</Version>
2020
<RootNamespace>DotNetTools.SharpGrabber</RootNamespace>
2121
<SignAssembly>false</SignAssembly>
2222
<DelaySign>false</DelaySign>

0 commit comments

Comments
 (0)