Título ruim do onebox para compartilhamentos de álbuns do Spotify

O título de um onebox inline está ruim (não que eu esteja dizendo que é culpa nossa):

Inline: Spotify

fonte:

https://open.spotify.com/album/1nrWysWdrgPR0kBJ45z2aS?si=FurcwGpfSrWJBPGwKeCvDQ

Inline: https://open.spotify.com/album/1nrWysWdrgPR0kBJ45z2aS?si=FurcwGpfSrWJBPGwKeCvDQ

imagem (preview):

imagem (baked):

4 curtidas

Precisamos atualizar a versão do navegador na string do agente do usuário que nosso crawler está usando? Parece que estamos usando o Safari 14?

Visitando o URL manualmente nessa versão do Safari:

Não somos consistentes com os user agents.

Para o onebox completo, usamos:

Discourse Forum Onebox v3.5.0.beta9-dev

e o Spotify está bem com isso e serve a página completa:

○ → curl -s --user-agent 'Discourse Forum Onebox v3.5.0.beta9-dev' 'https://open.spotify.com/album/1nrWysWdrgPR0kBJ45z2aS?si=FurcwGpfSrWJBPGwKeCvDQ' | htmlq 'meta[property^=\"og:description\"], meta[property^=\"og:site_name\"], title'
<title>The First Symphony - Album by Indecent | Spotify</title>
<meta content="Spotify" property="og:site_name">
<meta content="Indecent · Album · 2024 · 12 songs" property="og:description">
<meta content="Spotify" property="og:site_name">

mas para o onebox inline, usamos:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15

Então é por isso que estamos tendo um comportamento diferente, embora eu ainda perguntasse por que não usamos as propriedades opengraph aqui? O Spotify ainda está servindo essas propriedades, apesar de ser um navegador não suportado:

○ → curl -s --user-agent 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15' 'https://open.spotify.com/album/1nrWysWdrgPR0kBJ45z2aS?si=FurcwGpfSrWJBPGwKeCvDQ' | htmlq 'meta[property^=\"og:description\"], meta[property^=\"og:site_name\"], title'
<title>Unsupported browser</title>
<meta content="Spotify" property="og:site_name">
<meta content="Indecent · Album · 2024 · 12 songs" property="og:description">
<meta content="Spotify" property="og:site_name">
todas as propriedades
○ → curl -s --user-agent 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15' 'https://open.spotify.com/album/1nrWysWdrgPR0kBJ45z2aS?si=FurcwGpfSrWJBPGwKeCvDQ' | htmlq 'meta[property^=\"og:\"]'
<meta content="Spotify" property="og:site_name">
<meta content="The First Symphony" property="og:title">
<meta content="Indecent · Album · 2024 · 12 songs" property="og:description">
<meta content="https://open.spotify.com/album/1nrWysWdrgPR0kBJ45z2aS" property="og:url">
<meta content="music.album" property="og:type">
<meta content="Spotify" property="og:site_name">
<meta content="AR" property="og:restrictions:country:allowed">
…
<meta content="XK" property="og:restrictions:country:allowed">
<meta content="https://i.scdn.co/image/ab67616d0000b273ff9434b9650f38d183e91fb1" property="og:image">
2 curtidas

Hmmm:

Porque título tem precedência sobre o open graph em nossa implementação e não queremos codificar a string “Navegador não suportado”…

FIX: update final destination to use more recent user agent by SamSaffron · Pull Request #34207 · discourse/discourse · GitHub deve corrigir isso…

Isso parece bem antigo:

DEFAULT_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15"

hmmm… agora o spotify nos dá o título “spotify” :slight_smile: vamos precisar de código “spotify” personalizado :frowning: se quisermos obter o nome do álbum.

2 curtidas