myMPD
Internal API documentation
Loading...
Searching...
No Matches
album.h
Go to the documentation of this file.
1/*
2 SPDX-License-Identifier: GPL-3.0-or-later
3 myMPD (c) 2018-2025 Juergen Mang <mail@jcgames.de>
4 https://github.com/jcorporation/mympd
5*/
6
11#ifndef MYMPD_ALBUM_H
12#define MYMPD_ALBUM_H
13
14#include "src/lib/fields.h"
15#include "src/lib/mpdclient.h"
16
17#include <stdbool.h>
18
24struct t_album;
25
30 ALBUM_MODE_SIMPLE = 0,
31 ALBUM_MODE_ADV
32};
33
39 enum mpd_tag_type group_tag;
40 bool unknown;
41};
42
43struct t_album *album_new(void);
44struct t_album *album_new_uri(const char *uri);
45struct t_album *album_new_from_song(const struct mpd_song *song, const struct t_mympd_mpd_tags *album_tags);
46void album_free(struct t_album *album);
47
48const char *album_get_uri(const struct t_album *album);
49time_t album_get_last_modified(const struct t_album *album);
50time_t album_get_added(const struct t_album *album);
51unsigned album_get_disc_count(const struct t_album *album);
52unsigned album_get_total_time(const struct t_album *album);
53unsigned album_get_song_count(const struct t_album *album);
54bool album_get_unknown(const struct t_album *album);
55const char *album_get_tag(const struct t_album *album, enum mpd_tag_type type, unsigned idx);
56
57void album_set_discs(struct t_album *album, const char *disc);
58void album_set_disc_count(struct t_album *album, unsigned count);
59void album_set_last_modified(struct t_album *album, time_t last_modified);
60void album_set_added(struct t_album *album, time_t added);
61void album_set_total_time(struct t_album *album, unsigned duration);
62void album_inc_total_time(struct t_album *album, unsigned duration);
63void album_set_song_count(struct t_album *album, unsigned count);
64void album_inc_song_count(struct t_album *album);
65bool album_append_tag(struct t_album *song, enum mpd_tag_type type, const char *value);
66bool album_append_tags(struct t_album *album, const struct mpd_song *song, const struct t_mympd_mpd_tags *tags);
67bool album_copy_tags(struct t_album *song, enum mpd_tag_type src, enum mpd_tag_type dst);
68void album_set_uri(struct t_album *album, const char *uri);
69void album_set_unknown(struct t_album *album, bool unknown);
70sds album_get_tag_value_string(const struct t_album *album, enum mpd_tag_type tag, sds tag_values);
71sds album_get_tag_values(const struct t_album *album, enum mpd_tag_type tag, sds tag_values);
72sds album_get_tag_value_padded(const struct t_album *album, enum mpd_tag_type tag, char pad, size_t len, sds tag_values);
73sds print_album_tags(sds buffer, const struct t_albums_config *album_config, const struct t_mympd_mpd_tags *tagcols,
74 const struct t_album *album);
75
76#endif
time_t album_get_added(const struct t_album *album)
Definition album.c:188
void album_inc_song_count(struct t_album *album)
Definition album.c:335
struct t_album * album_new_from_song(const struct mpd_song *song, const struct t_mympd_mpd_tags *album_tags)
Definition album.c:96
void album_set_uri(struct t_album *album, const char *uri)
Definition album.c:442
void album_free(struct t_album *album)
Definition album.c:133
sds album_get_tag_value_string(const struct t_album *album, enum mpd_tag_type tag, sds tag_values)
Definition album.c:456
bool album_append_tags(struct t_album *album, const struct mpd_song *song, const struct t_mympd_mpd_tags *tags)
Definition album.c:346
void album_set_total_time(struct t_album *album, unsigned duration)
Definition album.c:309
void album_set_unknown(struct t_album *album, bool unknown)
Definition album.c:249
unsigned album_get_disc_count(const struct t_album *album)
Definition album.c:206
bool album_copy_tags(struct t_album *song, enum mpd_tag_type src, enum mpd_tag_type dst)
Definition album.c:425
void album_set_last_modified(struct t_album *album, time_t last_modified)
Definition album.c:285
bool album_append_tag(struct t_album *song, enum mpd_tag_type type, const char *value)
Definition album.c:374
unsigned album_get_total_time(const struct t_album *album)
Definition album.c:170
sds print_album_tags(sds buffer, const struct t_albums_config *album_config, const struct t_mympd_mpd_tags *tagcols, const struct t_album *album)
Definition album.c:527
const char * album_get_tag(const struct t_album *album, enum mpd_tag_type type, unsigned idx)
Definition album.c:217
sds album_get_tag_value_padded(const struct t_album *album, enum mpd_tag_type tag, char pad, size_t len, sds tag_values)
Definition album.c:502
struct t_album * album_new_uri(const char *uri)
Definition album.c:72
void album_set_song_count(struct t_album *album, unsigned count)
Definition album.c:327
void album_set_added(struct t_album *album, time_t added)
Definition album.c:296
sds album_get_tag_values(const struct t_album *album, enum mpd_tag_type tag, sds tag_values)
Definition album.c:480
void album_set_discs(struct t_album *album, const char *disc)
Definition album.c:258
void album_set_disc_count(struct t_album *album, unsigned count)
Definition album.c:276
void album_inc_total_time(struct t_album *album, unsigned duration)
Definition album.c:318
const char * album_get_uri(const struct t_album *album)
Definition album.c:161
struct t_album * album_new(void)
Definition album.c:63
time_t album_get_last_modified(const struct t_album *album)
Definition album.c:179
bool album_get_unknown(const struct t_album *album)
Definition album.c:240
album_modes
Definition album.h:29
unsigned album_get_song_count(const struct t_album *album)
Definition album.c:197
Fields handling.
Custom libmpdclient include.
Definition album.c:46
time_t added
Earliest added time of all songs in this album.
Definition album.c:53
struct t_album_tag_value tags[MPD_TAG_COUNT]
Tag values (same struct as it is for mpd_song)
Definition album.c:48
bool unknown
Marker for unknown album.
Definition album.c:54
time_t last_modified
Latest last-modified time of all songs in this album.
Definition album.c:52
char * uri
First song uri, used to fetch AlbumArt.
Definition album.c:47
Definition album.h:37
enum album_modes mode
Album cache mode.
Definition album.h:38
enum mpd_tag_type group_tag
Additional group tag for albums.
Definition album.h:39
bool unknown
Enables grouping of songs with no album tag.
Definition album.h:40
Definition fields.h:20