Skip to main content

src/rocksky@scrobble.erl

-module(rocksky@scrobble).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/rocksky/scrobble.gleam").
-export([get_scrobble/1, get_scrobbles/0, with_did/2, with_following/2, new_scrobble/2, with_album/2, with_duration_ms/2, with_mb_id/2, with_isrc/2, with_album_art/2, with_track_number/2, with_release_date/2, with_year/2, with_disc_number/2, with_lyrics/2, with_composer/2, with_copyright_message/2, with_label/2, with_artist_picture/2, with_spotify_link/2, with_lastfm_link/2, with_tidal_link/2, with_apple_music_link/2, with_youtube_link/2, with_deezer_link/2, with_timestamp/2, create/1]).
-export_type([new_scrobble/0]).

-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.

?MODULEDOC(" `app.rocksky.scrobble.*` — record listens and read them back.\n").

-type new_scrobble() :: {new_scrobble,
        binary(),
        binary(),
        gleam@option:option(binary()),
        gleam@option:option(integer()),
        gleam@option:option(binary()),
        gleam@option:option(binary()),
        gleam@option:option(binary()),
        gleam@option:option(integer()),
        gleam@option:option(binary()),
        gleam@option:option(integer()),
        gleam@option:option(integer()),
        gleam@option:option(binary()),
        gleam@option:option(binary()),
        gleam@option:option(binary()),
        gleam@option:option(binary()),
        gleam@option:option(binary()),
        gleam@option:option(binary()),
        gleam@option:option(binary()),
        gleam@option:option(binary()),
        gleam@option:option(binary()),
        gleam@option:option(binary()),
        gleam@option:option(binary()),
        gleam@option:option(integer())}.

-file("src/rocksky/scrobble.gleam", 12).
?DOC(" `app.rocksky.scrobble.getScrobble` — fetch a single scrobble by AT-URI.\n").
-spec get_scrobble(binary()) -> rocksky:request(rocksky@generated@types:scrobble_view_basic()).
get_scrobble(Uri) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.scrobble.getScrobble"/utf8>>,
        rocksky@decoders:scrobble()
    ),
    rocksky:param(_pipe, <<"uri"/utf8>>, Uri).

-file("src/rocksky/scrobble.gleam", 19).
?DOC(
    " `app.rocksky.scrobble.getScrobbles` — paginated scrobble feed. Refine\n"
    " with `rocksky.limit`, `rocksky.offset`, `with_did`, `with_following`.\n"
).
-spec get_scrobbles() -> rocksky:request(gleam@dynamic:dynamic_()).
get_scrobbles() ->
    rocksky:'query'(
        <<"app.rocksky.scrobble.getScrobbles"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ).

-file("src/rocksky/scrobble.gleam", 23).
-spec with_did(rocksky:request(HGE), binary()) -> rocksky:request(HGE).
with_did(Req, Did) ->
    rocksky:param(Req, <<"did"/utf8>>, Did).

-file("src/rocksky/scrobble.gleam", 27).
-spec with_following(rocksky:request(HGH), boolean()) -> rocksky:request(HGH).
with_following(Req, Following) ->
    rocksky:bool_param(Req, <<"following"/utf8>>, Following).

-file("src/rocksky/scrobble.gleam", 67).
-spec new_scrobble(binary(), binary()) -> new_scrobble().
new_scrobble(Title, Artist) ->
    {new_scrobble,
        Title,
        Artist,
        none,
        none,
        none,
        none,
        none,
        none,
        none,
        none,
        none,
        none,
        none,
        none,
        none,
        none,
        none,
        none,
        none,
        none,
        none,
        none,
        none}.

