예제 #1
0
        public void ShowTorrentSearch(DownloadSearchCriteria crit)
        {
            this.Cursor = Cursors.Wait;

            tabControl1.SelectedIndex = TAB_MAIN_Downloads;
            tabcDownloads.SelectedIndex = 1;
            ucTorrentSearch.PerformSearch(crit);

            this.Cursor = Cursors.Arrow;
        }
예제 #2
0
        private void CommandBinding_ShowTorrentSearch(object sender, ExecutedRoutedEventArgs e)
        {
            //object obj = lbGroupsSeries.SelectedItem;
            object obj = e.Parameter;
            if (obj == null) return;

            try
            {
                if (obj.GetType() == typeof(AnimeEpisodeVM))
                {
                    AnimeEpisodeVM ep = (AnimeEpisodeVM)obj;
                    DownloadSearchCriteria crit = new DownloadSearchCriteria(DownloadSearchType.Episode, ep);
                    ShowTorrentSearch(crit);
                }

                if (obj.GetType() == typeof(MissingEpisodeVM))
                {
                    MissingEpisodeVM rec = obj as MissingEpisodeVM;
                    if (rec == null) return;

                    JMMServerBinary.Contract_AnimeEpisode contract = JMMServerVM.Instance.clientBinaryHTTP.GetEpisodeByAniDBEpisodeID(rec.EpisodeID,
                        JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
                    if (contract != null)
                    {
                        DownloadSearchCriteria crit = new DownloadSearchCriteria(DownloadSearchType.Episode, new AnimeEpisodeVM(contract));
                        ShowTorrentSearch(crit);
                    }
                }

                /*if (obj.GetType() == typeof(MissingFileVM))
                {
                    MissingFileVM mis = (MissingFileVM)obj;
                    ShowPinnedSeries(mis.AnimeSeries);
                }*/

                if (obj.GetType() == typeof(RecommendationVM))
                {
                    RecommendationVM rec = obj as RecommendationVM;
                    if (rec == null) return;

                    DownloadSearchCriteria crit = new DownloadSearchCriteria(DownloadSearchType.Series, rec.Recommended_AniDB_Anime);
                    ShowTorrentSearch(crit);
                }

                if (obj.GetType() == typeof(AniDB_AnimeVM))
                {
                    AniDB_AnimeVM anime = (AniDB_AnimeVM)obj;
                    DownloadSearchCriteria crit = new DownloadSearchCriteria(DownloadSearchType.Series, anime);
                    ShowTorrentSearch(crit);
                }

                if (obj.GetType() == typeof(AnimeSeriesVM))
                {
                    AnimeSeriesVM ser = (AnimeSeriesVM)obj;
                    DownloadSearchCriteria crit = new DownloadSearchCriteria(DownloadSearchType.Series, ser.AniDB_Anime);
                    ShowTorrentSearch(crit);
                }

                if (obj.GetType() == typeof(AniDB_Anime_SimilarVM))
                {
                    AniDB_Anime_SimilarVM sim = (AniDB_Anime_SimilarVM)obj;
                    DownloadSearchCriteria crit = new DownloadSearchCriteria(DownloadSearchType.Series, sim.AniDB_Anime);
                    ShowTorrentSearch(crit);
                }

                if (obj.GetType() == typeof(AniDB_Anime_RelationVM))
                {
                    AniDB_Anime_RelationVM rel = (AniDB_Anime_RelationVM)obj;
                    DownloadSearchCriteria crit = new DownloadSearchCriteria(DownloadSearchType.Series, rel.AniDB_Anime);
                    ShowTorrentSearch(crit);
                }

                if (obj.GetType() == typeof(BookmarkedAnimeVM))
                {
                    BookmarkedAnimeVM ba = (BookmarkedAnimeVM)obj;
                    DownloadSearchCriteria crit = new DownloadSearchCriteria(DownloadSearchType.Series, ba.AniDB_Anime);
                    ShowTorrentSearch(crit);
                }

            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
예제 #3
0
		public static List<TorrentLinkVM> SearchTorrents(DownloadSearchCriteria search)
		{
			List<string> parms = search.GetParms();
			List<TorrentLinkVM> links = new List<TorrentLinkVM>();

			List<string> episodeGroupParms = new List<string>();

			// get the sources that are in both the selected sources and the default sources
			// default sources have an order
			List<TorrentSourceVM> orderedSources = new List<TorrentSourceVM>();

			// if only full torrent sites
			bool onlyFullSites = false;
			if (search.SearchType == DownloadSearchType.Series)
			{
				if (UserSettingsVM.Instance.BakaBTOnlyUseForSeriesSearches &&
				!string.IsNullOrEmpty(UserSettingsVM.Instance.BakaBTUsername) && !string.IsNullOrEmpty(UserSettingsVM.Instance.BakaBTPassword))
				{
					onlyFullSites = true;
					TorrentSourceVM src = new TorrentSourceVM(TorrentSourceType.BakaBT, true);
					orderedSources.Add(src);
				}

				if (UserSettingsVM.Instance.AnimeBytesOnlyUseForSeriesSearches &&
				!string.IsNullOrEmpty(UserSettingsVM.Instance.AnimeBytesUsername) && !string.IsNullOrEmpty(UserSettingsVM.Instance.AnimeBytesPassword))
				{
					onlyFullSites = true;
					TorrentSourceVM src = new TorrentSourceVM(TorrentSourceType.AnimeBytes, true);
					orderedSources.Add(src);
				}
			}

			if (!onlyFullSites)
			{
				foreach (TorrentSourceVM src in UserSettingsVM.Instance.SelectedTorrentSources)
				{
					foreach (TorrentSourceVM srcCur in UserSettingsVM.Instance.CurrentSearchTorrentSources)
					{
						if (srcCur.IsDisabled) continue;
						if (src.TorrentSource == srcCur.TorrentSource)
							orderedSources.Add(srcCur);
					}
				}

				// now get any sources that we missed
				foreach (TorrentSourceVM src in UserSettingsVM.Instance.CurrentSearchTorrentSources)
				{
					if (src.IsDisabled) continue;
					bool foundSource = false;
					foreach (TorrentSourceVM srcDone in orderedSources)
					{
						if (srcDone.TorrentSource == src.TorrentSource) foundSource = true;
					}
					if (!foundSource)
						orderedSources.Add(src);
				}
			}

			foreach (TorrentSourceVM src in orderedSources)
			{
				if (src.IsDisabled) continue;

				if (src.TorrentSource == TorrentSourceType.Nyaa)
				{
					TorrentsNyaa nyaa = new TorrentsNyaa();
					List<TorrentLinkVM> ttLinks = null;
					Dictionary<string, TorrentLinkVM> dictLinks = new Dictionary<string, TorrentLinkVM>();

					foreach (string grp in episodeGroupParms)
					{
						List<string> tempParms = new List<string>();
						foreach (string parmTemp in parms)
							tempParms.Add(parmTemp);
						tempParms.Insert(0, grp);
						ttLinks = nyaa.GetTorrents(tempParms);

						logger.Trace("Searching for: " + search.ToString() + "(" + grp + ")");

						// only use the first 10
						int x = 0;
						foreach (TorrentLinkVM link in ttLinks)
						{
							if (x == 10) break;
							dictLinks[link.TorrentDownloadLink] = link;
							logger.Trace("Adding link: " + link.ToString());
						}
					}

					logger.Trace("Searching for: " + search.ToString());
					ttLinks = nyaa.GetTorrents(parms);
					foreach (TorrentLinkVM link in ttLinks)
					{
						dictLinks[link.TorrentDownloadLink] = link;
						//logger.Trace("Adding link: " + link.ToString());
					}

					links.AddRange(dictLinks.Values);
				}

				if (src.TorrentSource == TorrentSourceType.AnimeSuki)
				{
					TorrentsAnimeSuki suki = new TorrentsAnimeSuki();
					List<TorrentLinkVM> sukiLinks = suki.GetTorrents(parms);
					links.AddRange(sukiLinks);
				}

				if (src.TorrentSource == TorrentSourceType.BakaBT)
				{
					TorrentsBakaBT bakaBT = new TorrentsBakaBT();
					List<TorrentLinkVM> bbLinks = bakaBT.GetTorrents(parms);
					links.AddRange(bbLinks);
				}

				if (src.TorrentSource == TorrentSourceType.AnimeBytes)
				{
					TorrentsAnimeBytes abytes = new TorrentsAnimeBytes();
					List<TorrentLinkVM> abytesLinks = abytes.GetTorrents(parms);
					links.AddRange(abytesLinks);
				}

				if (src.TorrentSource == TorrentSourceType.TokyoToshokanAll || src.TorrentSource == TorrentSourceType.TokyoToshokanAnime)
				{
					TorrentsTokyoToshokan tt = new TorrentsTokyoToshokan(src.TorrentSource);
					List<TorrentLinkVM> ttLinks = null;
					Dictionary<string, TorrentLinkVM> dictLinks = new Dictionary<string, TorrentLinkVM>();

					foreach (string grp in episodeGroupParms)
					{
						List<string> tempParms = new List<string>();
						foreach (string parmTemp in parms)
							tempParms.Add(parmTemp);
						tempParms.Insert(0, grp);
						ttLinks = tt.GetTorrents(tempParms);

						logger.Trace("Searching for: " + search.ToString() + "(" + grp + ")");

						// only use the first 10
						int x = 0;
						foreach (TorrentLinkVM link in ttLinks)
						{
							if (x == 0) break;
							dictLinks[link.TorrentDownloadLink] = link;
							//logger.Trace("Adding link: " + link.ToString());
						}
					}

					logger.Trace("Searching for: " + search.ToString());
					ttLinks = tt.GetTorrents(parms);
					foreach (TorrentLinkVM link in ttLinks)
					{
						dictLinks[link.TorrentDownloadLink] = link;
						//logger.Trace("Adding link: " + link.ToString());
					}

					links.AddRange(dictLinks.Values);
				}

				
			}



			return links;
		}
		void btnSearch_Click(object sender, RoutedEventArgs e)
		{
			if (string.IsNullOrEmpty(txtSearch.Text)) return;

			DownloadSearchCriteria crit = new DownloadSearchCriteria(DownloadSearchType.Manual, txtSearch.Text.Trim());
			PerformSearch(crit);
		}
		public void PerformSearch(DownloadSearchCriteria crit)
		{
			this.Cursor = Cursors.Wait;
			TorrentSearchStatus = string.Format("Searching...");

			try
			{
				CurrentSearchCriteria = crit;
				this.IsEnabled = false;

				if (crit.SearchType != DownloadSearchType.Manual)
				{
					string desc = "";
					foreach (string parm in crit.GetParms())
					{
						if (!string.IsNullOrEmpty(desc))
							desc += " ";
						desc += parm;
					}
					txtSearch.Text = desc;
				}

				SubGroups.Clear();
				TorrentLinks.Clear();
				ViewTorrentLinks.Refresh();

				searchWorker.RunWorkerAsync(crit);
				

			}
			catch (Exception ex)
			{
				Utils.ShowErrorMessage(ex);
			}
		}
예제 #6
0
        public static List <TorrentLinkVM> SearchTorrents(DownloadSearchCriteria search)
        {
            List <string>        parms = search.GetParms();
            List <TorrentLinkVM> links = new List <TorrentLinkVM>();

            List <string> episodeGroupParms = new List <string>();

            // get the sources that are in both the selected sources and the default sources
            // default sources have an order
            List <TorrentSourceVM> orderedSources = new List <TorrentSourceVM>();

            // if only full torrent sites
            bool onlyFullSites = false;

            if (search.SearchType == DownloadSearchType.Series)
            {
                if (UserSettingsVM.Instance.BakaBTOnlyUseForSeriesSearches &&
                    !string.IsNullOrEmpty(UserSettingsVM.Instance.BakaBTUsername) && !string.IsNullOrEmpty(UserSettingsVM.Instance.BakaBTPassword))
                {
                    onlyFullSites = true;
                    TorrentSourceVM src = new TorrentSourceVM(TorrentSourceType.BakaBT, true);
                    orderedSources.Add(src);
                }

                if (UserSettingsVM.Instance.AnimeBytesOnlyUseForSeriesSearches &&
                    !string.IsNullOrEmpty(UserSettingsVM.Instance.AnimeBytesUsername) && !string.IsNullOrEmpty(UserSettingsVM.Instance.AnimeBytesPassword))
                {
                    onlyFullSites = true;
                    TorrentSourceVM src = new TorrentSourceVM(TorrentSourceType.AnimeBytes, true);
                    orderedSources.Add(src);
                }
            }

            if (!onlyFullSites)
            {
                foreach (TorrentSourceVM src in UserSettingsVM.Instance.SelectedTorrentSources)
                {
                    foreach (TorrentSourceVM srcCur in UserSettingsVM.Instance.CurrentSearchTorrentSources)
                    {
                        if (srcCur.IsDisabled)
                        {
                            continue;
                        }
                        if (src.TorrentSource == srcCur.TorrentSource)
                        {
                            orderedSources.Add(srcCur);
                        }
                    }
                }

                // now get any sources that we missed
                foreach (TorrentSourceVM src in UserSettingsVM.Instance.CurrentSearchTorrentSources)
                {
                    if (src.IsDisabled)
                    {
                        continue;
                    }
                    bool foundSource = false;
                    foreach (TorrentSourceVM srcDone in orderedSources)
                    {
                        if (srcDone.TorrentSource == src.TorrentSource)
                        {
                            foundSource = true;
                        }
                    }
                    if (!foundSource)
                    {
                        orderedSources.Add(src);
                    }
                }
            }

            foreach (TorrentSourceVM src in orderedSources)
            {
                if (src.IsDisabled)
                {
                    continue;
                }

                if (src.TorrentSource == TorrentSourceType.Nyaa)
                {
                    TorrentsNyaa         nyaa    = new TorrentsNyaa();
                    List <TorrentLinkVM> ttLinks = null;
                    Dictionary <string, TorrentLinkVM> dictLinks = new Dictionary <string, TorrentLinkVM>();

                    foreach (string grp in episodeGroupParms)
                    {
                        List <string> tempParms = new List <string>();
                        foreach (string parmTemp in parms)
                        {
                            tempParms.Add(parmTemp);
                        }
                        tempParms.Insert(0, grp);
                        ttLinks = nyaa.GetTorrents(tempParms);

                        logger.Trace("Searching for: " + search.ToString() + "(" + grp + ")");

                        // only use the first 10
                        int x = 0;
                        foreach (TorrentLinkVM link in ttLinks)
                        {
                            if (x == 10)
                            {
                                break;
                            }
                            dictLinks[link.TorrentDownloadLink] = link;
                            logger.Trace("Adding link: " + link.ToString());
                        }
                    }

                    logger.Trace("Searching for: " + search.ToString());
                    ttLinks = nyaa.GetTorrents(parms);
                    foreach (TorrentLinkVM link in ttLinks)
                    {
                        dictLinks[link.TorrentDownloadLink] = link;
                        //logger.Trace("Adding link: " + link.ToString());
                    }

                    links.AddRange(dictLinks.Values);
                }

                if (src.TorrentSource == TorrentSourceType.AnimeSuki)
                {
                    TorrentsAnimeSuki    suki      = new TorrentsAnimeSuki();
                    List <TorrentLinkVM> sukiLinks = suki.GetTorrents(parms);
                    links.AddRange(sukiLinks);
                }

                if (src.TorrentSource == TorrentSourceType.BakaBT)
                {
                    TorrentsBakaBT       bakaBT  = new TorrentsBakaBT();
                    List <TorrentLinkVM> bbLinks = bakaBT.GetTorrents(parms);
                    links.AddRange(bbLinks);
                }

                if (src.TorrentSource == TorrentSourceType.AnimeBytes)
                {
                    TorrentsAnimeBytes   abytes      = new TorrentsAnimeBytes();
                    List <TorrentLinkVM> abytesLinks = abytes.GetTorrents(parms);
                    links.AddRange(abytesLinks);
                }

                if (src.TorrentSource == TorrentSourceType.TokyoToshokanAll || src.TorrentSource == TorrentSourceType.TokyoToshokanAnime)
                {
                    TorrentsTokyoToshokan tt      = new TorrentsTokyoToshokan(src.TorrentSource);
                    List <TorrentLinkVM>  ttLinks = null;
                    Dictionary <string, TorrentLinkVM> dictLinks = new Dictionary <string, TorrentLinkVM>();

                    foreach (string grp in episodeGroupParms)
                    {
                        List <string> tempParms = new List <string>();
                        foreach (string parmTemp in parms)
                        {
                            tempParms.Add(parmTemp);
                        }
                        tempParms.Insert(0, grp);
                        ttLinks = tt.GetTorrents(tempParms);

                        logger.Trace("Searching for: " + search.ToString() + "(" + grp + ")");

                        // only use the first 10
                        int x = 0;
                        foreach (TorrentLinkVM link in ttLinks)
                        {
                            if (x == 0)
                            {
                                break;
                            }
                            dictLinks[link.TorrentDownloadLink] = link;
                            //logger.Trace("Adding link: " + link.ToString());
                        }
                    }

                    logger.Trace("Searching for: " + search.ToString());
                    ttLinks = tt.GetTorrents(parms);
                    foreach (TorrentLinkVM link in ttLinks)
                    {
                        dictLinks[link.TorrentDownloadLink] = link;
                        //logger.Trace("Adding link: " + link.ToString());
                    }

                    links.AddRange(dictLinks.Values);
                }
            }



            return(links);
        }