[Synology NAS] Fixed non-ASCII chars and more...(2020/09/11)

Come up with a useful post-processing script? Share it here!
starsys
Newbie
Newbie
Posts: 33
Joined: July 26th, 2011, 4:17 am

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by starsys »

En fait mon script tiens en 2 lignes :
#!/bin/ash
/usr/syno/bin/synoindex -A "$1"

Il me permet de visionner les fichiers fraîchement téléchargés avec sabnzbd sur ma freebox player. En effet, sans ce script les fichiers téléchargés par sabnzbd ne sont pas indexés par le nas et donc non visibles en upnp sur les player upnp. Si tu as une idée de combinaison des 2 scripts ça serait vraiment le pied. Sabnzbd devient parfait. En tout cas j'ai essayé plein de fichiers avec ton script et ça marche vraiment nickel. Merci.

User avatar
LapinFou
Jr. Member
Jr. Member
Posts: 98
Joined: April 23rd, 2012, 7:35 am
Location: France, Caen

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by LapinFou »

Aucun problème pour rajouter la ligne qui va bien à la fin de mon script.
Quels sont les fichiers que tu veux indexer??
.avi, .divx, .mkv, .mt2s
peut-être aussi les
.mp3
Donne moi la liste et je te donnerais ce qu'il faut ajouter.
Synology Model: DS-916+
Firmware Version: DSM 6.2.3-25426 Update 2
HDD Model: 3xSeagate ST4000VN008 4To - SHR + 1x256Go SSD - cache

starsys
Newbie
Newbie
Posts: 33
Joined: July 26th, 2011, 4:17 am

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by starsys »

J'indexe tous les fichiers téléchargés (surtout mkv) et jusqu'à présent avec ces 2 lignes de script, tout fonctionnait bien.
En fait le script utilise une variable interne de Sabnzbd (le "$1" si je me souviens bien) qui permet d'indexer le fichier qui vient d'être téléchargé, je n'ai pas à spécifier l'extension.
Donc si je résume, je rajoute mes 2 lignes à la fin de ton script :
#!/bin/ash
/usr/syno/bin/synoindex -A "$1"

Et si tout marche bien, ton script va renommer si nécessaire puis indexer le ou les fichier téléchargé ?

Penses tu que la variable "$1" va rester exploitable ?

User avatar
LapinFou
Jr. Member
Jr. Member
Posts: 98
Joined: April 23rd, 2012, 7:35 am
Location: France, Caen

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by LapinFou »

OK, alors rajoute les lignes suivantes à la fin du script, juste avant la ligne:

Code: Select all

print "Character encoding translation done!"
lignes a ajoutée:

Code: Select all

print "Adding folder in the DLNA server"
currentFolder = os.getcwd()
os.system("/usr/syno/bin/synoindex -A \"" + currentFolder + "\"")
print ""
Je suis au boulot, donc je ne peux pas tester. Tiens moi au courant si cela fonctionne.
Synology Model: DS-916+
Firmware Version: DSM 6.2.3-25426 Update 2
HDD Model: 3xSeagate ST4000VN008 4To - SHR + 1x256Go SSD - cache

User avatar
LapinFou
Jr. Member
Jr. Member
Posts: 98
Joined: April 23rd, 2012, 7:35 am
Location: France, Caen

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by LapinFou »

Si le bout de code fonctionne bien, alors essaye avec cela (code plus robuste)

Code: Select all

