public R <Image> GetThumbnail(PlayResource playResource) { if (!WebWrapper.DownloadString(out string response, new Uri($"https://www.googleapis.com/youtube/v3/videos?part=snippet&id={playResource.BaseData.ResourceId}&key={data.ApiKey}"))) { return("No connection"); } var parsed = Util.Serializer.Deserialize <JSON_PlaylistItems>(response); var imgurl = new Uri(parsed.items[0].snippet.thumbnails.medium.url); Image img = null; var resresult = WebWrapper.GetResponse(imgurl, (webresp) => { using (var stream = webresp.GetResponseStream()) { img = Image.FromStream(stream); } }); if (resresult != ValidateCode.Ok) { return("Error while reading image"); } return(img); }
public R <Stream, LocalStr> GetThumbnail(ResolveContext _, PlayResource playResource) { byte[] rawImgData; if (playResource is MediaPlayResource mediaPlayResource) { rawImgData = mediaPlayResource.Image; } else { var uri = new Uri(playResource.PlayUri); var result = GetStreamFromUriUnsafe(uri); if (!result) { return(result.Error); } using (var stream = result.Value) { rawImgData = AudioTagReader.GetData(stream)?.Picture; } } if (rawImgData is null) { return(new LocalStr(strings.error_media_image_not_found)); } return(new MemoryStream(rawImgData)); }
public R <Image> GetThumbnail(PlayResource playResource) { var uri = new Uri(playResource.PlayUri); var result = GetStreamFromUriUnsafe(uri); if (!result) { return(result.Error); } using (var stream = result.Value) { var data = AudioTagReader.GetImage(stream); if (data == null) { return("No image found"); } using (var memStream = new MemoryStream(data)) { try { return(new Bitmap(memStream)); } catch (ArgumentException) { return("Inavlid image data"); } } } }
public R <Stream, LocalStr> GetThumbnail(PlayResource playResource) { var uri = new Uri($"https://api.soundcloud.com/tracks/{playResource.BaseData.ResourceId}?client_id={SoundcloudClientId}"); if (!WebWrapper.DownloadString(out string jsonResponse, uri)) { return(new LocalStr(strings.error_net_no_connection)); } var parsedDict = ParseJson(jsonResponse); if (parsedDict is null) { return(new LocalStr(strings.error_media_internal_missing + " (parsedDict)")); } var imgUrl = parsedDict.TryCast <string>("artwork_url").OkOr(null); if (imgUrl is null) { return(new LocalStr(strings.error_media_internal_missing + " (artwork_url)")); } // t500x500: 500px×500px // crop : 400px×400px // t300x300: 300px×300px // large : 100px×100px imgUrl = imgUrl.Replace("-large", "-t300x300"); var imgurl = new Uri(imgUrl); return(WebWrapper.GetResponseUnsafe(imgurl)); }
public async Task GetThumbnail(ResolveContext _, PlayResource playResource, Func <Stream, Task> action) { byte[]? rawImgData; if (playResource is MediaPlayResource mediaPlayResource) { rawImgData = mediaPlayResource.Image; } else { var uri = new Uri(playResource.PlayUri); if (uri.IsWeb()) { rawImgData = await WebWrapper.Request(uri) .ToAction(async response => AudioTagReader.GetData(await response.Content.ReadAsStreamAsync())?.Picture); } else if (uri.IsFile()) { rawImgData = AudioTagReader.GetData(File.OpenRead(uri.LocalPath))?.Picture; } else { throw Error.LocalStr(strings.error_media_invalid_uri); } } if (rawImgData is null) { throw Error.LocalStr(strings.error_media_image_not_found); } await action(new MemoryStream(rawImgData)); }
public R <Image> GetThumbnail(PlayResource playResource) { if (allFacories.TryGetValue(playResource.BaseData.AudioType, out var factory) && factory is IThumbnailFactory thumbFactory) { return(thumbFactory.GetThumbnail(playResource)); } return("No matching thumbnail factory found"); }
public R <Stream, LocalStr> GetThumbnail(ResolveContext ctx, PlayResource playResource) { var urlOption = GetThumbnailUrl(ctx, playResource); if (!urlOption.Ok) { return(urlOption.Error); } return(WebWrapper.GetResponseUnsafe(urlOption.Value)); }
public R <Image> GetThumbnail(PlayResource playResource) { var uri = new Uri($"https://api.soundcloud.com/tracks/{playResource.BaseData.ResourceId}?client_id={SoundcloudClientId}"); if (!WebWrapper.DownloadString(out string jsonResponse, uri)) { return("Error or no response by soundcloud"); } var parsedDict = ParseJson(jsonResponse); if (parsedDict == null) { return("Empty or missing response parts (parsedDict)"); } var imgUrl = parsedDict.TryCast <string>("artwork_url").OkOr(null); if (imgUrl == null) { return("Empty or missing response parts (artwork_url)"); } // t500x500: 500px×500px // crop : 400px×400px // t300x300: 300px×300px // large : 100px×100px imgUrl = imgUrl.Replace("-large", "-t300x300"); var imgurl = new Uri(imgUrl); Image img = null; var resresult = WebWrapper.GetResponse(imgurl, (webresp) => { using (var stream = webresp.GetResponseStream()) { if (stream != null) { img = Image.FromStream(stream); } } }); if (resresult != ValidateCode.Ok) { return("Error while reading image"); } return(img); }
public R <Stream, LocalStr> GetThumbnail(PlayResource playResource) { if (!WebWrapper.DownloadString(out string response, new Uri($"https://www.googleapis.com/youtube/v3/videos?part=snippet&id={playResource.BaseData.ResourceId}&key={YoutubeProjectId}"))) { return(new LocalStr(strings.error_net_no_connection)); } var parsed = JsonConvert.DeserializeObject <JsonPlaylistItems>(response); // default: 120px/ 90px // medium : 320px/180px // high : 480px/360px var imgurl = new Uri(parsed.items[0].snippet.thumbnails.medium.url); return(WebWrapper.GetResponseUnsafe(imgurl)); }
public R <Stream, LocalStr> GetThumbnail(PlayResource playResource) { string artId; if (playResource is BandcampPlayResource bandcampPlayResource) { artId = bandcampPlayResource.ArtId; } else { var result = DownloadEmbeddedSite(playResource.BaseData.ResourceId); if (!result.Ok) { return(result.Error); } var webSite = result.Value; artId = GetTrackArtId(webSite); } if (string.IsNullOrEmpty(artId)) { return(new LocalStr(strings.error_media_image_not_found)); } // 1 : 1600px/1600px // 2 : 350px/ 350px // 3 : 100px/ 100px / full digital discography // 4 : 300px/ 300px // 5 : 700px/ 700px // 6 : 100px/ 100px // 7 : 150px/ 150px / discography // 8 : 124px/ 127px // 9 : 210px/ 210px / suggestion // 10 : 1200px/1200px / main banner // 11 : 172px/ 172px // 12 : 138px/ 138px // 13 : 380px/ 380px // 14 : 368px/ 368px // 15 : 135px/ 135px // 16 : 700px/ 700px // 42 : 50px/ 50px / supporter var imgurl = new Uri($"https://f4.bcbits.com/img/a{artId}_4.jpg"); return(WebWrapper.GetResponseUnsafe(imgurl)); }
public R <Uri, LocalStr> GetThumbnailUrl(ResolveContext ctx, PlayResource playResource) { var trackId = SpotifyApi.UriToTrackId(playResource.BaseData.ResourceId); if (!trackId.Ok) { return(trackId.Error); } var response = api.Request(() => api.Client.Tracks.Get(trackId.Value)); if (!response.Ok) { return(response.Error); } return(new Uri(response.Value.Album.Images.OrderByDescending(item => item.Height).ToList()[0].Url)); }
public async Task GetThumbnail(ResolveContext _, PlayResource playResource, Func <Stream, Task> action) { var thumb = await WebWrapper .Request($"https://api.soundcloud.com/tracks/{playResource.AudioResource.ResourceId}?client_id={SoundcloudClientId}") .AsJson <JsonTumbnailMinimal>(); if (thumb is null) { throw Error.LocalStr(strings.error_media_internal_missing + " (thumb)"); } if (thumb.artwork_url is null) { throw Error.LocalStr(strings.error_media_internal_missing + " (artwork_url)"); } // t500x500: 500px×500px // crop : 400px×400px // t300x300: 300px×300px // large : 100px×100px await WebWrapper.Request(thumb.artwork_url.Replace("-large", "-t300x300")).ToStream(action); }
public R <Image> GetThumbnail(PlayResource playResource) { byte[] rawImgData; if (playResource is MediaPlayResource mediaPlayResource) { rawImgData = mediaPlayResource.Image; } else { var uri = new Uri(playResource.PlayUri); var result = GetStreamFromUriUnsafe(uri); if (!result) { return(result.Error); } using (var stream = result.Value) { rawImgData = AudioTagReader.GetData(stream)?.Picture; } } if (rawImgData == null) { return("No image found"); } using (var memStream = new MemoryStream(rawImgData)) { try { return(new Bitmap(memStream)); } catch (ArgumentException) { return("Inavlid image data"); } } }
public async Task GetThumbnail(ResolveContext _, PlayResource playResource, Func <Stream, Task> action) { string?artId = null; if (playResource is BandcampPlayResource bandcampPlayResource) { artId = bandcampPlayResource.ArtId; } if (artId is null) { var webSite = await DownloadEmbeddedSite(playResource.AudioResource.ResourceId); artId = GetTrackArtId(webSite); } if (string.IsNullOrEmpty(artId)) { throw Error.LocalStr(strings.error_media_image_not_found); } // 1 : 1600px/1600px // 2 : 350px/ 350px // 3 : 100px/ 100px / full digital discography // 4 : 300px/ 300px // 5 : 700px/ 700px // 6 : 100px/ 100px // 7 : 150px/ 150px / discography // 8 : 124px/ 127px // 9 : 210px/ 210px / suggestion // 10 : 1200px/1200px / main banner // 11 : 172px/ 172px // 12 : 138px/ 138px // 13 : 380px/ 380px // 14 : 368px/ 368px // 15 : 135px/ 135px // 16 : 700px/ 700px // 42 : 50px/ 50px / supporter await WebWrapper.Request($"https://f4.bcbits.com/img/a{artId}_4.jpg").ToStream(action); }
public R <Uri, LocalStr> GetThumbnailUrl(ResolveContext ctx, PlayResource playResource) { throw new NotImplementedException(); }
public R <Image> GetThumbnail(PlayResource playResource) { string artId; if (playResource is BandcampPlayResource bandcampPlayResource) { artId = bandcampPlayResource.ArtId; } else { var result = DownloadEmbeddedSite(playResource.BaseData.ResourceId); if (!result.Ok) { return(result.Error); } var webSite = result.Value; artId = GetTrackArtId(webSite); } if (string.IsNullOrEmpty(artId)) { return("No image found"); } // 1 : 1600px/1600px // 2 : 350px/ 350px // 3 : 100px/ 100px / full digital discography // 4 : 300px/ 300px // 5 : 700px/ 700px // 6 : 100px/ 100px // 7 : 150px/ 150px / discography // 8 : 124px/ 127px // 9 : 210px/ 210px / suggestion // 10 : 1200px/1200px / main banner // 11 : 172px/ 172px // 12 : 138px/ 138px // 13 : 380px/ 380px // 14 : 368px/ 368px // 15 : 135px/ 135px // 16 : 700px/ 700px // 42 : 50px/ 50px / supporter var imgurl = new Uri($"https://f4.bcbits.com/img/a{artId}_4.jpg"); Image img = null; var resresult = WebWrapper.GetResponse(imgurl, (webresp) => { using (var stream = webresp.GetResponseStream()) { if (stream != null) { img = Image.FromStream(stream); } } }); if (resresult != ValidateCode.Ok) { return("Error while reading image"); } return(img); }
public Task GetThumbnail(PlayResource playResource, Func <Stream, Task> action) => Resolver.GetThumbnail(this, playResource, action);
public R <Stream, LocalStr> GetThumbnail(PlayResource playResource) => Resolver.GetThumbnail(this, playResource);
public R <Uri, LocalStr> GetThumbnailUrl(PlayResource playResource) => Resolver.GetThumbnailUrl(this, playResource);