private void AudioShow() { AttachmentsList.Items.Clear(); var getHistoryAttachments = GettingHistoryAttachments(VkNet.Enums.SafetyEnums.MediaType.Audio); foreach (var audio in getHistoryAttachments) { var aud = audio.Attachment.Instance as VkNet.Model.Attachments.Audio; // Если ссылка указывает на файл типа m3u8, переводим её в ссылку mp3 string url = aud.Url.AbsoluteUri.Contains(".mp3") ? aud.Url.AbsoluteUri : M3U8ToMp3(aud.Url.AbsoluteUri); var preview = new AudioCover() { Photo300 = ImgNotAvailable }; try { preview = aud.Album.Thumb; } catch { } var attachment = new VkAttachment.VkAudio(aud.Title, url, preview); AttachmentsList.Items.Add(attachment); } }
public static IEnumerable <IDownload> ToDownloads(this AudioCover cover, FilesystemTools filesystemTools, DirectoryInfo dir, ILog log) { var best = cover.Photo600 ?? cover.Photo300 ?? cover.Photo270 ?? cover.Photo135 ?? cover.Photo68 ?? cover.Photo34; var image = best == null ? null : new Uri(best); // TODO: i guess it's always jpeg? var ext = Path.HasExtension(image?.AbsoluteUri) ? Path.GetExtension(image?.AbsoluteUri) : ".jpg"; if (image == null) { yield break; } var file = $"__cover{ext}"; yield return(new Download(image, dir, file)); }
public async Task ProcessAttachment(AudioCover audioCover, DirectoryInfo workDir, CancellationToken token, ILog log) { await downloadQueueProvider.EnqueueAll(audioCover.ToDownloads(filesystemTools, workDir, log), token); }
public VkAudio(string title, string url, AudioCover thumb, string extension = ".mp3") : base(title, url, extension) { PreviewUrl = thumb.Photo300; ClearNameFromIllegalSymbols(); }