print "Adding folder in the DLNA server"
currentFolder = os.getcwd()
synoindex_cmd = ['/usr/syno/bin/synoindex', '-A', currentFolder]
try:
    p = subprocess.Popen(synoindex_cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    out, err = p.communicate()
    print(u"Synoindex result: " + str(out))
    print(u"Synoindex error: " + str(err))
except OSError, e:
    print(u"Unable to run synoindex: "+str(e))
Sans oublier de d'ajouter la librairie en début de script:
Le bout de code:

Code: Select all

# get library modules
import sys, os
devient:

Code: Select all

# get library modules
import sys, os
import subprocess
Synology Model: DS-916+
Firmware Version: DSM 6.2.3-25426 Update 2
HDD Model: 3xSeagate ST4000VN008 4To - SHR + 1x256Go SSD - cache

starsys
Newbie
Newbie
Posts: 33
Joined: July 26th, 2011, 4:17 am

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by starsys »

Je suis aussi au boulot j'essaye ça ce soir. Merci beaucoup.

starsys
Newbie
Newbie
Posts: 33
Joined: July 26th, 2011, 4:17 am

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by starsys »

J'essaye de préparer le code vite fait pendant ma pause midi.

J'insère le code avant ou après la ligne "print "Character encoding translation done!"" ?

starsys
Newbie
Newbie
Posts: 33
Joined: July 26th, 2011, 4:17 am

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by starsys »

Erreur :
File "/volume1/video/CharTranslatorV2.py", line 128
print "Adding folder in the DLNA server"
^
IndentationError: unexpected indent

User avatar
LapinFou
Jr. Member
Jr. Member
Posts: 98
Joined: April 23rd, 2012, 7:35 am
Location: France, Caen

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by LapinFou »

Attention de ne pas utiliser le bouton SELECT ALL, sinon une tabulation va être rajouté devant chaque ligne!!
Synology Model: DS-916+
Firmware Version: DSM 6.2.3-25426 Update 2
HDD Model: 3xSeagate ST4000VN008 4To - SHR + 1x256Go SSD - cache

starsys
Newbie
Newbie
Posts: 33
Joined: July 26th, 2011, 4:17 am

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by starsys »

Oui j'ai bien fait gaffe cette fois ci. Tu penses que c encore un pb de ce genre ? Je fais bien un "retourne" pour revenir à la ligne ?

User avatar
LapinFou
Jr. Member
Jr. Member
Posts: 98
Joined: April 23rd, 2012, 7:35 am
Location: France, Caen

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by LapinFou »

Cela ressemble furieusement à ce genre de problème (attention aussi que le fichier soit bien sauvé au format UNIX).
Et attention au retour à la ligne qui sont différent suivant si c'est du Window ou du Unix.

Voici a quoi doit ressembler la fin du script:

Code: Select all

########################
# --- Main Program --- #
########################

# get argument: directory of the SABnzbd job
os.chdir(sys.argv[1])

# display directory of the SABnzbd job
currentFolder = os.getcwd()
print "Current folder is" + currentFolder

# rename SABnzbd job directory (coming from SABnzbd: never in CP437 format)
print "Renaming folders to UTF-8..."
renameFunc('', currentFolder)

# process each sub-folders starting from the deepest level
for dirname, dirnames, filenames in os.walk('.', topdown=False):
   for subdirname in dirnames:
      renameFunc(dirname, subdirname)
print "Folder renaming Done !"
print ""

# process each file recursively
print "Renaming files to UTF-8..."
for dirname, dirnames, filenames in os.walk('.'):
   for filename in filenames:
      renameFunc(dirname, filename)
print "Files renaming Done !"
print ""

# add processed folder in the Syno index database
print "Adding folder in the DLNA server"
currentFolder = os.getcwd()
os.system("/usr/syno/bin/synoindex -A \"" + currentFolder + "\"")
print ""

print "Character encoding translation done!"
Synology Model: DS-916+
Firmware Version: DSM 6.2.3-25426 Update 2
HDD Model: 3xSeagate ST4000VN008 4To - SHR + 1x256Go SSD - cache

starsys
Newbie
Newbie
Posts: 33
Joined: July 26th, 2011, 4:17 am

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by starsys »

Encore une fois ca devait effectivement être un problème de copier coller.
Le code semble passer maintenant :

Current folder is/volume1/video/Jenifer - Appelle-moi Jen
Renaming folders to UTF-8...
/volume1/video/Jenifer - Appelle-moi Jen -> No special characters detected: Nothing to be done
Folder renaming Done !

Renaming files to UTF-8...
./Jenifer - Appelle-moi Jen-Back.jpg -> No special characters detected: Nothing to be done
./Jenifer - Appelle-moi Jen-Front.jpg -> No special characters detected: Nothing to be done
./Jenifer - Appelle-moi Jen.nfo -> No special characters detected: Nothing to be done
./08 - Pole Dance.mp3 -> No special characters detected: Nothing to be done
./06 - Le Dos Tourné.mp3 -> ISO-8859-15 detected: Renamed
./02 - Je Danse.mp3 -> No special characters detected: Nothing to be done
./00 - Jenifer - Appelle-moi Jen.m3u -> No special characters detected: Nothing to be done
./01 - A Peine.mp3 -> No special characters detected: Nothing to be done
./05 - Les Autocollants.mp3 -> No special characters detected: Nothing to be done
./10 - Le Risque.mp3 -> No special characters detected: Nothing to be done
./11 - Je Danse (Version Longue).mp3 -> No special characters detected: Nothing to be done
./07 - L'envers Du Paradis.mp3 -> No special characters detected: Nothing to be done
./09 - Pas Que Ça à Faire.mp3 -> ISO-8859-15 detected: Renamed
./04 - L'amour Fou.mp3 -> No special characters detected: Nothing to be done
./03 - La Vérité.mp3 -> ISO-8859-15 detected: Renamed
Files renaming Done !

Adding folder in the DLNA server

Character encoding translation done!

Je ne peut pas vérifier pour le moment chez moi si les fichiers ont été effectivement indexés mais déjà je n'ai plus de message d'erreur.
Est-ce que je dois tenter de mettre le code "plus robuste" maintenant ou bien est-ce que cette version est suffisante ? (différence ?)

Merci encore pour ton aide, je crois que je touche au but et que je vais pouvoir profiter d'un Sabnzbd compatible avec notre langue aux caractères bizarroïdes... ;)

User avatar
LapinFou
Jr. Member
Jr. Member
Posts: 98
Joined: April 23rd, 2012, 7:35 am
Location: France, Caen

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by LapinFou »

Le code plus robuste permet de faire 2 choses:
1- Il va renvoyer les résultats de la commande synoindex
2- Il va renvoyer les erreurs en cas de problème d’exécution
contrairement à os.system qui ne fait qu'envoyer la commande Unix "en aveugle"

De plus se serait sympa aussi que tu essayes, afin de valider si j'ai bien compris le fonctionnement de la fonction Popen de la class subprocess. Car c'est la 1er fois que je l'utilise...
Synology Model: DS-916+
Firmware Version: DSM 6.2.3-25426 Update 2
HDD Model: 3xSeagate ST4000VN008 4To - SHR + 1x256Go SSD - cache

User avatar
LapinFou
Jr. Member
Jr. Member
Posts: 98
Joined: April 23rd, 2012, 7:35 am
Location: France, Caen

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by LapinFou »

Voici le code:
ligne 36/37 à modifer:

Code: Select all

# get library modules
import sys, os
devient

Code: Select all

# get library modules
import sys, os
import subprocess
Main program (fin du script)

Code: Select all

########################
# --- Main Program --- #
########################

# get argument: directory of the SABnzbd job
os.chdir(sys.argv[1])

# display directory of the SABnzbd job
currentFolder = os.getcwd()
print "Current folder is" + currentFolder

# rename SABnzbd job directory (coming from SABnzbd: never in CP437 format)
print "Renaming folders to UTF-8..."
renameFunc('', currentFolder)

# process each sub-folders starting from the deepest level
for dirname, dirnames, filenames in os.walk('.', topdown=False):
   for subdirname in dirnames:
      renameFunc(dirname, subdirname)
print "Folder renaming Done !"
print ""

# process each file recursively
print "Renaming files to UTF-8..."
for dirname, dirnames, filenames in os.walk('.'):
   for filename in filenames:
      renameFunc(dirname, filename)
print "Files renaming Done !"
print ""

# add processed folder in the Syno index database
print "Adding folder in the DLNA server"
currentFolder = os.getcwd()
synoindex_cmd = ['/usr/syno/bin/synoindex', '-A', currentFolder]
print("Running: " + str(synoindex_cmd))
try:
    p = subprocess.Popen(synoindex_cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    out, err = p.communicate()
    print("synoindex result: " + str(out))
    print("synoindex error: " + str(err))
except OSError, e:
    print("Unable to run synoindex: "+str(e))

print "Character encoding translation done!"
Merci de me tenir au courant, afin que je puisse mettre à jour mes tutos en conséquence.
Last edited by LapinFou on May 22nd, 2012, 10:49 am, edited 3 times in total.
Synology Model: DS-916+
Firmware Version: DSM 6.2.3-25426 Update 2
HDD Model: 3xSeagate ST4000VN008 4To - SHR + 1x256Go SSD - cache

starsys
Newbie
Newbie
Posts: 33
Joined: July 26th, 2011, 4:17 am

Re: Fixed foreign accents on Synology NAS running SABnzbd

Post by starsys »

J'essaye de suite

Post Reply