-file("src/rocksky/scrobble.gleam", 95).
-spec with_album(new_scrobble(), binary()) -> new_scrobble().
with_album(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        {some, V},
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 99).
-spec with_duration_ms(new_scrobble(), integer()) -> new_scrobble().
with_duration_ms(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        {some, V},
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 103).
-spec with_mb_id(new_scrobble(), binary()) -> new_scrobble().
with_mb_id(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        {some, V},
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 107).
-spec with_isrc(new_scrobble(), binary()) -> new_scrobble().
with_isrc(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        {some, V},
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 111).
-spec with_album_art(new_scrobble(), binary()) -> new_scrobble().
with_album_art(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        {some, V},
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 115).
-spec with_track_number(new_scrobble(), integer()) -> new_scrobble().
with_track_number(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        {some, V},
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 119).
-spec with_release_date(new_scrobble(), binary()) -> new_scrobble().
with_release_date(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        {some, V},
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 123).
-spec with_year(new_scrobble(), integer()) -> new_scrobble().
with_year(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        {some, V},
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 127).
-spec with_disc_number(new_scrobble(), integer()) -> new_scrobble().
with_disc_number(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        {some, V},
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 131).
-spec with_lyrics(new_scrobble(), binary()) -> new_scrobble().
with_lyrics(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        {some, V},
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 135).
-spec with_composer(new_scrobble(), binary()) -> new_scrobble().
with_composer(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        {some, V},
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 139).
-spec with_copyright_message(new_scrobble(), binary()) -> new_scrobble().
with_copyright_message(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        {some, V},
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 143).
-spec with_label(new_scrobble(), binary()) -> new_scrobble().
with_label(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        {some, V},
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 147).
-spec with_artist_picture(new_scrobble(), binary()) -> new_scrobble().
with_artist_picture(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        {some, V},
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 151).
-spec with_spotify_link(new_scrobble(), binary()) -> new_scrobble().
with_spotify_link(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        {some, V},
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 155).
-spec with_lastfm_link(new_scrobble(), binary()) -> new_scrobble().
with_lastfm_link(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        {some, V},
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 159).
-spec with_tidal_link(new_scrobble(), binary()) -> new_scrobble().
with_tidal_link(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        {some, V},
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 163).
-spec with_apple_music_link(new_scrobble(), binary()) -> new_scrobble().
with_apple_music_link(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        {some, V},
        erlang:element(22, S),
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 167).
-spec with_youtube_link(new_scrobble(), binary()) -> new_scrobble().
with_youtube_link(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        {some, V},
        erlang:element(23, S),
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 171).
-spec with_deezer_link(new_scrobble(), binary()) -> new_scrobble().
with_deezer_link(S, V) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        {some, V},
        erlang:element(24, S)}.

-file("src/rocksky/scrobble.gleam", 176).
?DOC(" Set the scrobble timestamp in Unix seconds. Omit to default to now (server-side).\n").
-spec with_timestamp(new_scrobble(), integer()) -> new_scrobble().
with_timestamp(S, Unix_seconds) ->
    {new_scrobble,
        erlang:element(2, S),
        erlang:element(3, S),
        erlang:element(4, S),
        erlang:element(5, S),
        erlang:element(6, S),
        erlang:element(7, S),
        erlang:element(8, S),
        erlang:element(9, S),
        erlang:element(10, S),
        erlang:element(11, S),
        erlang:element(12, S),
        erlang:element(13, S),
        erlang:element(14, S),
        erlang:element(15, S),
        erlang:element(16, S),
        erlang:element(17, S),
        erlang:element(18, S),
        erlang:element(19, S),
        erlang:element(20, S),
        erlang:element(21, S),
        erlang:element(22, S),
        erlang:element(23, S),
        {some, Unix_seconds}}.

-file("src/rocksky/scrobble.gleam", 237).
-spec opt_int(
    list({binary(), gleam@json:json()}),
    binary(),
    gleam@option:option(integer())
) -> list({binary(), gleam@json:json()}).
opt_int(Fields, Key, Value) ->
    case Value of
        {some, V} ->
            [{Key, gleam@json:int(V)} | Fields];

        none ->
            Fields
    end.

-file("src/rocksky/scrobble.gleam", 226).
-spec opt_string(
    list({binary(), gleam@json:json()}),
    binary(),
    gleam@option:option(binary())
) -> list({binary(), gleam@json:json()}).
opt_string(Fields, Key, Value) ->
    case Value of
        {some, V} ->
            [{Key, gleam@json:string(V)} | Fields];

        none ->
            Fields
    end.

