MCPcopy Create free account
hub / github.com/Moosync/Moosync / get_suggestions

Method get_suggestions

src-tauri/src/providers/spotify.rs:772–831  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

770
771 #[tracing::instrument(level = "debug", skip(self))]
772 async fn get_suggestions(&self) -> Result<Vec<Song>> {
773 if let Some(api_client) = self.get_api_client().await.as_ref() {
774 let mut i = 0;
775 let mut ret = vec![];
776 while i < 5 {
777 let user_top_tracks = api_client
778 .api_client
779 .current_user_top_tracks(None)
780 .next()
781 .await;
782 if let Some(track) = user_top_tracks {
783 let track = track?;
784 if let Some(track_id) = track.id {
785 ret.push(track_id);
786 i += 1;
787 }
788 } else {
789 break;
790 }
791 }
792 let recom = api_client
793 .api_client
794 .recommendations(
795 vec![],
796 Some(vec![]),
797 Some(vec![]),
798 Some(ret),
799 None,
800 Some(100),
801 )
802 .await?;
803 return Ok(recom
804 .tracks
805 .iter()
806 .map(|t| {
807 self.parse_playlist_item(FullTrack {
808 album: t.album.clone().unwrap_or_default(),
809 artists: t.artists.clone(),
810 disc_number: t.disc_number,
811 duration: t.duration,
812 id: t.id.clone(),
813 name: t.name.clone(),
814 track_number: t.track_number,
815 available_markets: vec![],
816 explicit: t.explicit,
817 external_urls: t.external_urls.clone(),
818 external_ids: HashMap::new(),
819 href: None,
820 is_local: false,
821 is_playable: None,
822 linked_from: None,
823 restrictions: None,
824 popularity: 0,
825 preview_url: t.preview_url.clone(),
826 })
827 })
828 .collect());
829 }

Callers

nothing calls this directly

Calls 3

parse_playlist_itemMethod · 0.80
cloneMethod · 0.80
get_api_clientMethod · 0.45

Tested by

no test coverage detected