private Queries BuildQueryFromRequest(IWebQuery query) { Queries res = GetBasicQuery(); Query smallquery = new Query(); res.Query = smallquery; switch (query.Type) { case QueryType.FromAlbumInfo: smallquery.Command = "ALBUM_SEARCH"; smallquery.AddSearch(Type: "ARTIST", Value: query.AlbumDescriptor.Artist) .AddSearch(Type: "ALBUM_TITLE", Value: query.AlbumDescriptor.Name); smallquery.RangeDto = new RangeDto(1, query.MaxResult); if (query.NeedCoverArt) smallquery.Mode = "SINGLE_BEST_COVER"; smallquery.NeedFullCover(); break; case QueryType.FromCD: smallquery.Command = "ALBUM_TOC"; smallquery.Mode = "SINGLE_BEST_COVER"; smallquery.Toc = new Toc(query.CDInfo.Tocs); break; } return res; }
internal InternetFinder(IWebUserSettings iic, IWebQuery iQuery) { //_OnResult = new UISafeEvent<InternetFinderResultEventArgs>(this); //_OnInternetError = new UISafeEvent<InternetFailedArgs>(this); _WSM = iic; Query = iQuery; _Res = new WebResult(); }
public IEnumerable<Match<AlbumDescriptor>> Search(IWebQuery query, CancellationToken iCancellation) { if (query.Type== QueryType.FromCD) return Enumerable.Empty<Match<AlbumDescriptor>>(); if (query.NeedCoverArt) return Enumerable.Empty<Match<AlbumDescriptor>>(); dynamic res = _RoviClient.Limit(query.MaxResult).SearchAlbum(query.AlbumDescriptor).GetAnswer(); if ((res==null) || (res.searchResponse==null)) return Enumerable.Empty<Match<AlbumDescriptor>>(); return GetAlbumDescriptor(res.searchResponse.results, iCancellation); }
public IEnumerable<Match<AlbumDescriptor>> Search(IWebQuery query, CancellationToken iCancellationToken) { if ((query == null) || (query.Type != QueryType.FromCD)) yield break; //CDInfoQuery cdiq = query as CDInfoQuery; //if (cdiq == null) // yield break; ICDInfoHandler CDUnit = query.CDInfo; if (CDUnit == null) yield break; string ID = CDUnit.IDs.CDDBQueryString; if (ID == null) yield break; FreedbHelper FDH = new FreedbHelper("test", "abc.company", "FreedbDemo", "1.0"); if (_WSM != null) FDH.MainSiteAdress = _WSM.FreedbServer; List<QueryResult> queryResults = null; try { queryResults = FDH.Query(ID); } catch (Exception ex) { Trace.WriteLine("Unable to retrieve CD Information. " + ex.Message); OnWebExeption(ex); } if (queryResults == null) yield break; foreach (QueryResult queryResult in queryResults) { AlbumDescriptor res = FDH.ConvertToAlbumDescriptor(queryResult, this); if (res!=null) yield return new Match<AlbumDescriptor>(res, MatchPrecision.Suspition); } yield break; }
public IEnumerable<Match<AlbumDescriptor>> Search(IWebQuery query, CancellationToken iCancellation) { if (string.IsNullOrEmpty(_ApplicationID)) return Enumerable.Empty<Match<AlbumDescriptor>>(); if (string.IsNullOrEmpty(_DeviceID)) { Responses rr = _GraceNoteClient.Post(GetRegisterQuery()); if ((rr.Response == null) || (rr.Response.User == null) || (rr.Response.User.Token == null)) { Trace.WriteLine("Unable to register GraceNote on this device"); return Enumerable.Empty<Match<AlbumDescriptor>>(); } _DeviceID = rr.Response.User.Token; _IWebUserSettings.GraceNoteDeviceID = _DeviceID; _IWebUserSettings.Save(); } Queries q = BuildQueryFromRequest(query); Responses r = _GraceNoteClient.Post(q); if ((r.Response == null) || (r.Response.AlbumDto == null)) { return Enumerable.Empty<Match<AlbumDescriptor>>(); } IEnumerable<AlbumDto> Final = r.Response.AlbumDto; if (query.Type==QueryType.FromCD) { Final = Final.Where(adto => adto.TrackCount == query.CDInfo.Tocs.Count); } return Final.Select(adto => new Match<AlbumDescriptor>(AlbumDescriptor.FromGraceNote(adto, query.NeedCoverArt, iCancellation), MatchPrecision.Suspition)) .Where(res => res.FindItem != null); }
public IEnumerable<Match<AlbumDescriptor>> Search(IWebQuery query, CancellationToken iCancellationToken) { if (query == null) yield break; bool needcovers = query.NeedCoverArt; IEnumerable<Match<AlbumDescriptor>> rescoll = null; if (query.Type == QueryType.FromCD) { rescoll = SearchFromCDQuery(query.CDInfo, needcovers, iCancellationToken); } else { rescoll = SearchFromDiscQuery(query.AlbumDescriptor, needcovers, iCancellationToken); } int FoundItem = 0; foreach (Match<AlbumDescriptor> res in rescoll) { if (res != null) { FoundItem++; yield return res; if (FoundItem == query.MaxResult) break; } } }
public IEnumerable<Match<AlbumDescriptor>> Search(IWebQuery query, CancellationToken iCancellationToken) { if (_AmazonClient == null) yield break; if ((query == null) || (query.Type != QueryType.FromAlbumInfo)) yield break; AlbumDescriptorQuery adq = query as AlbumDescriptorQuery; if (adq == null) yield break; IAlbumDescriptor lookingFor = adq.AlbumDescriptor; if (lookingFor == null) yield break; Items[] result = null; try { result = (string.IsNullOrEmpty(lookingFor.IDs.Asin)) ? LookForArtistAndName(lookingFor.Artist, lookingFor.Name) : LookForAsin(lookingFor.IDs.Asin); } catch (Exception ex) { Trace.WriteLine(ex.ToString()); OnWebExeption(ex); yield break; } if (( result == null) || (result.Length==0) ) yield break; Item[] Items = result[0].Item; if ((Items == null) || (Items.Length == 0)) yield break; //int Sizemax = (query.MaxResult == -1) ? Items.Length : Math.Min(Items.Length, query.MaxResult); int Sizemax = Items.Length; int FoundNumber=0; bool NeedCovers = query.NeedCoverArt; for (int i=0;i< Sizemax;i++) { if (iCancellationToken.IsCancellationRequested) yield break; if (FoundNumber == query.MaxResult) break; AlbumDescriptor candidat = AlbumDescriptor.FromAmazonItem(Items[i], NeedCovers,iCancellationToken); if (candidat != null) { FoundNumber++; yield return new Match<AlbumDescriptor>(candidat, MatchPrecision.Suspition); if (FoundNumber == query.MaxResult) break; } } }
public IEnumerable<Match<AlbumDescriptor>> Search(IWebQuery query, CancellationToken iCancellationToken) { if (_Activated == false) yield break; if ( (query==null) || (query.Type!=QueryType.FromAlbumInfo) || (_AuthManager==null)) yield break; IAlbumDescriptor lookingFor = query.AlbumDescriptor; if (lookingFor == null) yield break; Discogs2HttpRequestCreator src = new Discogs2HttpRequestCreator(_UA, _AuthManager, _TOut); HttpJsonInterpretor hji = new HttpJsonInterpretor(src.GetSearchRequest(lookingFor)); dynamic myres = hji.GetObjectResponse(this); if (myres == null) yield break; int Sizemax = myres.results.Count; if (Sizemax == 0) yield break; int FoundItem = 0; InternetServiceListener isl = new InternetServiceListener(); bool needcovers = query.NeedCoverArt; if (iCancellationToken.IsCancellationRequested) yield break; for (int i = 0; i < Sizemax; i++) { Thread.Sleep(1000); if (iCancellationToken.IsCancellationRequested) yield break; //hji = new HttpJsonInterpretor(src.FromUrl(myres.results[i].resource_url)); hji = new HttpJsonInterpretor(InternetProvider.InternetHelper.CreateAuthentified((string)myres.results[i].resource_url, Context.UserAgent, _AuthManager)); dynamic albumresponse = hji.GetObjectResponse(isl); if (albumresponse == null) continue; AlbumDescriptor res = AlbumDescriptor.FromDiscogs(albumresponse, needcovers, _AuthManager, Context, iCancellationToken); if (res != null) { FoundItem++; yield return new Match<AlbumDescriptor>(res, MatchPrecision.Suspition); if (FoundItem == query.MaxResult) break; } if (iCancellationToken.IsCancellationRequested) yield break; } if (!isl.IsOK) { FireEvent(InternetFailed.PartialResult(isl.Failures)); } }
public IInternetFinder GetInternetFinder(IWebQuery iWebQuer) { return new InternetFinder(_ISFact.WebUserSettings, iWebQuer); }