-file("src/rocksky/scrobble.gleam", 196).
-spec to_json(new_scrobble()) -> gleam@json:json().
to_json(S) ->
    gleam@json:object(
        begin
            _pipe = [{<<"title"/utf8>>, gleam@json:string(erlang:element(2, S))},
                {<<"artist"/utf8>>, gleam@json:string(erlang:element(3, S))}],
            _pipe@1 = opt_string(_pipe, <<"album"/utf8>>, erlang:element(4, S)),
            _pipe@2 = opt_int(
                _pipe@1,
                <<"duration"/utf8>>,
                erlang:element(5, S)
            ),
            _pipe@3 = opt_string(_pipe@2, <<"mbId"/utf8>>, erlang:element(6, S)),
            _pipe@4 = opt_string(_pipe@3, <<"isrc"/utf8>>, erlang:element(7, S)),
            _pipe@5 = opt_string(
                _pipe@4,
                <<"albumArt"/utf8>>,
                erlang:element(8, S)
            ),
            _pipe@6 = opt_int(
                _pipe@5,
                <<"trackNumber"/utf8>>,
                erlang:element(9, S)
            ),
            _pipe@7 = opt_string(
                _pipe@6,
                <<"releaseDate"/utf8>>,
                erlang:element(10, S)
            ),
            _pipe@8 = opt_int(_pipe@7, <<"year"/utf8>>, erlang:element(11, S)),
            _pipe@9 = opt_int(
                _pipe@8,
                <<"discNumber"/utf8>>,
                erlang:element(12, S)
            ),
            _pipe@10 = opt_string(
                _pipe@9,
                <<"lyrics"/utf8>>,
                erlang:element(13, S)
            ),
            _pipe@11 = opt_string(
                _pipe@10,
                <<"composer"/utf8>>,
                erlang:element(14, S)
            ),
            _pipe@12 = opt_string(
                _pipe@11,
                <<"copyrightMessage"/utf8>>,
                erlang:element(15, S)
            ),
            _pipe@13 = opt_string(
                _pipe@12,
                <<"label"/utf8>>,
                erlang:element(16, S)
            ),
            _pipe@14 = opt_string(
                _pipe@13,
                <<"artistPicture"/utf8>>,
                erlang:element(17, S)
            ),
            _pipe@15 = opt_string(
                _pipe@14,
                <<"spotifyLink"/utf8>>,
                erlang:element(18, S)
            ),
            _pipe@16 = opt_string(
                _pipe@15,
                <<"lastfmLink"/utf8>>,
                erlang:element(19, S)
            ),
            _pipe@17 = opt_string(
                _pipe@16,
                <<"tidalLink"/utf8>>,
                erlang:element(20, S)
            ),
            _pipe@18 = opt_string(
                _pipe@17,
                <<"appleMusicLink"/utf8>>,
                erlang:element(21, S)
            ),
            _pipe@19 = opt_string(
                _pipe@18,
                <<"youtubeLink"/utf8>>,
                erlang:element(22, S)
            ),
            _pipe@20 = opt_string(
                _pipe@19,
                <<"deezerLink"/utf8>>,
                erlang:element(23, S)
            ),
            opt_int(_pipe@20, <<"timestamp"/utf8>>, erlang:element(24, S))
        end
    ).

-file("src/rocksky/scrobble.gleam", 188).
?DOC(
    " Convert a `NewScrobble` into a `Request(Scrobble)` ready for `rocksky.send`.\n"
    " ```gleam\n"
    " scrobble.new_scrobble(title: \"Karma Police\", artist: \"Radiohead\")\n"
    " |> scrobble.with_album(\"OK Computer\")\n"
    " |> scrobble.with_duration_ms(263_000)\n"
    " |> scrobble.create\n"
    " |> rocksky.send(client)\n"
    " ```\n"
).
-spec create(new_scrobble()) -> rocksky:request(rocksky@generated@types:scrobble_view_basic()).
create(S) ->
    _pipe = rocksky:procedure(
        <<"app.rocksky.scrobble.createScrobble"/utf8>>,
        rocksky@decoders:scrobble()
    ),
    rocksky:body(_pipe, to_json(S)).