public static async Task <TrackData> Parse(string input) { if (File.Exists(input)) { return(new TrackData(input, Utils.GetFilename(input))); } IStreamResolver resolver = await FindValidResovler(input); if (resolver == null) { return(null); } TrackData retval = new TrackData(input, resolver); if (resolver.SupportsTrackNames) { retval.Name = await resolver.GetTrackName(input); } else { retval.Name = input; } return(retval); }