only update changed tags

This commit is contained in:
Vincent Riquer 2013-05-25 23:46:51 +02:00
parent 64b14b67f7
commit 822a266c7c

View File

@ -1,29 +1,23 @@
#!/bin/bash #!/bin/bash
updateTags() { updateTags() {
local \
ual \
uaa \
uar \
uco \
udi \
uge \
upe \
uti \
utr \
uye \
ura \
uch \
ubi
for reader in "${tagreaders[@]}" for reader in "${tagreaders[@]}"
do do
tagreaderclause+="${tagreaderclause:+ AND }NOT tags.tagreader = \"$reader\"" tagreaderclause+="${tagreaderclause:+ AND }NOT tags.tagreader = \"$reader\""
done done
echo '
SELECT COUNT(DISTINCT source_files.filename)
FROM source_files
INNER JOIN destination_files
ON destination_files.source_file_id=source_files.id
INNER JOIN destinations
ON destination_files.destination_id=destinations.id
INNER JOIN mime_type_actions
ON destinations.id=mime_type_actions.destination_id
INNER JOIN tags
ON source_files.id=tags.source_file
WHERE mime_type_actions.id = source_files.mime_type
AND (
CAST(tags.last_change AS TEXT)
<>
CAST(source_files.last_change AS TEXT)
OR ('"$tagreaderclause"')
)
AND mime_type_actions.action = 1;' >&3
read -u4 filecount
echo ' echo '
SELECT DISTINCT SELECT DISTINCT
source_files.id, source_files.id,
@ -66,6 +60,7 @@ updateTags() {
while ! [[ $line = AtOM:NoMoreFiles ]] while ! [[ $line = AtOM:NoMoreFiles ]]
do do
tagfiles+=("$line") tagfiles+=("$line")
(( filecount++ ))
read -u4 line read -u4 line
done done
echo 'BEGIN TRANSACTION;' >&3 echo 'BEGIN TRANSACTION;' >&3
@ -113,22 +108,35 @@ updateTags() {
fi fi
if getTags if getTags
then then
Update tags \ [[ $oldalbum != "$album" ]]&& ual=1
album "${album:-NULL}" \ [[ $oldalbumartist != "$albumartist" ]]&&uaa=1
albumartist "${albumartist:-NULL}" \ [[ $oldartist != "$artist" ]]&& uar=1
artist "${artist:-NULL}" \ [[ $oldcomposer != "$composer" ]]&& uco=1
composer "${composer:-NULL}" \ [[ $olddisc != "$disc" ]]&& udi=1
disc "${disc:-NULL}" \ [[ $oldgenre != "$genre" ]]&& uge=1
genre "${genre:-NULL}" \ [[ $oldperformer != "$performer" ]]&& upe=1
performer "${performer:-NULL}" \ [[ $oldtitle != "$title" ]]&& uti=1
title "${title:-NULL}" \ [[ $oldtrack != "$track" ]]&& utr=1
track "${tracknum:-NULL}" \ [[ $oldyear != "$year" ]]&& uye=1
year "${year:-NULL}" \ [[ $oldrate != "$rate" ]]&& ura=1
last_change "$lastchange" \ [[ $oldchannels != "$channels" ]]&& uch=1
rate "${rate:-NULL}" \ [[ $oldbitrate != "$bitrate" ]]&& ubi=1
channels "${channels:-NULL}" \ Update tags \
bitrate "${bitrate:-NULL}" \ ${ual:+album "${album:-NULL}"} \
tagreader "$tagreader" \ ${uaa:+albumartist "${albumartist:-NULL}"} \
${uar:+artist "${artist:-NULL}"} \
${uco:+composer "${composer:-NULL}"} \
${udi:+disc "${disc:-NULL}"} \
${uge:+genre "${genre:-NULL}"} \
${upe:+performer "${performer:-NULL}"} \
${uti:+title "${title:-NULL}"} \
${utr:+track "${tracknum:-NULL}"} \
${uye:+year "${year:-NULL}"} \
last_change "$lastchange" \
${ura:+rate "${rate:-NULL}"} \
${uch:+channels "${channels:-NULL}"} \
${ubi:+bitrate "${bitrate:-NULL}"} \
tagreader "$tagreader" \
>/dev/null <<<"source_file = $sourcefileid" >/dev/null <<<"source_file = $sourcefileid"
unset genre \ unset genre \
albumartist \ albumartist \