pachi81 Posted January 5 Share Posted January 5 Hi, after moving my Emby Server from Synology Diskstation to Raspberry Pi with DietPI, the real time monitor on my mounted network shares does not work. On Synology I had no problems, but with the mounted shares on my Raspberry I did not get it to work. I tried to mount my Synology drive with SMB and NFS, but no success. I searched for a solution mainly in this forum, but no luck. So I found another solution/workaround for this problem: a script running on my Synology NAS, which triggers a library refresh task, if a file has created, changed or removed in my media folder: 1. install inotify_tools Install from synocommunity: https://synocommunity.com/#easy-install https://synocommunity.com/packages 2. Create script Create script such like this: #!/bin/bash # check for mkv and ts files which have at least a character or a bracket # NOTE: the PATTERN does not work in --include param (don´t know why...) set -e -u trap ctrl_c INT function ctrl_c() { echo [$(date)] Monitoring media files canceled >> $LOGFILE exit } WAIT_SEC=60 # add additional file extension here and to --include pattern! PATTERN="[a-zA-Z\(\) ].*\.(mkv|ts)$" # adjust the IP and the api-key to your settings! COMMAND="curl --data '' http://192.168.xxx.xxx:8096/Emby/Library/Refresh?api_key=<api-key>" LOGFILE="/volume1/media/notify.log" echo [$(date)] Start monitoring media files >> $LOGFILE while true do while read directory action file; do echo "[$(date)] The file '$file' appeared in directory '$directory' via '$action'" >> $LOGFILE if [[ "$file" =~ $PATTERN ]]; then # wait for other changes for not re-trigger during the sleep time echo [$(date)] Trigger scan in $WAIT_SEC seconds >> $LOGFILE sleep $WAIT_SEC echo [$(date -Is)] Trigger library refresh >> $LOGFILE $COMMAND &>> $LOGFILE break fi done < <(inotifywait -q -m --include "\.(mkv|ts)$" -r -e create -e moved_to -e delete /volume1/media/) echo [$(date)] trigger done, wait for the next change >> $LOGFILE done echo [$(date)] Stop monitoring media files >> $LOGFILE The script can be easier, because I wanted to exclude files, which only have numbers. So if you don´t need it, you can remove the part with the PATTERN or change the regex (I´m not a regex expert, but it works like expected...). The wait time is also optional or can be de-/increased... 3. Create Task to run script on startup Create triggered task for startup in Synology which is calling this script. I would suggest to test it before... ;-) 1 Link to comment Share on other sites More sharing options...
Abobader Posted January 5 Share Posted January 5 Hello pachi81, ** This is an auto reply ** Please wait for someone from staff support or our members to reply to you. It's recommended to provide more info, as it explain in this thread: Thank you. Emby Team Link to comment Share on other sites More sharing options...
pachi81 Posted January 6 Author Share Posted January 6 (edited) I updated the script for better usage: #!/bin/bash # check for mkv and ts files which have at least a character or a bracket # important some PATTERN does not work in --include param (don´t know why...) ### Configuration: # list of file extension separate by | FILEEXTENSIONS="mkv|ts|mp4" # special filename regex pattern (without extension!!!) .* for all FILENAME=".*" # folders to monitor (recursive) separate by space " " MONITORDIR="/volume1/Media/" # logfilename LOGFILE="/volume1/Media/notify.log" # emby server address with port EMBYSERVER="192.168.xxx.x:8096" # emby API key API_KEY="<replace with your API key!>" # time to wait before trigger library scan in seconds WAIT_SEC=60 ### End of configuration # config variables (DO NOT CHANGE!) INCLUDE_PATTERN="\.(${FILEEXTENSIONS})$" FILE_PATTERN="${FILENAME}${INCLUDE_PATTERN}" COMMAND="curl --data '' http://${EMBYSERVER}/Emby/Library/Refresh?api_key=${API_KEY}" ##### start of the script set -e -u echo [$(date)] Start monitoring media files > $LOGFILE while true do while read directory action file; do echo "[$(date)] The file '$file' appeared in directory '$directory' via '$action'" >> $LOGFILE if [[ "$file" =~ $FILE_PATTERN ]]; then # wait for other changes for not re-trigger during the sleep time echo [$(date)] Trigger scan in $WAIT_SEC seconds >> $LOGFILE sleep $WAIT_SEC echo [$(date)] Trigger library refresh >> $LOGFILE $COMMAND &>> $LOGFILE break fi done < <(inotifywait -q -m --include "$INCLUDE_PATTERN" -r -e create -e moved_to -e delete $MONITORDIR) echo [$(date)] trigger done, wait for the next change >> $LOGFILE done echo [$(date)] Stop monitoring media files >> $LOGFILE You only have to change the Configuration part. (After the topic has moved, I could not edit my first post...) Edited January 6 by pachi81 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now