public void ValidaEpisodioSeriado(string diretorio, string arquivo) { var nomeEpisodio = new Regex("(.*)s\\d\\de\\d\\d", RegexOptions.IgnoreCase).Match(arquivo).Value; if (String.IsNullOrEmpty(nomeEpisodio)) return; var episodio = new Episodio(); episodio.Nome = nomeEpisodio.Replace('.', ' '); episodio.ArquivoEpisodio = arquivo; if (Directory.GetFiles(diretorio, nomeEpisodio + "*").Count() > 1) { episodio.Download = "Ok"; episodio.Status = "Legenda já baixada."; if ((bool)Settings.Default["ExibirJaBaixadas"]) episodios.Add(episodio); } else { episodios.Add(episodio); } }
public void ExtrairLegenda(Episodio episodio) { var extraido = false; try { using (var arquivo = ArchiveFactory.Open(episodio.ArquivoDownload)) { foreach (var entry in arquivo.Entries) { if (TrataNomeArquivo(entry.FilePath) == TrataNomeArquivo(episodio.ArquivoEpisodio)) { entry.WriteToFile(txtDiretorioSeries.Text + "\\" + Path.GetFileNameWithoutExtension(episodio.ArquivoEpisodio) + Path.GetExtension(entry.FilePath)); episodio.Status = "Legenda extraida."; extraido = true; break; } } } } catch { episodio.Status = "Ocorreu um erro ao extrair a legenda."; } if (!extraido) { episodio.Status = "Não foi possivel extrair legenda."; } }
public async void BuscaLegenda(Episodio episodio) { string urlLegenda = "http://legendas.tv/util/carrega_legendas_busca/{0}/1/d"; string urlDownload = "http://legendas.tv/downloadarquivo/{0}"; HtmlAgilityPack.HtmlDocument html = new HtmlAgilityPack.HtmlDocument(); using (WebClientPlus webClient = new WebClientPlus()) { try { webClient.OutboundCookies.Add(cookieAuth); var htmlString = await webClient.DownloadStringTaskAsync(String.Format(urlLegenda, episodio.Nome)); html.LoadHtml(htmlString); string idLegenda = String.Empty; var links = html.DocumentNode.SelectNodes("//p//a[ contains (@href, 'download') ]"); if (links == null) { episodio.Download = "Erro"; episodio.Status = "Legenda não encontrada."; } else { foreach (var link in links) { idLegenda = link.Attributes["href"].Value.Replace("/download/", ""); idLegenda = idLegenda.Substring(0, idLegenda.IndexOf('/')); } var uriDownload = new Uri(String.Format(urlDownload, idLegenda)); var nomeArquivoDownload = String.Format("{0}{1}.rar", pastaDownloads, idLegenda); episodio.ArquivoDownload = nomeArquivoDownload; if (!File.Exists(nomeArquivoDownload)) { webClient.DownloadFileAsync(uriDownload, nomeArquivoDownload, episodio); webClient.DownloadFileCompleted += webClient_DownloadFileCompleted; webClient.DownloadProgressChanged += webClient_DownloadProgressChanged; } else { episodio.Download = "100"; ExtrairLegenda(episodio); } dgvEpisodios.FirstDisplayedScrollingRowIndex = dgvEpisodios.Rows.Count - 1; dgvEpisodios.Update(); } } catch { episodio.Download = "Erro"; episodio.Status = "Ocorreu um erro na busca da legenda."; } } }