Open phuketbinaryt opened 1 year ago
I recently have been unable to access playcounts aswell, but I am having the same issue as #11 although this has not happened before. I am assuming this might be something on Spotify's side too
Same issue for me 😔
Seeing they have some outages on downdetector. Hopefully that’s all it is.
I don’t see playcounts being returned even in Spotify’s own web anymore either. The counts always showed in the logs of the api call. Now they aren’t there.
I am getting this error
{"success": false, "data": "An unknown error has occurred; logged to console"}
http://MYIPADDRESS:8080/albumPlayCount?albumid=XXXXXX
and this error in the console
2023-06-19 21:26:33,101 INFO ApResolver:66 - Loaded aps into pool: {accesspoint=[ap-gew4.spotify.com:4070, ap-gew4.spotify.com:443, ap-gew4.spotify.com:80, ap-guc3.spotify.com:4070, ap-gue1.spotify.com:443, ap-gew1.spotify.com:80], dealer=[gew4-dealer.spotify.com:443, guc3-dealer.spotify.com:443, gue1-dealer.spotify.com:443, gew1-dealer.spotify.com:443], spclient=[gew4-spclient.spotify.com:443, guc3-spclient.spotify.com:443, gue1-spclient.spotify.com:443, gew1-spclient.spotify.com:443]} 2023-06-19 21:26:33,366 INFO Session:94 - Created new session! {deviceId: c70f928698cc099e39bddfd469f7de38e3b805db, ap: ap-guc3.spotify.com:4070} 2023-06-19 21:26:34,351 INFO Session:223 - Connected successfully! 2023-06-19 21:26:34,647 INFO Session:242 - Authenticated as woklxlz1f9wkuu6j9fk3x6q54! 2023-06-19 21:26:34,647 INFO Session:716 - Skipping SecretBlock 2023-06-19 21:26:34,647 INFO Session:694 - Received LicenseVersion: 0 2023-06-19 21:26:34,647 INFO Session:684 - Received CountryCode: NL [main] INFO org.cache2k.core.Cache2kCoreProviderImpl - cache2k starting. version=1.2.4.Final 2023-06-19 21:26:34,694 INFO Session:716 - Skipping UnknownData_AllZeros 2023-06-19 21:26:34,694 INFO Session:716 - Skipping LegacyWelcome Listening on port 8080 2023-06-19 21:26:35,085 INFO Session:651 - Skipping unknown command {cmd: 0x75, payload: 000000} xyz.gianlu.librespot.mercury.MercuryClient$MercuryException: status: 502 at xyz.gianlu.librespot.mercury.MercuryClient.sendSync(MercuryClient.java:83) at xyz.gianlu.librespot.handler.PlayCountHandler.handle(PlayCountHandler.java:57) at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source) at sun.net.httpserver.AuthFilter.doFilter(Unknown Source) at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source) at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(Unknown Source) at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source) at sun.net.httpserver.ServerImpl$Exchange.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
I recently have been unable to access playcounts aswell, but I am having the same issue as #11 although this has not happened before. I am assuming this might be something on Spotify's side too
This is related to the country of the account. Spotify seems to have changed the accounts to the country they were created. I changed back to the country where librespot is running, but didnt fix the problem. Now, it is happening with the error I just posted above.
This issue is also only happening for the artistInfo and albumPlayCount end points . artistInsights still works.
I think Spotify finally killed support for this mercury endpoint. You can actually replicate all these calls over REST to the sp client. For example https://gae2-spclient.spotify.com/artist/v1/{artistId}/desktop currently returns 502 with response:
{ "error": { "status": 502, "message": "Request was not transferred" } }
I hope not 😔 - I wonder if there is another way to retrieve playcounts then.
I hope not 😔 - I wonder if there is another way to retrieve playcounts then.
well you can always find the appropriate album of a track, and then fetch the album (using the graphql endpoint)
https://api-partner.spotify.com/pathfinder/v1/query?operationName=getAlbum&variables={"uri":"spotify:album:{id}","locale":"","offset":0,"limit":50}&extensions={"persistedQuery":{"version":1,"sha256Hash":"46ae954ef2d2fe7732b4b2b4022157b2e18b7ea84f70591ceb164e4de1b5d5d3
returns
{ "data":{ "albumUnion":{ "__typename":"Album", "uri":"spotify:album:...", "name":"...", "artists":{ .... }, "coverArt":{ ... }, ... "label":"...", "copyright":{... }, "courtesyLine":"", "saved":false, "sharingInfo":{ "shareUrl":"", "shareId":"" }, "tracks":{ "totalCount":1, "items":[ { "uid":"edda05c86f012f7409cc", "track":{ "saved":false, "uri":"spotify:track:...", "name":"...", "playcount":"50288750", "discNumber":1, "trackNumber":1, "contentRating":{ "label":"NONE" }, "relinkingInformation":null, "duration":{ "totalMilliseconds":192497 }, "playability":{ "playable":true }, "artists":{ .... } } } ] }, "moreAlbumsByArtist":{ .... } }, "extensions":{
} }
I hope not 😔 - I wonder if there is another way to retrieve playcounts then.
well you can always find the appropriate album of a track, and then fetch the album (using the graphql endpoint)
https://api-partner.spotify.com/pathfinder/v1/query?operationName=getAlbum&variables={"uri":"spotify:album:{id}","locale":"","offset":0,"limit":50}&extensions={"persistedQuery":{"version":1,"sha256Hash":"46ae954ef2d2fe7732b4b2b4022157b2e18b7ea84f70591ceb164e4de1b5d5d3
returns
{ "data":{ "albumUnion":{ "__typename":"Album", "uri":"spotify:album:...", "name":"...", "artists":{ .... }, "coverArt":{ ... }, ... "label":"...", "copyright":{... }, "courtesyLine":"", "saved":false, "sharingInfo":{ "shareUrl":"", "shareId":"" }, "tracks":{ "totalCount":1, "items":[ { "uid":"edda05c86f012f7409cc", "track":{ "saved":false, "uri":"spotify:track:...", "name":"...", "playcount":"50288750", "discNumber":1, "trackNumber":1, "contentRating":{ "label":"NONE" }, "relinkingInformation":null, "duration":{ "totalMilliseconds":192497 }, "playability":{ "playable":true }, "artists":{ .... } } } ] }, "moreAlbumsByArtist":{ .... } }, "extensions":{ } }
But is there a way using graph to get the complete list of Albums and Singles for an artistID?
@jpgrovy Yes but it's paged, which is really annoying. It's
https://api-partner.spotify.com/pathfinder/v1/query?operationName=queryArtistDiscographyAll&variables={"uri":"spotify:artist:{id}","offset":0,"limit":100}&extensions={"persistedQuery":{"version":1,"sha256Hash":"35a699e12a728c1a02f5bf67121a50f87341e65054e13126c03b7697fbd26692"}}
How / where do you use this link? How does it replace the mercury call? If i simply check the link you share it tells "No token provided"
That would be for you to figure out :)
Hint: use the mercury client to get a bearer and then put it in the headers
That won't be for me then I suppose, I always struggle to cope with clients/protocols, etc, I have no idea what your hint means tbh
Oh I thought you were a maintainer of this project.. Well first you'd need a bearer token to authenticate with this client. Since this is an internal API, you can't just fetch one using the official method (Spotify developer console), as that will result in an 403 (forbid).
This project I think has the ability to fetch a good token over mercury (hm://keymaster/token/authenticated?scope...), which can then be used to authenticate properly and fetch the resource I provided.
It would require quite some changes to the project, unfortunately I am not actively involved in this project so I wont do it. But the developer may of course.
@jpgrovy Yes but it's paged, which is really annoying. It's
https://api-partner.spotify.com/pathfinder/v1/query?operationName=queryArtistDiscographyAll&variables={"uri":"spotify:artist:{id}","offset":0,"limit":100}&extensions={"persistedQuery":{"version":1,"sha256Hash":"35a699e12a728c1a02f5bf67121a50f87341e65054e13126c03b7697fbd26692"}}
I get “RBAC: Access Denied” when trying to make the api-partner calls.
Side note… anyone want to be awesome and fix the librespot playcount code? 🙏🙏🙏
Yep, they most likely killed the endpoint: librespot-org/librespot-java#678
Since it seems like Spotify doesn't use Hermes in their clients anymore, I think the only way forward with this project is to use Spotify's private API, so this repo may be archived once I figure things out.
Well... hermes is just their internal router. As I mentioned earlier, all hermes endpoints can be translated to their HTTPs counterpart by just replacing hm:// with the spclient url.
I think hermes will still be supported, since a lot of their internal services may still use them.
You can fetch an access token using :
hm://keymaster/token/authenticated?scope=user-read-private,user-read-email,playlist-modify-public,ugc-image-upload,playlist-read-private,playlist-read-collaborative,playlist-read&client_id=65b708073fc0480ea92a077233ca87bd&device_id=
Which you can then use to access the private api (partner + spclient) . The public (web api) endpoints also work
Yep, they most likely killed the endpoint: librespot-org#678
Since it seems like Spotify doesn't use Hermes in their clients anymore, I think the only way forward with this project is to use Spotify's private API, so this repo may be archived once I figure things out.
To re-do this repo maybe the easiest is to restart from the last version of librespot-java and import the few playcount / artist info handlers into it as the former now manages the Web API, has a token provider with the keymaster and all. In a first step it wouldn't be needed to stripe the unneeded content or anything.
Well... hermes is just their internal router. As I mentioned earlier, all hermes endpoints can be translated to their HTTPs counterpart by just replacing hm:// with the spclient url.
Ah, I haven't worked on this project in a while and forgot the terminology. I meant to say that their clients switched to using the GraphQL API for retrieving stuff like track play counts in an album. Since it seems that all endpoints that this project uses have become useless (albumPlayCount
and artistInfo
return status code 502, artistAbout
and artistInsights
just fills in 0 for all relevant values), the GraphQL API seems to be the only replacement for those endpoints. The access token for the GraphQL endpoints needed don't require Mercury or authentication either (the token can be retrieved through https://open.spotify.com/get_access_token?reason=transport&productType=web_player
).
...which at that point I'd essentially be making a CORS proxy for the GraphQL API. Seems like a cheap solution, though the main issue is that the GraphQL API is quite terrible to work with, so I'd have to look into that further :p
Yes the graphql api is terrible to work with, and I do not understand why Spotify did not just build on the web-api, which has a good schema.
Anyways, I was also able to implement the oauth protocol using PKCE, and reverse engineer their persistent login mechanism. Which still uses the actual TCP connection some parts.
Mainly, after the oauth callback, you get an access token, which you can then use to authenticate using the old method (over TCP). Then in the APWelcome message, you have some re-usable credentials which are then posted in the body of https://login5.spotify.com/v3/login
In pseudo code this will look like
var webResponse = openBrowserAndCatchRedirectToken();
var accessToken = webResponse.accessToken;
var username = webResponse.username;
var credentials = new LoginCredentials
{
Typ = AUTHENTICATION_SPOTIFY_TOKEN,
Username = username,
AuthData = ByteString.CopyFromUtf8(accessToken)
}
var apwelcome = performAuthOverTcp(credentials);
var reusablecredentials = apwelcome.reusable_auth_credentials;
Next in another login session: POST https://login5.spotify.com/v3/login the body is a protobuf with:
message LoginRequest {
.spotify.login5.v3.ClientInfo client_info = 1;
.spotify.login5.v3.credentials.StoredCredential stored_credential = 100;
}
Yes the graphql api is terrible to work with, and I do not understand why Spotify did not just build on the web-api, which has a good schema.
Anyways, I was also able to implement the oauth protocol using PKCE, and reverse engineer their persistent login mechanism. Which still uses the actual TCP connection some parts.
Mainly, after the oauth callback, you get an access token, which you can then use to authenticate using the old method (over TCP). Then in the APWelcome message, you have some re-usable credentials which are then posted in the body of https://login5.spotify.com/v3/login
In pseudo code this will look like
var webResponse = openBrowserAndCatchRedirectToken(); var accessToken = webResponse.accessToken; var username = webResponse.username; var credentials = new LoginCredentials { Typ = AUTHENTICATION_SPOTIFY_TOKEN, Username = username, AuthData = ByteString.CopyFromUtf8(accessToken) } var apwelcome = performAuthOverTcp(credentials); var reusablecredentials = apwelcome.reusable_auth_credentials;
Next in another login session: POST https://login5.spotify.com/v3/login the body is a protobuf with:
message LoginRequest { .spotify.login5.v3.ClientInfo client_info = 1; .spotify.login5.v3.credentials.StoredCredential stored_credential = 100; }
You guys are too smart for me 😉 … does this mean it’s fixable to get working again?
Hey @christosk92 ,
Do you know a replacement of artistInsights with their graphql API especially for top 50 cities ?
I don't find one.
queryArtistOverview
seems to be the only endpoint for retrieving artist data, which does include the top 5 cities.
I'm currently testing sp-playcount on api.t4ils.dev:
https://api.t4ils.dev/getArtist?id=1g8HCTiMwBtFtpRR9JXAZR (uses queryArtistOverview
)
https://api.t4ils.dev/getAlbum?id=5K4YFkTizFoMOyN5Khfp7G (uses getAlbum
)
https://api.t4ils.dev/getAlbumTracks?id=5K4YFkTizFoMOyN5Khfp7G (uses queryAlbumTracks
)
Hi @entriphy, How did you find the definition of the GQL query you document here ?
@entriphy : yes it seems old top 50 is no longer available via graphq :/
@louison You can find those when looking in the source code of the webplayer. Those queries are then hashed to decrease request size.. Specifically, the web-player.{}.js file will be interesting. There's a line in the file:
const t = await a.k.hash(e.body);
Which if you put a breakpoint there, you can expect the body
Hey @christosk92 ,
Do you know a replacement of artistInsights with their graphql API especially for top 50 cities ?
I don't find one.
Artist Insights is showing Top 50 cities and still works
Hey @christosk92 , Do you know a replacement of artistInsights with their graphql API especially for top 50 cities ? I don't find one.
Artist Insights is showing Top 50 cities and still works
Yes I know, but I anticipate
Is anyone working on an update / fix ?
queryArtistOverview
seems to be the only endpoint for retrieving artist data, which does include the top 5 cities.I'm currently testing sp-playcount on api.t4ils.dev: https://api.t4ils.dev/getArtist?id=1g8HCTiMwBtFtpRR9JXAZR (uses
queryArtistOverview
) https://api.t4ils.dev/getAlbum?id=5K4YFkTizFoMOyN5Khfp7G (usesgetAlbum
) https://api.t4ils.dev/getAlbumTracks?id=5K4YFkTizFoMOyN5Khfp7G (usesqueryAlbumTracks
)
Hi Entriphy, I'm not a programmer, so excuse my basic questions, and any misconceptions I have about how to implement a possible solution.. Your program is brilliant, btw. I see that the endpoints you're testing @ api.t4ils.dev return the raw .json data I need, (the track playcounts). With complete reliance on GPT-4, and a little help from a programmer-friend, I managed to create a search engine for personal/testing use which coordinates .js code of my own, (my .js/html is named "ISE_Updated" here: https://github.com/Temoigneur/Integrated_Search_Engine/tree/main) with your java program to retrieve individual track playcounts associated with a list of search results returned by the web-api, upon executing a search for musical content, (which incidentally runs four separate search engines simultaneously, via one central search bar). I recently updated the search function /w the /artistInsights endpt, to display a box beside the top three search results corresponding to 3 unique artists, that when clicked, showed the artist's monthly plays in the top five cities globally, as well as those of three Canadian cities that the artist was most popular in, (I'm in Canada). Although I managed to update the CORS handling in your java program to resolve issues with my localhost/ chrome configuration, and managed to update the version number when Spotify recently changed that, (https://github.com/Temoigneur/sp-playcount-librespot), I can see that attempting to reconfigure your entire program with next to zero understanding of what I'm doing, for Graphql, or to possibly retrieve what I need from new endpoints via api.t4ils.dev, would be a daunting task, and possibly an exercise in futility, (if that could even work at all). Is there any relatively straightforward way your program could be modified to use an alternate endpoint/method to obtain the play counts for individual tracks, that would work relatively seamlessly with my .js/html code via a fetch request to the updated java program/server, as before? Thank you!!
I’m also anxiously waiting and hopeful of an update 🙏
Does anyone have the JSON schema for all the old endpoints (the ones that this project uses) by any chance? I'm trying to make sp-playcount as backwards-compatible with this project's endpoints as possible, though since the old endpoints no longer work, I cannot do that unless someone has the JSON schema (or at the very least a sample response from each of the endpoints).
Here's the /playCount endpt object data (partially expanded) as it appears in the chrome browser, unfortunately I didn't save any of the JSON data for the endpoints..
▼{success: true, data: {uri: "spotify:album:1ynyQdPQiXdYJNQEDL1S3d", name: "My Turn",…}} ▼data: {uri: "spotify:album:1ynyQdPQiXdYJNQEDL1S3d", name: "My Turn",…} ►additional: {releases: [{uri: "spotify:album:5UWwSyg5f75ZY87bUje6RA", name: "My Turn",…}]} ►artists: [{name: "Lil Baby", uri: "spotify:artist:5f7VJjfbwm532GiveGC0ZK"}] ►copyrights: ["© ℗ 2020 Quality Control Music, LLC, under exclusive license to UMG Recordings, Inc."] ►cover: {uri: " https://i.scdn.co/image/ab67616d00001e02f46a9ad551acbdab8f72fd89"} day: 28 ▼discs: [{number: 1, name: "", tracks: [,…]}] ▼ 0: {number: 1, name: "", tracks: [,-.]} name: "" number: 1 ▼ tracks: [,...] ▼1: {uri: "spotify:track:20Yz5dzjdTCVjXte9KrJbi", playcount: 37836909, name: "Get Ugly", popularity: 53,…} ►artists: [{name: "Lil Baby”, uri: "spotify:artist:5f7Vljfbwm532GiveGC0ZK",..}] duration: 155832 explicit: true name: "Get Ugly" number: 1 playable: true playcount: 37836909 popularity: 53 uri: "spotify:track:20Yz5dzjdTCVjXte9Krlbi" ►2:{uri: "spotify:track:7KSSdFCBHCfq4KPzz78ghk", playcount: 165765514, name: "Heatin Up (feat. Gunna)",…} ►3:{uri: "spotify:track:01JMnRUs2YOK6DDpdQASGY", playcount: 135812509, name: "Grace (feat. 42 Dugg)",…}
artists : [{name: "Lil Baby", uri: "spotify:artist:5f7VJjfbwm532GiveGC0ZK",…},…] duration : 177314 explicit : true name : "Heatin Up (feat. Gunna)" number : 2 playable : true playcount : 165765514 popularity : 70 uri : "spotify:track:7KSSdFCBHCfq4KPzz78ghk"
►1: {uri: "spotify:track:7KSSdFCBHCfq4KPzz78ghk", ►3: {uri: "spotify:track:2b7rt5gCEy2p2zTp656s4U",
label: "Quality month: 2 name: "My Turn" ►related: {releases: [{uri: "spotify:album:0FYvMdfTfYJxnJnKs1wDb0", name: "It's Only Me",…},…]} track_count: 20 type: "album" uri: "spotify:album:lynyQdPQiXdYJNQEDLlS3d" year: 2020 success: true
On Sun, Jun 25, 2023 at 8:25 PM triph @.***> wrote:
Does anyone have the JSON schema for all the old endpoints (the ones that this project uses) by any chance? I'm trying to make sp-playcount as backwards-compatible with this project's endpoints as possible, though since the old endpoints no longer work, I cannot do that unless someone has the JSON schema (or at the very least a sample response from each of the endpoints).
— Reply to this email directly, view it on GitHub https://github.com/entriphy/sp-playcount-librespot/issues/28#issuecomment-1606355940, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE4Y5PHAHQ5JAIMHNVRJOC3XNDJH5ANCNFSM6AAAAAAZMFYZZE . You are receiving this because you commented.Message ID: @.***>
Here's the /artistInsights endpt json, (which you probably already have:)
{"success": true, "data": {"artistGid":"ac4d229eb1194eac83fc53e94cb24164","name":"Lil Baby","mainImageUrl":"https://i.scdn.co/image/ab676161000051746cad3eff5adc29e20f189a6c","headerImage":{"id":"ab6761863e04a7eabaeb3b509e2181b5","uri":"https://i.scdn.co/image/ab67618600001016c1fb58154514c4af61de7e4a","width":2660,"height":1140},"autobiography":{"body":"Some artists define a genre, but Lil Baby defines a generation. The GRAMMY Award-winning rapper has smashed records, made history, and impacted the course of modern hip-hop with his instantly identifiable and inimitable style. He has garnered dozens of multi platinum certifications and tens of billions of streams as arguably the biggest new rapper to emerge this decade. Following the success of his platinum full-length debut Harder Than Ever in 2018, he seized #1 on the Billboard Top 200 with 2020’s My Turn, becoming “the year’s #1 selling and #1 streaming album in the US.” At first, it cemented him as “2020’s first and only artist to go double-platinum,” but it has since gone quadruple-platinum and has logged 85 weeks in the top 10 of the Top R&B/Hip-Hop Albums chart – marking the longest top-tier run in the chart’s history. \n \nHe notably tied Prince and Paul McCartney for Billboard Hot 100 hits and Taylor Swift for “most weeks atop the Billboard Top 200 in 2020” with a total of 6. Out of eight nominations, he scored his first GRAMMY® Award in 2022. He teamed up with Lil Durk for The Voice of the Heroes, marking his second #1 debut on the Billboard Top 200. It’s just the beginning though. Most recently, he released “Right On” and “In A Minute” which both songs debuted on Billboard’s Hot 100 chart. This feat puts Lil Baby in rare territory, making him the youngest of only 12 artists to have ever landed 100 or more songs on the Hot 100. \n","links":{"twitter":"https://twitter.com/lilbaby4pf","instagram":"https://instagram.com/lilbaby/"}},"biography":"Atlanta-bred rapper Lil Baby is charismatic, confident, and overwhelmingly popular on a worldwide level, consistently topping the charts with his rough-yet-accessible commercially geared sound. Following a series of mixtapes, his popularity exploded in 2018, the year he released his first proper album, Harder Than Ever (which included the <a href=\"spotify:artist:3TVXtAsR1Inumwj472S9r4\">Drake-featuring hit \"Yes Indeed\"), and Drip Harder (a collaborative mixtape with <a href=\"spotify:artist:2hlmm7s2ICUX0LVIhVFlZQ\">Gunna), both of which entered the Top Ten of the Billboard 200. He hit number one in 2020 with his second studio album, My Turn, and again the next year with The Voice of the Heroes, a collaborative studio effort with <a href=\"spotify:artist:3hcs9uc56yIGFCSy9leWe7\">Lil Durk. Lil Baby made a habit of dominating the charts, debuting in the top spot once more in 2022 with his third studio album, It's Only Me.\r\n\nLil Baby was born Dominique Jones in Atlanta in 1994. He grew up hanging with friends like <a href=\"spotify:artist:50co4Is1HCEo8bhOyUWKpn\">Young Thug, Coach K, and Pee, leaning more toward a life of petty crime and street hustling while his friends went on to thrive in the music industry. In 2015, at age 19, Lil Baby went to prison for two years for a probation violation. Upon his release in 2017, he jump-started his rap career with a mixtape called Perfect Timing, released in April of that year. The mixtape featured cameos from friends like <a href=\"spotify:artist:6icQOAFXDZKsumw3YXyusw\">Lil Yachty, <a href=\"spotify:artist:50co4Is1HCEo8bhOyUWKpn\">Young Thug, and <a href=\"spotify:artist:2hlmm7s2ICUX0LVIhVFlZQ\">Gunna, and strong production from <a href=\"spotify:artist:0jsba402qO37r9tiffkkUZ\">808 Mafia, <a href=\"spotify:artist:6IpnhdUI0JNSmk1w5hcBwq\">Brickz, and many others, highlighted by Lil Baby's woozy flows. The mixtape immediately brought the young rapper fame, in part due to his affiliations with friends in the <a href=\"spotify:search:label%3A%22Quality+Control%22\">Quality Control family of artists as well as the 4 Pockets Full clique. \r\n\nAs his mixtape attracted more listeners, Lil Baby worked constantly on new music, releasing singles like \"My Dawg\" and the <a href=\"spotify:artist:50co4Is1HCEo8bhOyUWKpn\">Young Thug collaboration \"Pink Slip\" in the summer of 2017. Other releases that year included Harder Than Hard, 2 the Hard Way (with <a href=\"spotify:artist:2qFmZcrhfzbppEdD6wibAy\">Marlo), and Too Hard. Lil Baby's debut studio album, Harder Than Ever, appeared in May
On Sun, Jun 25, 2023 at 8:38 PM Bentley Humphries < @.***> wrote:
Here's the /playCount endpt object data (partially expanded) as it appears in the chrome browser, unfortunately I didn't save any of the JSON data for the endpoints..
▼{success: true, data: {uri: "spotify:album:1ynyQdPQiXdYJNQEDL1S3d", name: "My Turn",…}} ▼data: {uri: "spotify:album:1ynyQdPQiXdYJNQEDL1S3d", name: "My Turn",…} ►additional: {releases: [{uri: "spotify:album:5UWwSyg5f75ZY87bUje6RA", name: "My Turn",…}]} ►artists: [{name: "Lil Baby", uri: "spotify:artist:5f7VJjfbwm532GiveGC0ZK"}] ►copyrights: ["© ℗ 2020 Quality Control Music, LLC, under exclusive license to UMG Recordings, Inc."] ►cover: {uri: " https://i.scdn.co/image/ab67616d00001e02f46a9ad551acbdab8f72fd89"} day: 28 ▼discs: [{number: 1, name: "", tracks: [,…]}] ▼ 0: {number: 1, name: "", tracks: [,-.]} name: "" number: 1 ▼ tracks: [,...] ▼1: {uri: "spotify:track:20Yz5dzjdTCVjXte9KrJbi", playcount: 37836909, name: "Get Ugly", popularity: 53,…} ►artists: [{name: "Lil Baby”, uri: "spotify:artist:5f7Vljfbwm532GiveGC0ZK",..}] duration: 155832 explicit: true name: "Get Ugly" number: 1 playable: true playcount: 37836909 popularity: 53 uri: "spotify:track:20Yz5dzjdTCVjXte9Krlbi" ►2:{uri: "spotify:track:7KSSdFCBHCfq4KPzz78ghk", playcount: 165765514, name: "Heatin Up (feat. Gunna)",…} ►3:{uri: "spotify:track:01JMnRUs2YOK6DDpdQASGY", playcount: 135812509, name: "Grace (feat. 42 Dugg)",…}
artists : [{name: "Lil Baby", uri: "spotify:artist:5f7VJjfbwm532GiveGC0ZK",…},…] duration : 177314 explicit : true name : "Heatin Up (feat. Gunna)" number : 2 playable : true playcount : 165765514 popularity : 70 uri : "spotify:track:7KSSdFCBHCfq4KPzz78ghk"
►1: {uri: "spotify:track:7KSSdFCBHCfq4KPzz78ghk", ►3: {uri: "spotify:track:2b7rt5gCEy2p2zTp656s4U",
label: "Quality month: 2 name: "My Turn" ►related: {releases: [{uri: "spotify:album:0FYvMdfTfYJxnJnKs1wDb0", name: "It's Only Me",…},…]} track_count: 20 type: "album" uri: "spotify:album:lynyQdPQiXdYJNQEDLlS3d" year: 2020 success: true
On Sun, Jun 25, 2023 at 8:25 PM triph @.***> wrote:
Does anyone have the JSON schema for all the old endpoints (the ones that this project uses) by any chance? I'm trying to make sp-playcount as backwards-compatible with this project's endpoints as possible, though since the old endpoints no longer work, I cannot do that unless someone has the JSON schema (or at the very least a sample response from each of the endpoints).
— Reply to this email directly, view it on GitHub https://github.com/entriphy/sp-playcount-librespot/issues/28#issuecomment-1606355940, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE4Y5PHAHQ5JAIMHNVRJOC3XNDJH5ANCNFSM6AAAAAAZMFYZZE . You are receiving this because you commented.Message ID: @.***>
Does anyone have the JSON schema for all the old endpoints (the ones that this project uses) by any chance? I'm trying to make sp-playcount as backwards-compatible with this project's endpoints as possible, though since the old endpoints no longer work, I cannot do that unless someone has the JSON schema (or at the very least a sample response from each of the endpoints).
I have the entire schema of all the old endpoints. Do you have an email I can send to. The version I have is quite a large response.
@jpgrovy Yes but it's paged, which is really annoying. It's
https://api-partner.spotify.com/pathfinder/v1/query?operationName=queryArtistDiscographyAll&variables={"uri":"spotify:artist:{id}","offset":0,"limit":100}&extensions={"persistedQuery":{"version":1,"sha256Hash":"35a699e12a728c1a02f5bf67121a50f87341e65054e13126c03b7697fbd26692"}}
Is there are description / sample available for this endpoint?
I have the entire schema of all the old endpoints. Do you have an email I can send to. The version I have is quite a large response.
A GitHub Gist or Pastebin/Hastebin snippet should be fine :)
queryArtistOverview
seems to be the only endpoint for retrieving artist data, which does include the top 5 cities.I'm currently testing sp-playcount on api.t4ils.dev: https://api.t4ils.dev/getArtist?id=1g8HCTiMwBtFtpRR9JXAZR (uses
queryArtistOverview
) https://api.t4ils.dev/getAlbum?id=5K4YFkTizFoMOyN5Khfp7G (usesgetAlbum
) https://api.t4ils.dev/getAlbumTracks?id=5K4YFkTizFoMOyN5Khfp7G (usesqueryAlbumTracks
)
How can we install this version on our own heroku, etc ?
Is there any way you can add the playcounts to the entire discography inside the getArtist call?
queryArtistOverview
seems to be the only endpoint for retrieving artist data, which does include the top 5 cities.I'm currently testing sp-playcount on api.t4ils.dev: https://api.t4ils.dev/getArtist?id=1g8HCTiMwBtFtpRR9JXAZR (uses
queryArtistOverview
) https://api.t4ils.dev/getAlbum?id=5K4YFkTizFoMOyN5Khfp7G (usesgetAlbum
) https://api.t4ils.dev/getAlbumTracks?id=5K4YFkTizFoMOyN5Khfp7G (usesqueryAlbumTracks
)
Your links don’t work. How can we install this ourselves ?
@entriphy What does it mean when is fails and says session is closed?
Ahhhh.. your /getalbum endpt @ https://api.t4ils.dev/getAlbum?id= was working for weeks, now it's giving: {"success": false, "data": "Error while querying: Session is closed"} - will it be back up again?
Ahhhh.. your /getalbum endpt @ https://api.t4ils.dev/getAlbum?id= was working for weeks, now it's giving: {"success": false, "data": "Error while querying: Session is closed"} - will it be back up again?
also having this issue! it works some days and others it gives me this error code. Would love a fix :)
Ahhhh.. your /getalbum endpt @ https://api.t4ils.dev/getAlbum?id= was working for weeks, now it's giving: {"success": false, "data": "Error while querying: Session is closed"} - will it be back up again?
The endpoint were working fine yesterday but today I'm also having this same issue :( @entriphy have you figured out this issue ??
Was working for me fine perfectly this week, just ran into this issue this morning also
Did they just cut off the top 50 cities now for the insights endpoint? The https://api.t4ils.dev test endpoint here is connecting but only top 5 cities is showing.
I had my own hosted version of this script and as of today it's giving "Bad Credentials" errors
Any one else have any experiences to report as of today ?
@entriphy Here are a sample of the results of all endpoints (they're about 3 years old): https://gist.github.com/vitorbaptista/577934720a554dd271ce5e2a92948174
Do you think it will be possible to update this project, or has Spotify effectively killed it?
Yes. I am really interested to know if this will be updated. Thanks.
On Fri, Oct 20, 2023, 16:45 Vitor Baptista @.***> wrote:
@entriphy https://github.com/entriphy Here are a sample of the results of all endpoints: https://gist.github.com/vitorbaptista/577934720a554dd271ce5e2a92948174
Do you think it will be possible to update this project, or has Spotify effectively killed it?
— Reply to this email directly, view it on GitHub https://github.com/entriphy/sp-playcount-librespot/issues/28#issuecomment-1773308331, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB5QR6TN5JVUDYJO5WUJ7STYALIG3AVCNFSM6AAAAAAZMFYZZGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONZTGMYDQMZTGE . You are receiving this because you commented.Message ID: @.***>
I didn't find anything like I needed, so I made a prototype to get this information, if it's useful to anyone: https://github.com/caiocinel/SpotifyPrivateAPI
@entriphy Sorry for the interruption, but I'm trying to understand how your hosted page still has access to the playcount API, like https://api.t4ils.dev/albumPlayCount?albumid=32tRzmHVO5OxNv7IK36x24.
If I run this locally, I get the error 502. I tried creating a new Spotify account, in case it was because my account wasn't created in my country, but am still having the same error.
Are you running the same code from this repository?
Since today I am unable to get the playcounts for any track. Only getting the folling error:
xyz.gianlu.librespot.mercury.MercuryClient$MercuryException: status: 502 at xyz.gianlu.librespot.mercury.MercuryClient.sendSync(MercuryClient.java:83) at xyz.gianlu.librespot.handler.PlayCountHandler.handle(PlayCountHandler.java:57) at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77) at jdk.httpserver/sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:82) at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:80) at jdk.httpserver/sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:848) at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77) at jdk.httpserver/sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:817) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829)
Did something change on Spotify's side?