[scan] Add option to prefer M3U extinf metadata for URL streams

This commit is contained in:
ejurgensen 2018-03-07 22:46:12 +01:00
parent 5e13bac867
commit a95762f36f
2 changed files with 31 additions and 1 deletions

View File

@ -155,6 +155,10 @@ library {
# to trigger a rescan.
# filescan_disable = false
# Should artists and titles in M3U playlists that contain internet radio
# URL's override what we get by querying the radio station?
# m3u_overrides = false
# Should iTunes metadata override ours?
# itunes_overrides = false

View File

@ -36,6 +36,7 @@
#include "db.h"
#include "library/filescanner.h"
#include "misc.h"
#include "conffile.h"
#include "library.h"
/* Formats we can read so far */
@ -77,10 +78,27 @@ process_url(int pl_id, const char *path, time_t mtime, int extinf, struct media_
{
char virtual_path[PATH_MAX];
char *pos;
char *preserve_artist;
char *preserve_title;
int ret;
int m3u_overrides;
m3u_overrides = cfg_getbool(cfg_getsec(cfg, "library"), "m3u_overrides");
preserve_artist = NULL;
preserve_title = NULL;
if (extinf)
DPRINTF(E_INFO, L_SCAN, "Playlist has EXTINF metadata, artist is '%s', title is '%s'\n", mfi->artist, mfi->title);
{
DPRINTF(E_INFO, L_SCAN, "Playlist '%s' has EXTINF metadata, artist is '%s', title is '%s'\n", path, mfi->artist, mfi->title);
if (m3u_overrides)
{
preserve_artist = mfi->artist;
preserve_title = mfi->title;
mfi->artist = NULL;
mfi->title = NULL;
}
}
mfi->id = db_file_id_bypath(path);
mfi->path = strdup(path);
@ -104,6 +122,14 @@ process_url(int pl_id, const char *path, time_t mtime, int extinf, struct media_
mfi->description = strdup("MPEG audio file");
}
if (m3u_overrides && (preserve_artist || preserve_title))
{
free(mfi->artist);
free(mfi->title);
mfi->artist = preserve_artist;
mfi->title = preserve_title;
}
if (!mfi->title)
mfi->title = strdup(mfi->fname);