monitor: Support NFO file changes

Detect when a .nfo file changes, and rescan metadata for the associated
video file.
This commit is contained in:
Justin Maggard
2017-08-22 15:30:10 -07:00
parent c8665bcf40
commit 9e534c56fd
10 changed files with 87 additions and 59 deletions

View File

@ -447,7 +447,7 @@ insert_directory(const char *name, const char *path, const char *base, const cha
}
int
insert_file(char *name, const char *path, const char *parentID, int object, media_types types)
insert_file(const char *name, const char *path, const char *parentID, int object, media_types types)
{
char class[32];
char objectID[64];
@ -455,7 +455,7 @@ insert_file(char *name, const char *path, const char *parentID, int object, medi
char base[8];
char *typedir_parentID;
char *baseid;
char *orig_name = NULL;
char *objname;
if( (types & TYPE_IMAGES) && is_image(name) )
{
@ -467,12 +467,9 @@ insert_file(char *name, const char *path, const char *parentID, int object, medi
}
else if( (types & TYPE_VIDEO) && is_video(name) )
{
orig_name = strdup(name);
strcpy(base, VIDEO_DIR_ID);
strcpy(class, "item.videoItem");
detailID = GetVideoMetadata(path, name);
if( !detailID )
strcpy(name, orig_name);
}
else if( is_playlist(name) )
{
@ -485,7 +482,6 @@ insert_file(char *name, const char *path, const char *parentID, int object, medi
strcpy(class, "item.audioItem.musicTrack");
detailID = GetAudioMetadata(path, name);
}
free(orig_name);
if( !detailID )
{
DPRINTF(E_WARN, L_SCANNER, "Unsuccessful getting details for %s!\n", path);
@ -493,12 +489,14 @@ insert_file(char *name, const char *path, const char *parentID, int object, medi
}
sprintf(objectID, "%s%s$%X", BROWSEDIR_ID, parentID, object);
objname = strdup(name);
strip_ext(objname);
sql_exec(db, "INSERT into OBJECTS"
" (OBJECT_ID, PARENT_ID, CLASS, DETAIL_ID, NAME) "
"VALUES"
" ('%s', '%s%s', '%s', %lld, '%q')",
objectID, BROWSEDIR_ID, parentID, class, detailID, name);
objectID, BROWSEDIR_ID, parentID, class, detailID, objname);
if( *parentID )
{
@ -510,16 +508,18 @@ insert_file(char *name, const char *path, const char *parentID, int object, medi
typedir_objectID = strtol(baseid+1, NULL, 16);
*baseid = '\0';
}
insert_directory(name, path, base, typedir_parentID, typedir_objectID);
insert_directory(objname, path, base, typedir_parentID, typedir_objectID);
free(typedir_parentID);
}
sql_exec(db, "INSERT into OBJECTS"
" (OBJECT_ID, PARENT_ID, REF_ID, CLASS, DETAIL_ID, NAME) "
"VALUES"
" ('%s%s$%X', '%s%s', '%s', '%s', %lld, '%q')",
base, parentID, object, base, parentID, objectID, class, detailID, name);
base, parentID, object, base, parentID, objectID, class, detailID, objname);
insert_containers(objname, path, objectID, class, detailID);
free(objname);
insert_containers(name, path, objectID, class, detailID);
return 0;
}