Esempio n. 1
0
 def candidates(text) -> CandidatesTuple:
     url = "https://api.dbpedia-spotlight.org/en/annotate"
     try:
         params = {"text": text}
         response = requests.get(url=url, params=params, headers={"accept": "application/json"}, timeout=5)
         assert response.status_code == 200
         done = CandidatesTuple(**{Utils.clean_key(k): v for k, v in response.json().items()})
     except Exception as e:
         print(f"Unable to resolve DBP Spotlight {url}")
         traceback.print_tb(e.__traceback__)
         raise
     else:
         return done
Esempio n. 2
0
 def artist_mb_metadata(uri: str, force_update: bool = False) -> Dict:
     result = Artist.query.filter_by(spot_uri=uri).first()
     _artist = result.as_dict()
     if result.mb_id is None or force_update:
         try:
             mb_results = metadata.MB().search_artists(result.name)
             _cleaned = {Utils.clean_key(k): v for k, v in mb_results}
             _cleaned_with_genres = MbUtils.add_genres(_cleaned)
             _artist_tuple = MbArtistTuple(**_cleaned_with_genres)
             Persistence.persist_mb_metadata(Artist, result.id,
                                             _artist_tuple)
         except Exception as e:
             print(f"Unable to retrieve artist {uri} metadata:")
             traceback.print_tb(e.__traceback__)
         else:
             _artist.update({
                 "mb_id": _artist_tuple.id,
                 "mb_obj": _artist_tuple._asdict()
             })
     return _artist
Esempio n. 3
0
 def cleaned(d) -> Dict:
     return {Utils.clean_key(k): v for k, v in d.items()}