kudos / combine.fm Goto Github PK
View Code? Open in Web Editor NEW๐ Make sharing from music services better.
Home Page: https://combine.fm
๐ Make sharing from music services better.
Home Page: https://combine.fm
Oauth 1.0 is being deprecated on 30th June (cool notice period, guys).
http://blog.rdio.com/developers/2015/06/oauth-20-launch.html
Hi @kudos,
I've just come across this https://match.audio/ site. Looks Jazzy!
When I enter a name of an artist etc. rather than a link the app crashes and the Heroku error message is displayed.
I might not understand exactly how your app works, so just set me straight if I'm way off base here...
Because there's a pretty straight-forward conversion from open.spotify.com URLs to match.audio URLs, I thought I'd be able to infer the match.audio URL. This would be super handy because a chat bot could detect an open.spotify.com URL and respond with the inferred match.audio URL. All of that could happen without hitting the match.audio server. So there'd be no need for a API endpoint like discussed in #11.
This doesn't work at the moment unless the spotify URL has been searched for already. So there appears to be some server-side work that needs to happen before a match.audio URL is useful. Could this server side work lazily the first time a match.audio URL is hit?
I'd be happy to take a crack at this if it's not a batshit crazy idea.
Thanks for the project, by the way. I'm surprised how well you got the matching to work... ๐
It's impossible to automate good matching from Youtube music videos. Instead, let's use an interstitial where we offer suggestions as to what we think it might be. We can do our best to split the title into chunks and offer them as Artist - Track, Track - Artist, etc. It'll take some polishing, but I think that would do for a first pass.
When I try to access the homepage at https://combine.fm, the app crashes with the following error:
We're sorry, but something went wrong.
If you are the application owner check the logs for more information.
According to the Browser inspector, it's a 502 Bad Gateaway.
Link creation for this URL fails:
https://open.spotify.com/track/6r1qfWfdUZaRavMaeFRhJj?si=ML7DEG6aRoykLu8ck6EY-Q
It's particularly odd because tracks from the same album work just fine.
If I get into match.audio using any music address, it redirects correctly to combine.fm, but if I type match.audio by itself, the redirect fails. The reason apparently is that it's being redirected to "https://combine.fm//" and that returns a 204.
Hello!
When using https://match.audio, if I try to submit this track: https://play.google.com/music/m/T72mimuffvr6gya2ol5hcp3wdym?t=Comando_Doce_Live_-_Ile_Aiye I get a 500 back from client.js:
{
"log": {
"version": "1.2",
"creator": {
"name": "WebInspector",
"version": "537.36"
},
"pages": [],
"entries": [
{
"startedDateTime": "2016-02-13T19:25:37.633Z",
"time": 251.40300000020943,
"request": {
"method": "POST",
"url": "https://match.audio/search",
"httpVersion": "unknown",
"headers": [
{
"name": ":path",
"value": "/search"
},
{
"name": "pragma",
"value": "no-cache"
},
{
"name": "origin",
"value": "https://match.audio"
},
{
"name": "accept-encoding",
"value": "gzip, deflate"
},
{
"name": "accept-language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "user-agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "content-type",
"value": "application/json"
},
{
"name": "accept",
"value": "*/*"
},
{
"name": "cache-control",
"value": "no-cache"
},
{
"name": ":authority",
"value": "match.audio"
},
{
"name": "cookie",
"value": "__cfduid=d7455c0e4ea5b8bc6d7e7aa110604a2401455391520; _ga=GA1.2.2082453838.1455391528; _gat=1"
},
{
"name": ":scheme",
"value": "https"
},
{
"name": "referer",
"value": "https://match.audio/"
},
{
"name": "content-length",
"value": "100"
},
{
"name": ":method",
"value": "POST"
}
],
"queryString": [],
"cookies": [
{
"name": "__cfduid",
"value": "d7455c0e4ea5b8bc6d7e7aa110604a2401455391520",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_ga",
"value": "GA1.2.2082453838.1455391528",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": -1,
"bodySize": 100,
"postData": {
"mimeType": "application/json",
"text": "{\"url\":\"https://play.google.com/music/m/T72mimuffvr6gya2ol5hcp3wdym?t=Comando_Doce_Live_-_Ile_Aiye\"}"
}
},
"response": {
"status": 500,
"statusText": "OK",
"httpVersion": "unknown",
"headers": [
{
"name": "date",
"value": "Sat, 13 Feb 2016 19:25:37 GMT"
},
{
"name": "via",
"value": "1.1 vegur"
},
{
"name": "x-content-type-options",
"value": "nosniff"
},
{
"name": "server",
"value": "cloudflare-nginx"
},
{
"name": "strict-transport-security",
"value": "max-age=15552000; includeSubDomains; preload"
},
{
"name": "content-type",
"value": "text/plain; charset=utf-8"
},
{
"name": "status",
"value": "500"
},
{
"name": "cf-ray",
"value": "2742eb970b121497-AMS"
},
{
"name": "content-length",
"value": "21"
}
],
"cookies": [],
"content": {
"size": 21,
"mimeType": "text/plain"
},
"redirectURL": "",
"headersSize": -1,
"bodySize": -1,
"_transferSize": 223
},
"cache": {},
"timings": {
"blocked": 0.307000000248081,
"dns": -1,
"connect": -1,
"send": 0.14099999862082802,
"wait": 250.0790000012781,
"receive": 0.8760000000624188,
"ssl": -1
},
"connection": "225895"
}
]
}
}
However, cloning match.audio repo I can't reproduce this:
{
"log": {
"version": "1.2",
"creator": {
"name": "WebInspector",
"version": "537.36"
},
"pages": [
{
"startedDateTime": "2016-02-13T19:26:24.324Z",
"id": "page_1",
"title": "http://localhost:3000/",
"pageTimings": {
"onContentLoad": 504.3919999989157,
"onLoad": 1246.47399999958
}
}
],
"entries": [
{
"startedDateTime": "2016-02-13T19:26:43.782Z",
"time": 3306.719999998677,
"request": {
"method": "POST",
"url": "http://localhost:3000/search",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Origin",
"value": "http://localhost:3000"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "*/*"
},
{
"name": "Cache-Control",
"value": "no-cache"
},
{
"name": "Referer",
"value": "http://localhost:3000/"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "100"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 497,
"bodySize": 100,
"postData": {
"mimeType": "application/json",
"text": "{\"url\":\"https://play.google.com/music/m/T72mimuffvr6gya2ol5hcp3wdym?t=Comando_Doce_Live_-_Ile_Aiye\"}"
}
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Access-Control-Allow-Origin",
"value": "http://localhost:3000"
},
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:47 GMT"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "666"
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
}
],
"cookies": [],
"content": {
"size": 666,
"mimeType": "application/json",
"compression": 0
},
"redirectURL": "",
"headersSize": 244,
"bodySize": 666,
"_transferSize": 910
},
"cache": {},
"timings": {
"blocked": 0.570000000152504,
"dns": -1,
"connect": -1,
"send": 0.10599999950500205,
"wait": 3305.3810000001226,
"receive": 0.6629999988967938,
"ssl": -1
},
"connection": "227576",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:47.135Z",
"time": 5.715000001146109,
"request": {
"method": "GET",
"url": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym.json",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "*/*"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 497,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:47 GMT"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "784"
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
}
],
"cookies": [],
"content": {
"size": 784,
"mimeType": "application/json",
"compression": 0
},
"redirectURL": "",
"headersSize": 192,
"bodySize": 784,
"_transferSize": 976
},
"cache": {},
"timings": {
"blocked": 1.61200000002282,
"dns": -1,
"connect": -1,
"send": 0.07399999958578984,
"wait": 3.6950000012439004,
"receive": 0.33400000029359855,
"ssl": -1
},
"connection": "227576",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:47.135Z",
"time": 173.7170000014885,
"request": {
"method": "GET",
"url": "http://localhost:3000/images/twitter.png",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "image/webp,image/*,*/*;q=0.8"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 495,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:47 GMT"
},
{
"name": "Content-Encoding",
"value": "identity"
},
{
"name": "Last-Modified",
"value": "Sat, 13 Feb 2016 19:07:27 GMT"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "ETag",
"value": "\"JRtWW5hKFdrCDSSAa34um/ZTN0TD0Gk1kcntQm39Izw=\""
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "image/png"
},
{
"name": "Cache-Control",
"value": "public, max-age=31536000"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "951"
}
],
"cookies": [],
"content": {
"size": 951,
"mimeType": "image/png",
"compression": 0
},
"redirectURL": "",
"headersSize": 339,
"bodySize": 951,
"_transferSize": 1290
},
"cache": {},
"timings": {
"blocked": 1.12000000081025,
"dns": -1,
"connect": -1,
"send": 0.04199999966659007,
"wait": 172.04599999968215,
"receive": 0.5090000013294969,
"ssl": -1
},
"connection": "227470",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:47.135Z",
"time": 174.09299999962968,
"request": {
"method": "GET",
"url": "http://localhost:3000/images/facebook.png",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "image/webp,image/*,*/*;q=0.8"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 496,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:47 GMT"
},
{
"name": "Content-Encoding",
"value": "identity"
},
{
"name": "Last-Modified",
"value": "Sat, 13 Feb 2016 19:07:27 GMT"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "ETag",
"value": "\"8on5nRdhUtoz6YqDqSugJRVR4sIPakTwOMkLTzURwwM=\""
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "image/png"
},
{
"name": "Cache-Control",
"value": "public, max-age=31536000"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "644"
}
],
"cookies": [],
"content": {
"size": 644,
"mimeType": "image/png",
"compression": 0
},
"redirectURL": "",
"headersSize": 339,
"bodySize": 644,
"_transferSize": 983
},
"cache": {},
"timings": {
"blocked": 0.864999999976135,
"dns": -1,
"connect": -1,
"send": 0.040999999328050984,
"wait": 172.5590000005468,
"receive": 0.6279999997786945,
"ssl": -1
},
"connection": "227462",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:47.136Z",
"time": 174.3270000006305,
"request": {
"method": "GET",
"url": "http://localhost:3000/images/googleplus.png",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "image/webp,image/*,*/*;q=0.8"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 498,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:47 GMT"
},
{
"name": "Content-Encoding",
"value": "identity"
},
{
"name": "Last-Modified",
"value": "Sat, 13 Feb 2016 19:07:27 GMT"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "ETag",
"value": "\"mWl4eHZ0oWjY0dQhO1gRIIcXhIE+0+GYfffcy5GKc7g=\""
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "image/png"
},
{
"name": "Cache-Control",
"value": "public, max-age=31536000"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "1378"
}
],
"cookies": [],
"content": {
"size": 1378,
"mimeType": "image/png",
"compression": 0
},
"redirectURL": "",
"headersSize": 340,
"bodySize": 1378,
"_transferSize": 1718
},
"cache": {},
"timings": {
"blocked": 0.601000001552166,
"dns": -1,
"connect": -1,
"send": 0.03899999865097892,
"wait": 173.05900000064887,
"receive": 0.6279999997784955,
"ssl": -1
},
"connection": "227436",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:47.142Z",
"time": 205.80800000061572,
"request": {
"method": "GET",
"url": "http://localhost:3000/images/logo-128.png",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "*/*"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 471,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:47 GMT"
},
{
"name": "Content-Encoding",
"value": "identity"
},
{
"name": "Last-Modified",
"value": "Sat, 13 Feb 2016 19:07:27 GMT"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "ETag",
"value": "\"LtZoXqGdVemPnYuV0AqzRaKbNvZQvkkytFcgA+QSu9Y=\""
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "image/png"
},
{
"name": "Cache-Control",
"value": "public, max-age=31536000"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "3276"
}
],
"cookies": [],
"content": {
"size": 3276,
"mimeType": "image/png",
"compression": 0
},
"redirectURL": "",
"headersSize": 340,
"bodySize": 3276,
"_transferSize": 3616
},
"cache": {},
"timings": {
"blocked": 0.58800000078918,
"dns": -1,
"connect": -1,
"send": 0.11499999891384494,
"wait": 167.60700000122597,
"receive": 37.497999999686726,
"ssl": -1
},
"connection": "227576",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:47.161Z",
"time": 151.01299999878393,
"request": {
"method": "GET",
"url": "http://localhost:3000/images/google.png",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "image/webp,image/*,*/*;q=0.8"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 494,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:47 GMT"
},
{
"name": "Content-Encoding",
"value": "identity"
},
{
"name": "Last-Modified",
"value": "Sat, 13 Feb 2016 19:07:27 GMT"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "ETag",
"value": "\"rZsQydWxcqWPOhm4MlYRm06J+e7ShFDa2cZQszMkAMI=\""
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "image/png"
},
{
"name": "Cache-Control",
"value": "public, max-age=31536000"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "14440"
}
],
"cookies": [],
"content": {
"size": 14440,
"mimeType": "image/png",
"compression": 0
},
"redirectURL": "",
"headersSize": 341,
"bodySize": 14440,
"_transferSize": 14781
},
"cache": {},
"timings": {
"blocked": 1.6219999997702,
"dns": -1,
"connect": -1,
"send": 0.07299999924725009,
"wait": 147.76499999970855,
"receive": 1.5530000000579207,
"ssl": -1
},
"connection": "227570",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:47.161Z",
"time": 142.62199999939185,
"request": {
"method": "GET",
"url": "http://localhost:3000/images/eq.svg",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "image/webp,image/*,*/*;q=0.8"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 490,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:47 GMT"
},
{
"name": "Content-Encoding",
"value": "gzip"
},
{
"name": "Last-Modified",
"value": "Sat, 13 Feb 2016 19:07:27 GMT"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "ETag",
"value": "\"94dWoy+kEMGGSZlwDwMzOCojcQJhsFxBS7vfXNKSTLw=\""
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "image/svg+xml"
},
{
"name": "Cache-Control",
"value": "public, max-age=31536000"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "347"
}
],
"cookies": [],
"content": {
"size": 979,
"mimeType": "image/svg+xml",
"compression": 632
},
"redirectURL": "",
"headersSize": 339,
"bodySize": 347,
"_transferSize": 686
},
"cache": {},
"timings": {
"blocked": 1.10700000004726,
"dns": -1,
"connect": -1,
"send": 0.039000000469969986,
"wait": 140.51300000028277,
"receive": 0.9629999985918403,
"ssl": -1
},
"connection": "227466",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:47.304Z",
"time": 50.44699999962177,
"request": {
"method": "GET",
"url": "http://localhost:3000/images/youtube.png",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "image/webp,image/*,*/*;q=0.8"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 495,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:47 GMT"
},
{
"name": "Content-Encoding",
"value": "identity"
},
{
"name": "Last-Modified",
"value": "Sat, 13 Feb 2016 19:07:27 GMT"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "ETag",
"value": "\"JvcIfMovdC65/nPzv6oS3SxLEAxiZuGwhSI3F96Rnuo=\""
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "image/png"
},
{
"name": "Cache-Control",
"value": "public, max-age=31536000"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "7869"
}
],
"cookies": [],
"content": {
"size": 7869,
"mimeType": "image/png",
"compression": 0
},
"redirectURL": "",
"headersSize": 340,
"bodySize": 7869,
"_transferSize": 8209
},
"cache": {},
"timings": {
"blocked": 0.702999999703025,
"dns": -1,
"connect": -1,
"send": 0.13000000035390202,
"wait": 12.334999999438873,
"receive": 37.27900000012597,
"ssl": -1
},
"connection": "227466",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:47.310Z",
"time": 50.546000000395,
"request": {
"method": "GET",
"url": "http://localhost:3000/images/xbox.png",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "image/webp,image/*,*/*;q=0.8"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 492,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:47 GMT"
},
{
"name": "Content-Encoding",
"value": "identity"
},
{
"name": "Last-Modified",
"value": "Sat, 13 Feb 2016 19:07:27 GMT"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "ETag",
"value": "\"hYpyxNQQ/bemCNY7Zyo7wJAaFj0dFF7LFQqlps09Z0c=\""
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "image/png"
},
{
"name": "Cache-Control",
"value": "public, max-age=31536000"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "11035"
}
],
"cookies": [],
"content": {
"size": 11035,
"mimeType": "image/png",
"compression": 0
},
"redirectURL": "",
"headersSize": 341,
"bodySize": 11035,
"_transferSize": 11376
},
"cache": {},
"timings": {
"blocked": 1.44000000000233,
"dns": -1,
"connect": -1,
"send": 0.10599999950499983,
"wait": 9.23700000021197,
"receive": 39.763000000675696,
"ssl": -1
},
"connection": "227436",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:47.311Z",
"time": 53.875999999945634,
"request": {
"method": "GET",
"url": "http://localhost:3000/images/spotify.png",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "image/webp,image/*,*/*;q=0.8"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 495,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:47 GMT"
},
{
"name": "Content-Encoding",
"value": "identity"
},
{
"name": "Last-Modified",
"value": "Sat, 13 Feb 2016 19:07:27 GMT"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "ETag",
"value": "\"r1V8lf1blJ6+zxK2FLden++avZf5xhJb7NaxfWnEOaw=\""
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "image/png"
},
{
"name": "Cache-Control",
"value": "public, max-age=31536000"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "13170"
}
],
"cookies": [],
"content": {
"size": 13170,
"mimeType": "image/png",
"compression": 0
},
"redirectURL": "",
"headersSize": 341,
"bodySize": 13170,
"_transferSize": 13511
},
"cache": {},
"timings": {
"blocked": 1.15000000005239,
"dns": -1,
"connect": -1,
"send": 0.47099999937926995,
"wait": 12.94600000073844,
"receive": 39.30899999977554,
"ssl": -1
},
"connection": "227462",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:47.311Z",
"time": 53.3850000010716,
"request": {
"method": "GET",
"url": "http://localhost:3000/images/itunes.png",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "image/webp,image/*,*/*;q=0.8"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 494,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:47 GMT"
},
{
"name": "Content-Encoding",
"value": "identity"
},
{
"name": "Last-Modified",
"value": "Sat, 13 Feb 2016 19:07:27 GMT"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "ETag",
"value": "\"NvTSn2tDHT01wydB1lIoU6jMGrKyyARKe/G9C8yR48k=\""
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "image/png"
},
{
"name": "Cache-Control",
"value": "public, max-age=31536000"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "8037"
}
],
"cookies": [],
"content": {
"size": 8037,
"mimeType": "image/png",
"compression": 0
},
"redirectURL": "",
"headersSize": 340,
"bodySize": 8037,
"_transferSize": 8377
},
"cache": {},
"timings": {
"blocked": 1.38800000058836,
"dns": -1,
"connect": -1,
"send": 0.06700000085403013,
"wait": 13.26299999891491,
"receive": 38.6670000007143,
"ssl": -1
},
"connection": "227470",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:47.313Z",
"time": 51.70500000167522,
"request": {
"method": "GET",
"url": "http://localhost:3000/images/deezer.png",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "image/webp,image/*,*/*;q=0.8"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 494,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:47 GMT"
},
{
"name": "Content-Encoding",
"value": "identity"
},
{
"name": "Last-Modified",
"value": "Sat, 13 Feb 2016 19:07:27 GMT"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "ETag",
"value": "\"qZNWlNaOYIUKGGLPPAR2ojxGoUuaFBwCBWP+aYU5fcU=\""
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "image/png"
},
{
"name": "Cache-Control",
"value": "public, max-age=31536000"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "8122"
}
],
"cookies": [],
"content": {
"size": 8122,
"mimeType": "image/png",
"compression": 0
},
"redirectURL": "",
"headersSize": 340,
"bodySize": 8122,
"_transferSize": 8462
},
"cache": {},
"timings": {
"blocked": 0.639000001683598,
"dns": -1,
"connect": -1,
"send": 0.07999999979801997,
"wait": 12.799999998605882,
"receive": 38.186000001587715,
"ssl": -1
},
"connection": "227570",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:49.136Z",
"time": 4.1650000002846355,
"request": {
"method": "GET",
"url": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym.json",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "*/*"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 497,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:49 GMT"
},
{
"name": "Content-Encoding",
"value": "gzip"
},
{
"name": "Transfer-Encoding",
"value": "chunked"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
}
],
"cookies": [],
"content": {
"size": 1242,
"mimeType": "application/json",
"compression": 636
},
"redirectURL": "",
"headersSize": 223,
"bodySize": 606,
"_transferSize": 829
},
"cache": {},
"timings": {
"blocked": 0.49600000056671,
"dns": -1,
"connect": -1,
"send": 0.08799999886832599,
"wait": 3.158999999868684,
"receive": 0.4220000009809155,
"ssl": -1
},
"connection": "227462",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:49.154Z",
"time": 3260.772999999972,
"request": {
"method": "GET",
"url": "https://i.scdn.co/image/0b1c451b8673e2b5f3fa233217d807cfade63dbb",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "i.scdn.co"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "image/webp,image/*,*/*;q=0.8"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [],
"headersSize": 469,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:49 GMT"
},
{
"name": "Last-Modified",
"value": "Sun, 12 Apr 2015 02:20:25 GMT"
},
{
"name": "Server",
"value": "ECAcc (rtm/352E)"
},
{
"name": "x-amz-request-id",
"value": "FC1ADAE80014722F"
},
{
"name": "Etag",
"value": "\"f3b6f1e358291f99ad933ced85310ce1\""
},
{
"name": "X-Cache",
"value": "HIT"
},
{
"name": "Content-Type",
"value": "image/jpeg"
},
{
"name": "Access-Control-Allow-Origin",
"value": "*"
},
{
"name": "Cache-Control",
"value": "max-age=315360000"
},
{
"name": "Accept-Ranges",
"value": "bytes"
},
{
"name": "Content-Length",
"value": "79938"
},
{
"name": "x-amz-id-2",
"value": "+E4yC5GncHM3F5bwUPRvFpjreTC6nd6PlIJtjFG4P/PPYIXcf0aaNlef9hBXKyPjnk72Q+QYYgc="
},
{
"name": "Expires",
"value": "Tue, 10 Feb 2026 19:26:49 GMT"
}
],
"cookies": [],
"content": {
"size": 79938,
"mimeType": "image/jpeg",
"compression": 0
},
"redirectURL": "",
"headersSize": 487,
"bodySize": 79938,
"_transferSize": 80425
},
"cache": {},
"timings": {
"blocked": 1.28600000061851,
"dns": -1,
"connect": -1,
"send": 0.15300000086427,
"wait": 1538.8979999988771,
"receive": 1720.435999999612,
"ssl": -1
},
"connection": "227020",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:51.136Z",
"time": 4.829999999856227,
"request": {
"method": "GET",
"url": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym.json",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "*/*"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 497,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:51 GMT"
},
{
"name": "Content-Encoding",
"value": "gzip"
},
{
"name": "Transfer-Encoding",
"value": "chunked"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
}
],
"cookies": [],
"content": {
"size": 1735,
"mimeType": "application/json",
"compression": 1019
},
"redirectURL": "",
"headersSize": 223,
"bodySize": 716,
"_transferSize": 939
},
"cache": {},
"timings": {
"blocked": 0.473000000056345,
"dns": -1,
"connect": -1,
"send": 0.08600000001024499,
"wait": 3.6120000004302697,
"receive": 0.6589999993593674,
"ssl": -1
},
"connection": "227462",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:51.150Z",
"time": 3063.688000000184,
"request": {
"method": "GET",
"url": "https://cdns-images.dzcdn.net/images/cover/28123316c34d45203a063a4a70ecb76f/200x200-000000-80-0-0.jpg",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "cdns-images.dzcdn.net"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "image/webp,image/*,*/*;q=0.8"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [],
"headersSize": 506,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": ""
},
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:53 GMT"
},
{
"name": "Server",
"value": "Apache"
},
{
"name": "Age",
"value": "232"
},
{
"name": "Content-Type",
"value": "image/jpeg"
},
{
"name": "Access-Control-Allow-Origin",
"value": "*"
},
{
"name": "Cache-Control",
"value": "public"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "X-Deezer-Cache",
"value": "HIT"
},
{
"name": "Content-Length",
"value": "27638"
},
{
"name": "Expires",
"value": "Tue, 12 Jul 2016 19:23:01 GMT"
}
],
"cookies": [],
"content": {
"size": 27638,
"mimeType": "image/jpeg",
"compression": 0
},
"redirectURL": "",
"headersSize": 281,
"bodySize": 27638,
"_transferSize": 27919
},
"cache": {},
"timings": {
"blocked": 0.470000000859727,
"dns": 1036.9539999992403,
"connect": 1226.5740000002602,
"send": 0.15399999937972098,
"wait": 745.6340000007899,
"receive": 53.90199999965398,
"ssl": 895.1990000005003
},
"connection": "229068",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:53.135Z",
"time": 5.631999998513493,
"request": {
"method": "GET",
"url": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym.json",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "*/*"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 497,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:53 GMT"
},
{
"name": "Content-Encoding",
"value": "gzip"
},
{
"name": "Transfer-Encoding",
"value": "chunked"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
}
],
"cookies": [],
"content": {
"size": 1775,
"mimeType": "application/json",
"compression": 1053
},
"redirectURL": "",
"headersSize": 223,
"bodySize": 722,
"_transferSize": 945
},
"cache": {},
"timings": {
"blocked": 0.594999999520951,
"dns": -1,
"connect": -1,
"send": 0.0949999994190881,
"wait": 4.505000000790461,
"receive": 0.43699999878299245,
"ssl": -1
},
"connection": "227462",
"pageref": "page_1"
},
{
"startedDateTime": "2016-02-13T19:26:55.136Z",
"time": 7.236999999804539,
"request": {
"method": "GET",
"url": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym.json",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "Host",
"value": "localhost:3000"
},
{
"name": "Accept-Language",
"value": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
},
{
"name": "Accept",
"value": "*/*"
},
{
"name": "Referer",
"value": "http://localhost:3000/google/track/T72mimuffvr6gya2ol5hcp3wdym"
},
{
"name": "Cookie",
"value": "_ga=GA1.1.1640149456.1455391591; _gat=1"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "no-cache"
}
],
"queryString": [],
"cookies": [
{
"name": "_ga",
"value": "GA1.1.1640149456.1455391591",
"expires": null,
"httpOnly": false,
"secure": false
},
{
"name": "_gat",
"value": "1",
"expires": null,
"httpOnly": false,
"secure": false
}
],
"headersSize": 497,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Sat, 13 Feb 2016 19:26:55 GMT"
},
{
"name": "Content-Encoding",
"value": "gzip"
},
{
"name": "Transfer-Encoding",
"value": "chunked"
},
{
"name": "Server",
"value": "Nintendo 64"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Vary",
"value": "Accept-Encoding"
},
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
}
],
"cookies": [],
"content": {
"size": 1815,
"mimeType": "application/json",
"compression": 1091
},
"redirectURL": "",
"headersSize": 223,
"bodySize": 724,
"_transferSize": 947
},
"cache": {},
"timings": {
"blocked": 0.55900000006659,
"dns": -1,
"connect": -1,
"send": 0.09300000056100499,
"wait": 4.771999998411045,
"receive": 1.813000000765899,
"ssl": -1
},
"connection": "227462",
"pageref": "page_1"
}
]
}
}
Any ideas?
Google play music links are broken for Android devices as the Play Store intercepts the links we're using.
Urls like https://play.google.com/music/m/Appwjs7lfqqvmpriiu4r6xs5lhe?signup_if_needed=1 seem to work correctly and may work better for all types of clients.
I think it'd be neat to be able to choose a music provider as a "default" when hitting the results page without having just submitted the form. On the next match.audio link you clicked, you'd be sent directly to that music provider if it was available, or told to select a different source. Probably there'd be a 3 second wait before redirection or something so you could change your preferred music provider. I think you could just set a cookie with the provider they selected.
This way if people were sending match.audio links frequently, you wouldn't have to "click through" each time. I'd like to use match.audio in my IRC bot (for example, during the Last.fm-backed "now playing" command to link the song they are listening to), so if people were frequently clicking links in the channel, they wouldn't have to click Spotify or YouTube every time, for example.
For turning supported music links into match.audio links.
Great service!
The logos displayed are not all up to date.
Spotify looks fine :)
Pasting a few different albums from iTunes seems to not work. Once the URL is added and you click "share" a URL is generated but the page is blank. I've tested with a couple albums now and the results are the same. I can take a look this weekend to see if I can track down the issue.
Initial share page loads take up to 10 seconds. Instead lets do matching in the background and update the share page with the results as they come in.
I want to use isomorphic React because React is awesome, but I also don't want these public pages to take seconds to render and lack easily crawlable content.
Hi! I remember seeing this project a while ago and really loving it. I was wondering if:
Alternatively, I also see that I could use the endpoint used in the Chrome extension. Would you prefer that fact isn't utilized? (i.e. Should I assume that is meant only for internal use, and it would be rude to use?)
Thanks!
For example, submitting https://play.google.com/music/m/Bjvfq7gmxrxra6rmwkvqwqjbm3i?t=Nighttime_Stories_-_Pelican returns the following payload with no top-level type
property (in this case it should be "album"
):
artist: {id: 5055, name: "Pelican", streamUrl: null, purchaseUrl: null, artworkSmall: null, artworkLarge: null,โฆ}
artistId: 5055
createdAt: "2019-06-14T15:32:26.596Z"
deletedAt: null
externalId: "Bjvfq7gmxrxra6rmwkvqwqjbm3i"
id: "Bjvfq7gmxrxra6rmwkvqwqjbm3i"
matches: [,โฆ]
name: "Nighttime Stories"
service: "google"
updatedAt: "2019-06-14T15:32:26.596Z"
The URL is then changed to https://combine.fm/google/undefined/Bjvfq7gmxrxra6rmwkvqwqjbm3i which returns Invalid type
.
This appears to be the case more frequently when sharing an album for not the first time.
I've had this issue with two albums I've tried, and they don't seem to have anything in common. The album exists in both services, but match.audio seems to not be able to match them.
The first was the get down soundtrack:
https://match.audio/spotify/album/0UqBp39R5ARECBnxnVk25l
https://match.audio/google/album/Bzudnfixxsk647fqpbftbclgety
The second is from a Brazilian duo:
https://match.audio/spotify/album/4P09BJFkwTM9QW89RvyQy5
https://match.audio/google/album/Bfybhxorsk3m3g7xooyihpwghri
But looking at other albums currently at the recently shared, it seems they share the same issue.
Hey!
It seems today the services in combine.fm seem a bit odd. ytmusic doesn't appear here: https://combine.fm/spotify/track/4nEFEGZQ5odJGjb7xm2kDh and google play and groove are showing again
When posting an Match.audio link in Telegram or Slack, the link is unfurling to the default description/title. Instead, it would be better try to unfurl to the media you're linking to.
For turning supported music links into match.audio links.
I like this idea but I think it could be even more useful if users could set a preferred music service, and when they click the Match Audio link, they automatically get redirected to their preferred service.
If you want to make it clear they were hitting Match Audio, you could even have a "You will be redirected in a few seconds..." page where they can get more information.
Probably the preferred service would be stored as a long-term cookie.
If this idea is popular, I may be willing to implement it and submit a PR.
Google Play Music will join the Google Graveyard before 2020 ends.
This means a new service for its replacement, Youtube Music, must be added.
There is no publicly documented API but some effort was put in a thoroughly documented python library (ytmusicapi) which could greatly help in implementing the few calls combine.fm should need.
It seems there is no need for authentication to perform searches.
This task is up for grabs, I might find the motivation next time I need to share a track.
Hello!
I've tried to share a track from google play today: https://play.google.com/music/m/Tfdfxstnbkqwnzeg5xtkg64sjgy?signup_if_needed=1
Which goes to this link: https://match.audio/google/track/Tfdfxstnbkqwnzeg5xtkg64sjgy
But looking at the json returned: https://match.audio/google/track/Tfdfxstnbkqwnzeg5xtkg64sjgy.json
You can see that the track is giving out the wrong type album
. I've started match.audio locally and did some debugging, and it seems that this.getDataValue('trackId')
which is used in the comparison at models/track.js:32
is never there. Given that this is inside the Track
model, can it be an album at some point? I've tried changing this to getter to something like this instead:
type() {
return 'track';
},
And did a similar thing in the album getter, and it seems the answers become right. There's a similar issue in lib/share.js:77
. In there I changed to:
models.match.create({
trackId: share.$modelOptions.name.singular == 'track' ? share.id : null,
albumId: share.$modelOptions.name.singular == 'album' ? share.id : null,
externalId: null,
service: match.service,
name: null,
streamUrl: null,
purchaseUrl: null,
artworkSmall: null,
artworkLarge: null,
});
Does this makes sense to you?
You can see the diff in here:
master...renatolond:music_type_fix
If I open match.audio straight from the link bar, I don't have the search box, see attached screenshot:
But if I visit a recently searched album and then come back to the main page using the match.audio link at the top, the search bar is back:
This was not the case a few days ago, when I could just hit up match.audio and search directly. It seems that the search is being removed in the entry-client.js, when it does replaceState. Which seems it's not called when navigating from an existing page.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.