2025-06-09 15:07:26 +02:00

424 lines
26 KiB
XML

<?xml version="1.0" ?>
<!-- The mm-sync configuration element -->
<Configuration>
<!-- Control Context configuration
The 'Path' attribute is the device path of the control point
created. It can be overridden via command line argument. -->
<ControlContext Path="/dev/mmsync" />
<!-- Database control elements -->
<Database>
<!--
Automatically adjust internal timebase.
For systems that don't have a stable real-time clock, enabling
this option causes the sync thread to run a routine that adjusts its
internal timebase so that all time values used in the database
remain monotonically increasing. -->
<!--<TimebaseSet enabled="false"/>-->
<!--
Timeout setting for the database in milliseconds. A value of 0
indicates no timeout. Note that values other than 0 can create errors
because of operations that take longer than the specified timeout.
-->
<!--<Timeout>0</Timeout>-->
<!--
Automatically vacuum the database.
Enabling this option causes the sync thread to vacuum the database
whenever the MaxDatabaseSize is reached to see if the DB can be compacted
before aborting sync.
-->
<!--<Vacuum enabled="false"/>-->
<!-- Synchronization control elements -->
<Synchronization>
<!-- Set the synchronization thread's priorities;
0 means no change from default. Non-zero values are
absolute priority values. -->
<!--<Priority>0</Priority>-->
<!-- Set the synchronization merge thread's priority adjustement;
this value is added to the synchronization thread priority to
derive the merge thread priority. Default is one higher than
the sync thread priority. -->
<!--<MergePriorityAdjust>1</MergePriorityAdjust>-->
<!-- The maximum depth number of foreground synchronization
threads that are permitted to run at one time. -->
<!--<MaxThreads>8</MaxThreads>-->
<!-- The maximum depth to recurse when synchronizing a media
store. -->
<!--<MaxRecursionDepth>8</MaxRecursionDepth>-->
<!-- The maximum number of synchronization records
in the buffers between the foreground and background
synchronization threads. A greater number of buffers
increases memory usage, but speeds up syncing.
-->
<!--<MaxSyncBuffers>250</MaxSyncBuffers>-->
<!-- The maximum of MS_SYNC_FIRST_EXISTING_FID events sent during
file synchronization. This applies during a re-synchronization.
By default only one FEF event will be sent. -->
<!--<MaxFirstFidEvent>1</MaxFirstFidEvent>-->
<!-- Files that match this POSIX regex pattern will not be synced.
Only a single SyncFileMask can be specified. The first setting
below is the default (i.e. empty mask), the second can be used
to skip files that begin with ".". The third can be used to
skip files that match "Recycle Bin" or that start with a .
Please note that complex regex patterns will slow down
firstpass sync-->
<!-- <SyncFileMask></SyncFileMask> -->
<SyncFileMask>^\.</SyncFileMask>
<!-- <SyncFileMask>(^\.)|(^Recycle Bin$)</SyncFileMask> -->
<!-- If enabled, it means that files (both multimedia and playlist)
that have a changed size or modification date will keep the
same ID value in the database (fid for files table items
and plid for playlists table items). This causes slower
times for the files (first) pass resynchronization when there
are changes. When this happens, the files and playlists
tables entries for the changes items have their accurate
column cleared; there is no other indication that these items
have changed.
-->
<!--<ChangedFilesHaveConstantId enabled="off"/>-->
<!-- Controls what optional synchronization events are emitted.
The attribute's value determines if they're enabled or not.
Only folder events are currently controllable.
For the "folder" attribute, acceptable values are "on", "off',
and "trimonly". "trimonly" will send folder events when
a folder object (file, folder, playlist) is deleted.
-->
<!-- <Events folder="trimonly"/>-->
<!-- Controls the media-search pre-scan on a per-folder basis.
mm-sync can be configured to allow no-more than MaxItems non-media
items in a given folder. When MaxItems non-media items are encountered
the folder is treated as if it is empty and does not contain any
media items. When MaxItems is 0 this feature is disabled.
By default the MaxItems limit is a total limit in a folder.
This limit can be configured as a consecutive file limit. Note
that the file order is generally not guaranteed and as such
using a consecutive limit could yield non-deterministic results.
This feature is implemented as a pre-scan on a per-folder basis.
When PrescanLimit is 0 the entire directory is scanned (no limit).
-->
<!--
<NonMediaItems>
<MaxItems consecutive="false">0</MaxItems>
<PrescanLimit>0</PrescanLimit>
</NonMediaItems>
-->
<!-- Controls the maximum number of items that are read from folders.
The limit value includes any filtered items in the folder
except for "." and "..".
If 0, no limit is used. -->
<!-- <MaxFolderItems>0</MaxFolderItems>-->
<!-- Controls the maximum number of media related items that are
read from folders. The limit value considers only entries
(files, playlists and folders) that are inserted into the
database. If 0, no limit is used. -->
<!-- <MaxFolderMediaItems>0</MaxFolderMediaItems>-->
<!-- Controls the maximum number of folders that are read from media storage.
Multiple items can be specfied for different media storage.
Can use wildcard in 'mediastore' attribute, for example:
<MaxMediaStoreItems mediastore="/fs/usb*">10000</MaxMediaStoreItems>
Means /fs/usb0 and /fs/usb1 has maximum number of 10000 respectively.
If 0 or not presented, no limit. -->
<!--
<MaxMediaStoreFolderItems>
<MaxMediaStoreItems mediastore="/fs/usb*">10000</MaxMediaStoreItems>
<MaxMediaStoreItems mediastore="/media/drive*">10000</MaxMediaStoreItems>
</MaxMediaStoreFolderItems>
-->
<!-- Controls the maximum number of items that are read form media storage.
The limit value includes any filtered items in the storage except for
"." and "..". Multiple items can be specfied for different media storage.
Can use wildcard in 'mediastore' attribute, for example:
<MaxMediaStoreItems mediastore="/fs/usb*">10000</MaxMediaStoreItems>
Means /fs/usb0 and /fs/usb1 has maximum number of 10000 respectively.
If 0 or not presented, no limit. -->
<!--
<MaxMediaStoreItemsConfiguration>
<MaxMediaStoreItems mediastore="/fs/usb*">10000</MaxMediaStoreItems>
<MaxMediaStoreItems mediastore="/media/drive*">10000</MaxMediaStoreItems>
</MaxMediaStoreItemsConfiguration>
-->
<!-- Skip any files which are below a minimum size threshold. Any files with
a size greater than or equal to the configured number will be synced. Value
is in bytes. 0 disables checking.
-->
<!-- <MinFileSize>0</MinFileSize>-->
<!-- Controls whether sync stops when a database limit has been
reached or not. -->
<!--<StopOnDbLimit enabled="false"/>-->
<!-- Specifies which file extensions are used. If the <playlists>
or <library> element is specified, all extensions pertaining to
that element must be explicitly specified. -->
<extensions>
<!-- Playlist extensions don't need any attributes -->
<!-- <playlists>
<extension value="m3u"/>
<extension value="m3u8"/>
<extension value="pls"/>
<extension value="wpl"/>
<extension value="asx"/>
<extension value="rmp"/> -->
<!-- <extension value="xml"/> -->
<!-- <extension value="wax"/>
<extension value="wvx"/>
<extension value="xspf"/>
<extension value="b4s"/>
</playlists> -->
<!-- Library extensions need an ftype attribute specifying the
ftype field in the library. ftype should be one of "audio",
"photo" or "video".
mm-sync will allow the file type to be flexible. This means
that the file type can be changed during metadata pass if
a file is found to be something else (for example, an mp4
file can be an audio-only file). To prevent a flexible file
type for a file extension flex_ftype should be set to
"off". The default value is "on". The default value is used
if the flex_type attribute is missing.
If the extension value is "*" it will be used as a default
ftype for all file extensions not defined. -->
<library>
<!-- Audio types -->
<extension value="aac" ftype="audio" flex_ftype="on"/>
<extension value="m4a" ftype="audio" flex_ftype="on"/>
<extension value="m4b" ftype="audio" flex_ftype="on"/>
<extension value="mp3" ftype="audio" flex_ftype="on"/>
<extension value="wav" ftype="audio" flex_ftype="on"/>
<extension value="wma" ftype="audio" flex_ftype="on"/>
<extension value="ogg" ftype="audio" flex_ftype="on"/>
<!-- Photo types -->
<!-- Comment out by default
<extension value="bmp" ftype="photo" flex_ftype="off"/>
<extension value="gif" ftype="photo" flex_ftype="off"/>
<extension value="jpeg" ftype="photo" flex_ftype="off"/>
<extension value="jpg" ftype="photo" flex_ftype="off"/>
<extension value="png" ftype="photo" flex_ftype="off"/>
-->
<!-- Video types -->
<extension value="3g2" ftype="video" flex_ftype="on"/>
<extension value="3gp" ftype="video" flex_ftype="on"/>
<extension value="m4v" ftype="video" flex_ftype="on"/>
<extension value="mp4" ftype="video" flex_ftype="on"/>
<extension value="mpeg4" ftype="video" flex_ftype="on"/>
<extension value="mov" ftype="video" flex_ftype="on"/>
<extension value="avi" ftype="video" flex_ftype="on"/>
</library>
</extensions>
<!-- ConfigurableMetadata allows for the configuration of specific
metadata pieces from libmd to the database. mm-sync has no
special knowledge of this metadata but will pass it through
accordingly.
-->
<ConfigurableMetadata>
<!-- Configure the metadata string maximum to use either a maximum number of
characters or a maximum number of bytes. For UTF-8 strings which are
multibyte encoded, this can produce a significant difference in the
number of visible characters returned. Default is 'characters'.
-->
<!-- <maximum type="characters" /> -->
<metadata ftype="audio" table="audio_metadata.artist_id" ext_table="artists.artist" ext_table_rel="artist_id" md_map="libmd@md_title::artist,md_title::albumartist;ipod@artist;iap2@artist" maximum="256" />
<metadata ftype="audio" table="audio_metadata.album_id" ext_table="albums.album" ext_table_rel="album_id" md_map="libmd@md_title::album;ipod@album;iap2@album" maximum="256" />
<metadata ftype="audio" table="audio_metadata.genre_id" ext_table="genres.genre" ext_table_rel="genre_id" md_map="libmd@md_title::genre;ipod@genre;iap2@genre" maximum="256" />
<metadata ftype="audio" table="audio_metadata.year" md_map="libmd@md_title::year;ipod@year;" />
<metadata ftype="audio" table="audio_metadata.disc" md_map="libmd@md_title::disk;ipod@disc_num;iap2@disc_num;" />
<metadata ftype="audio" table="audio_metadata.track" md_map="libmd@md_title::track;ipod@track_num;iap2@track_num;" />
<metadata ftype="audio" table="audio_metadata.rating" md_map="libmd@md_title::rating;ipod@rating;iap2@rating;" />
<metadata ftype="audio" table="audio_metadata.bitrate" md_map="libmd@md_title::bitrate;ipod@bitrate;" />
<metadata ftype="audio" table="audio_metadata.samplerate" md_map="libmd@md_title::samplerate;" />
<metadata ftype="audio" table="audio_metadata.protected" md_map="libmd@md_title::protected;" />
<metadata ftype="audio" table="audio_metadata.duration" md_map="libmd@md_title::duration;ipod@duration;iap2@duration;" />
<metadata ftype="audio" table="audio_metadata.description" md_map="libmd@md_title::comment;ipod@description;" maximum="256" />
<metadata ftype="audio" table="audio_metadata.title" md_map="libmd@md_title::name;ipod@name;iap2@name;" maximum="256" />
<metadata ftype="audio" table="audio_metadata.fourcc" md_map="libmd@md_audio::fourcc;" maximum="4" />
<metadata ftype="audio" table="audio_metadata.compilation" md_map="libmd@md_title::compilation;iap2@compilation" />
<!-- iPod
<metadata ftype="audio" table="ipod_metadata.offset" md_map="ipod@offset;" />
<metadata ftype="audio" table="ipod_metadata.caps" md_map="ipod@caps;" />
<metadata ftype="audio" table="ipod_metadata.composer" ext_table="ipod_composers.composer" ext_table_rel="composer_id" md_map="ipod@composer;" maximum="256" />
<metadata ftype="audio" table="ipod_metadata.uid" md_map="ipod@uid;" />
<metadata ftype="audio" table="ipod_metadata.podcast_date" md_map="ipod@podcast_date;" />
<metadata ftype="audio" table="ipod_metadata.play_count" md_map="ipod@play_count;" />
<metadata ftype="audio" table="ipod_metadata.skip_count" md_map="ipod@skip_count;" />
<metadata ftype="audio" table="ipod_metadata.last_play" md_map="ipod@last_play;" />
<metadata ftype="audio" table="ipod_metadata.series_name" md_map="ipod@series_name;" />
<metadata ftype="audio" table="ipod_metadata.season_num" md_map="ipod@season_num;" />
<metadata ftype="audio" table="ipod_metadata.vol_adjust" md_map="ipod@vol_adjust;" />
<metadata ftype="audio" table="ipod_metadata.eq_preset" md_map="ipod@eq_preset;" />
<metadata ftype="audio" table="ipod_metadata.book_off" md_map="ipod@book_off;" />
<metadata ftype="audio" table="ipod_metadata.time_off" md_map="ipod@time_off;" />
-->
<!-- iPod metadata items that are not yet supported by the iPod driver
<metadata ftype="audio" table="ipod_metadata.chp_count" md_map="ipod@chp_count;" />
<metadata ftype="audio" table="ipod_metadata.chp_times" md_map="ipod@chp_times;" />
<metadata ftype="audio" table="ipod_metadata.chp_name" md_map="ipod@chp_name;" />
-->
<!-- IAP2
<metadata ftype="audio" table="iap2_metadata.uid" md_map="iap2@uid;" />
<metadata ftype="audio" table="iap2_metadata.type" md_map="iap2@type;" />
<metadata ftype="audio" table="iap2_metadata.ondevice" md_map="iap2@ondevice;" />
<metadata ftype="audio" table="iap2_metadata.chp_count" md_map="iap2@chp_count;" />
<metadata ftype="audio" table="iap2_metadata.composer" ext_table="iap2_composers.composer" ext_table_rel="composer_id" md_map="iap2@composer;" maximum="256" />
<metadata ftype="audio" table="iap2_metadata.albumartist" ext_table="iap2_albumartists.albumartist" ext_table_rel="albumartist_id" md_map="iap2@albumartist;" maximum="256" />
<metadata ftype="audio" table="iap2_metadata.album_uid" ext_table="iap2_album_uids.album_uid" ext_table_rel="id" md_map="iap2@album_uid;" maximum="256" />
<metadata ftype="audio" table="iap2_metadata.artist_uid" ext_table="iap2_artist_uids.artist_uid" ext_table_rel="id" md_map="iap2@artist_uid;" maximum="256" />
<metadata ftype="audio" table="iap2_metadata.genre_uid" ext_table="iap2_genre_uids.genre_uid" ext_table_rel="id" md_map="iap2@genre_uid;" maximum="256" />
<metadata ftype="audio" table="iap2_metadata.composer_uid" ext_table="iap2_composer_uids.composer_uid" ext_table_rel="id" md_map="iap2@composer_uid;" maximum="256" />
<metadata ftype="audio" table="iap2_metadata.albumartist_uid" ext_table="iap2_albumartist_uids.albumartist_uid" ext_table_rel="id" md_map="iap2@albumartist_uid;" maximum="256" />
-->
<metadata ftype="video" table="video_metadata.artist_id" ext_table="artists.artist" ext_table_rel="artist_id" md_map="libmd@md_title::artist,md_title::albumartist;" maximum="256" />
<metadata ftype="video" table="video_metadata.genre_id" ext_table="genres.genre" ext_table_rel="genre_id" md_map="libmd@md_title::genre;" maximum="256" />
<metadata ftype="video" table="video_metadata.year" md_map="libmd@md_title::year;" />
<metadata ftype="video" table="video_metadata.width" md_map="libmd@md_title::width;" />
<metadata ftype="video" table="video_metadata.height" md_map="libmd@md_title::height;" />
<metadata ftype="video" table="video_metadata.rating" md_map="libmd@md_title::rating;" />
<metadata ftype="video" table="video_metadata.total_bitrate" md_map="libmd@md_title::bitrate;" />
<metadata ftype="video" table="video_metadata.video_framerate" md_map="libmd@md_title::samplerate;" />
<metadata ftype="video" table="video_metadata.protected" md_map="libmd@md_title::protected;" />
<metadata ftype="video" table="video_metadata.duration" md_map="libmd@md_title::duration;" />
<metadata ftype="video" table="video_metadata.description" md_map="libmd@md_title::comment;" maximum="256" />
<metadata ftype="video" table="video_metadata.title" md_map="libmd@md_title::name;" maximum="256" />
<metadata ftype="video" table="video_metadata.audio_fourcc" md_map="libmd@md_audio::fourcc;" maximum="4" />
<metadata ftype="video" table="video_metadata.video_fourcc" md_map="libmd@md_video::fourcc;" maximum="4" />
<!--
<metadata ftype="photo" table="photo_metadata.latitude" md_map="libmd@md_title::latitude;" />
<metadata ftype="photo" table="photo_metadata.longitude" md_map="libmd@md_title::longitude;" />
<metadata ftype="photo" table="photo_metadata.width" md_map="libmd@md_title::width;" />
<metadata ftype="photo" table="photo_metadata.height" md_map="libmd@md_title::height;" />
<metadata ftype="photo" table="photo_metadata.color_depth" md_map="libmd@md_title::color_depth;" />
<metadata ftype="photo" table="photo_metadata.orientation" md_map="libmd@md_title::orientation;" />
<metadata ftype="photo" table="photo_metadata.shutter" md_map="libmd@md_title::shutter_speed;" />
<metadata ftype="photo" table="photo_metadata.aperture" md_map="libmd@md_title::fnumber;" />
<metadata ftype="photo" table="photo_metadata.focal_length" md_map="libmd@md_title::focal_length;" />
<metadata ftype="photo" table="photo_metadata.iso" md_map="libmd@md_title::iso_speed_ratings;" />
<metadata ftype="photo" table="photo_metadata.description" md_map="libmd@md_title::description;" maximum="256" />
<metadata ftype="photo" table="photo_metadata.date_original" md_map="libmd@md_title::date_time_original;" />
<metadata ftype="photo" table="photo_metadata.keywords" md_map="libmd@md_title::keywords;" maximum="256" />
-->
</ConfigurableMetadata>
<!-- MediaStore Synchronization elements. MSS plugins can find their
configuration under the "Configuration/Synchronization/MSS/<name>"
path.
-->
<MSS>
<!-- <dll name="mss-ipodgeneric.so"/> -->
<!-- <dll name="mss-ipodpb.so"/> -->
<!-- <dll name="mss-ipoduid.so"/> -->
<dll name="mss-ipodiap2.so"/>
</MSS>
<!-- Playlist synchronization elements. -->
<PLSS>
<!-- The configuration file for the mmplaylist library. The mmplaylist
library will use "/etc/system/config/mmplaylist.conf" by default.
-->
<MMPlaylistConfigFile>/opt/mm/etc/mm-playlist.conf</MMPlaylistConfigFile>
<!-- The maximum number of lines in a single playlist that will
be synchronized. If this configuration value is increased
between executions any playlists that have been marked
"accurate" in the database should manually be set inaccurate
(value 0) to force resynchronization.
-->
<!--<MaxLines>5000</MaxLines>-->
<!-- The number of playlist entries to sync before sending an update event.
This value will send the MMSYNC_EVENT_PLAYLIST_ENTRIES_UPDATE event every
n-th playlist entries that was selected for update during third pass.
If a playlist entry needs to be updated in the database, it will be
done before this event is sent. By default, the event is not sent. -->
<!-- <NumPlaylistEntriesSyncEvent>0</NumPlaylistEntriesSyncEvent>-->
<!-- Ignore case when matching playlist entries. Ensure the ICU
library is loaded or matching may produce unexpected results.
Matching will be performed based on the language code set in
the playlist table row. Ensure 4 character language codes
are used such as 'en_CA'.
-->
<!-- <Matching ignore_case="false"/> -->
<!-- Playlist entries that cannot be resolved but match this
POSIX regex pattern will be synced to the playlist_entries table.
Only a single UnresolvedEntrymask can be specified. The
first setting below is the default (i.e. empty mask),
the second can be used to add http(s) and ftp URLs to
the playlist_entries table if they cannot be resolved.-->
<!-- <UnresolvedEntryMask></UnresolvedEntryMask> -->
<!-- <UnresolvedEntryMask>^(http(s?)|ftp)://</UnresolvedEntryMask> -->
</PLSS>
</Synchronization>
<!-- Database pruning control elements -->
<Prune>
<!-- The high water mark of the database size. If the
database exceeds this size then the prune managers
will attempt to prune the database.
If this is set to 0 then this type of prune management
is disabled. Value is in kB
>0 starts limiting -->
<!--<MaxDatabaseSize>0</MaxDatabaseSize>-->
<!-- After this many synced files, mm-sync will check to
see how big the database is. The larger the number
the faster the sync, but a larger number also increases
the amount of files you can sync past the MaxDatabaseSize
before the prune management activates.
If set to 0 then it will not check in the middle of
a sync.
>0 starts limiting -->
<!--<SyncInterval>0</SyncInterval>-->
</Prune>
</Database>
<!-- Metadata library specific options. -->
<MD>
<!-- Load and unload MMF parsers only while a synchronization is in progress.
DLLs will be unloaded when there are no more active syncs. The default is
to load the DLLs on startup and unload them on shutdown.
-->
<!-- <LoadOnSync value="false" /> -->
</MD>
</Configuration>