Class: ListenBrainz::Listen
- Defined in:
- lib/listenbrainz/models/listen.rb
Overview
Model class for listens.
Defined Under Namespace
Classes: Payload, TrackMetadata
Instance Attribute Summary collapse
- #inserted_at ⇒ Time? readonly
- #listened_at ⇒ Time? readonly
- #recording_msid ⇒ String? readonly
- #track_metadata ⇒ TrackMetadata readonly
Class Method Summary collapse
-
.get(username = ListenBrainz.client.username, count: nil, before: nil, after: nil) ⇒ Payload
Retrieves listens for a given user.
-
.now_playing(username = ListenBrainz.client.username) ⇒ Payload
Retrieves the “now playing” listens for a given user.
-
.submit(listens, mode: :import) ⇒ Void
Imports a batch of listens.
Instance Method Summary collapse
-
#submit(mode: :single) ⇒ Void
Submits the listen to ListenBrainz.
Methods inherited from Base
Instance Attribute Details
#inserted_at ⇒ Time? (readonly)
113 |
# File 'lib/listenbrainz/models/listen.rb', line 113 attribute? :inserted_at, Types::Timestamp |
#listened_at ⇒ Time? (readonly)
117 |
# File 'lib/listenbrainz/models/listen.rb', line 117 attribute? :listened_at, Types::Timestamp |
#recording_msid ⇒ String? (readonly)
121 |
# File 'lib/listenbrainz/models/listen.rb', line 121 attribute? :recording_msid, Types::String |
#track_metadata ⇒ TrackMetadata (readonly)
188 |
# File 'lib/listenbrainz/models/listen.rb', line 188 attribute :track_metadata, TrackMetadata |
Class Method Details
.get(username = ListenBrainz.client.username, count: nil, before: nil, after: nil) ⇒ Payload
Retrieves listens for a given user.
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/listenbrainz/models/listen.rb', line 18 def self.get( username = ListenBrainz.client.username, count: nil, before: nil, after: nil ) max_ts = before && Types::Timestamp[before].to_i min_ts = after && Types::Timestamp[after].to_i params = { count:, min_ts:, max_ts: }.compact ListenBrainz.client.query(:get, "1/user/#{username}/listens", params:) .fetch(:payload).then { Payload.new(_1) } end |
.now_playing(username = ListenBrainz.client.username) ⇒ Payload
Retrieves the “now playing” listens for a given user.
36 37 38 39 |
# File 'lib/listenbrainz/models/listen.rb', line 36 def self.(username = ListenBrainz.client.username) ListenBrainz.client.query(:get, "1/user/#{username}/playing-now") .fetch(:payload).then { Payload.new(_1) } end |
.submit(listens, mode: :import) ⇒ Void
Imports a batch of listens.
48 49 50 51 |
# File 'lib/listenbrainz/models/listen.rb', line 48 def self.submit(listens, mode: :import) ListenBrainz.client.query(:post, '1/submit-listens', json: { listen_type: mode, payload: Array(listens).map(&:as_json) }) end |
Instance Method Details
#submit(mode: :single) ⇒ Void
Submits the listen to ListenBrainz.
59 60 61 |
# File 'lib/listenbrainz/models/listen.rb', line 59 def submit(mode: :single) self.class.submit(self, mode:) end |