Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Quality Extension Methods #49

Closed
javidsho opened this issue Oct 15, 2021 · 5 comments
Closed

Quality Extension Methods #49

javidsho opened this issue Oct 15, 2021 · 5 comments

Comments

@javidsho
Copy link
Contributor

Add a few extension methods to conveniently get highest quality.

@javidsho javidsho mentioned this issue Oct 15, 2021
@Jeager2
Copy link

Jeager2 commented Oct 18, 2021

Something like this?

    //Highest Bitrate
    private static GrabbedMedia ChooseHighestBitrateMedia(GrabResult result, MediaChannels channel)
    {
        var resources = result.Resources<GrabbedMedia>()
            .Where(m => m.Channels == channel)
            .ToList();

        if (resources.Count == 0)
            return null;

        double Highest = 0;
        int Picked = 0;

        for (var i = 0; i < resources.Count; i++)
        {
            var resource = resources[i];
            string value = Regex.Replace(resource.BitRateString, "[A-Za-z ]", "");
            double parsedValue = double.Parse(value);
            if (parsedValue > Highest)
            {
                Picked = i;
                Highest = parsedValue;
            }
            //Console.WriteLine($"{i}. {resource.Title ?? resource.FormatTitle ?? resource.Resolution}");
        }
        return resources[Picked];
       
    }

@Jeager2
Copy link

Jeager2 commented Oct 18, 2021

Or this for Video:

private static GrabbedMedia ChooseHighestResolution(GrabResult result, MediaChannels channel)
{
	var resources = result.Resources<GrabbedMedia>()
		.Where(m => m.Channels == channel)
		.ToList();

	if (resources.Count == 0)
		return null;

	double Highest = 0;
	int Picked = 0;

	for (var i = 0; i < resources.Count; i++)
	{
		var resource = resources[i];
		string value = Regex.Replace(resource.Resolution, "[A-Za-z ]", "");
		double parsedValue = double.Parse(value);
		if (parsedValue > Highest)
		{
			Picked = i;
			Highest = parsedValue;
		}
		//Console.WriteLine($"{i}. {resource.Title ?? resource.FormatTitle ?? resource.Resolution}");
	}
	return resources[Picked];

}

@javidsho
Copy link
Contributor Author

Something like this?

    //Highest Bitrate
    private static GrabbedMedia ChooseHighestBitrateMedia(GrabResult result, MediaChannels channel)
    {
        var resources = result.Resources<GrabbedMedia>()
            .Where(m => m.Channels == channel)
            .ToList();

        if (resources.Count == 0)
            return null;

        double Highest = 0;
        int Picked = 0;

        for (var i = 0; i < resources.Count; i++)
        {
            var resource = resources[i];
            string value = Regex.Replace(resource.BitRateString, "[A-Za-z ]", "");
            double parsedValue = double.Parse(value);
            if (parsedValue > Highest)
            {
                Picked = i;
                Highest = parsedValue;
            }
            //Console.WriteLine($"{i}. {resource.Title ?? resource.FormatTitle ?? resource.Resolution}");
        }
        return resources[Picked];
       
    }

Hey there,
Thanks for the code. Did you test it on multiple sources or just YouTube?

@Jeager2
Copy link

Jeager2 commented Oct 25, 2021

I only checked youtube. (Was out of town the past few days... sorry for the slow response.)

@javidsho
Copy link
Contributor Author

Check out the new extension methods available in the package SharpGrabber v2.0.2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants