Synology-Forum.nl

Firmware => Synology DSM 5.1 en eerder => Topic gestart door: zakhooi op 22 januari 2015, 13:07:04

Titel: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: zakhooi op 22 januari 2015, 13:07:04
Hoi,

In navolging van mijn vorige vraag (http://www.synology-forum.nl/synology-dsm-5-1/rename-script-(maar-dan-anders-dan-al-gedaan-is)/msg144819/#msg144819) heb ik een andere vraag die er op lijkt.

Een pythonscript filenames in de current directory om draait en ze dus alszodanig renamed m.u.v. de file extentie.

Dus bijvoorbeeld.
abcdefghi.avi naar ihgfedcba,avi

Is er iemand die dit eenvoudig met python weet op te lossen of wordt het een ingewikkelde vraag?
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: Ben(V) op 22 januari 2015, 16:27:02
Code: (python) [Selecteer]
import os

CurrentDir = os.getcwd()
for File in os.listdir(CurrentDir):
    Path, OriginalFileName = os.path.split(File)
    NamePart, Ext = os.path.splitext(OriginalFileName)
    NewFileSpecs = Path +'/'+ NamePart[::-1] + Ext
    os.rename(File, NewFileSpecs)
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: zakhooi op 22 januari 2015, 20:09:06
Hmmm, dat lijkt niet te werken.
Hoewel de persmissies goed staan (777) kunnen de files niet gerenamed worden:

Traceback (most recent call last):
  File "./rename.py", line 8, in <module>
    os.rename(File, NewFileSpecs)
OSError: [Errno 13] Permission denied
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: Ben(V) op 22 januari 2015, 20:49:36
Sta je wel in de juiste directory?
vervang die os.rename regel eens door:
print FileName , " --> ", NewFileSpecs

Kun je zien wat hij probeert te doen.
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: zakhooi op 22 januari 2015, 21:10:31
De variabele 'FileName' is leeg.

Traceback (most recent call last):
  File "./rename.py", line 9, in <module>
    print FileName , " --> ", NewFileSpecs
NameError: name 'FileName' is not defined
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: Ben(V) op 22 januari 2015, 21:16:26
Sorry moet natuurlijk File zijn
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: zakhooi op 22 januari 2015, 21:19:47
Raar, met een print werkt het wel

file_level_0  -->  /0_level_elif
level_0_dir_1  -->  /1_rid_0_level
level_0_dir_2  -->  /2_rid_0_level
renall.py  -->  /llaner.py
rename.py  -->  /emaner.py

Maar met os.rename krijg ik de eerder genoemde error (permission denied)
Alle rechten staan goed op alle files (777)
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: Ben(V) op 22 januari 2015, 21:24:54
Denk niet dat je die bestanden wilt renamen.
Die rename.py wordt natuurlijk gelocked door python.

Ik zou eerst eens in de directorygaan staan waar de bestanden staan die je wilt renamen.
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: zakhooi op 22 januari 2015, 21:34:23
het werk nog steeds niet, misschien roep ik het verkeerd aan.
Wat ik doe:

Ik CD naar de directory waar de files staan die ik wil renamen.
Het rename.py script (jouw script dus) zet ik 1 niveau hoger en dan doe ik:

python ../rename.py
en vervolgens krijg ik de error:
Traceback (most recent call last):
  File "../rename.py", line 8, in <module>
    os.rename(File, NewFileSpecs)
OSError: [Errno 13] Permission denied
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: Ben(V) op 22 januari 2015, 21:42:32
volgens mij doe jedan eencd naar die directory.
probeer het gewoon eens met de hele filespecs.
Dus python /volume1/....../rename,py

Je kunt ook de eerste regel van het script veranderen in een vast path waar de te renamenbestanden staan.
Dus:

CurrentDir = "/volume1/....."
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: zakhooi op 23 januari 2015, 05:53:14
Zelfs dan hou ik hetzelfde probleem.
Ik snap niet waar die permission denied vandaan komt.
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: zakhooi op 23 januari 2015, 10:14:30
Die tests heb ik trouwens op een linuxbak gedaan.
Als ik het op de NAS tests krijg ik ook een error maar dan een iets andere melding:

Traceback (most recent call last):
  File "./reverse.py", line 9, in <module>
    os.rename(File, NewFileSpecs)
OSError: [Errno 18] Invalid cross-device link
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: Ben(V) op 23 januari 2015, 10:31:47
Was gisteren er niet helemaal bij geloof ik.
Het probleen is dat de functie os.listdir niet de volledige filespecs oplevert maar alleen de filenaam.
Hier is de code die wel moet werken.
Ik heb je regel waar de echte rename gebeurt nog even een # voor gezet zodat je eerst kunt testen.

Code: (python) [Selecteer]
Path = os.getcwd()
for File in os.listdir(Path):
    NamePart, Ext = os.path.splitext(File)
    NewFileSpecs = Path +'/'+ NamePart[::-1] + Ext
    OldFileSpecs = Path +'/'+ File + Ext
    #os.rename(OldFileSpecs, NewFileSpecs)
    print OldFileSpecs + " --> " + NewFileSpecs
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: zakhooi op 23 januari 2015, 10:43:57
Bedankt voor de aanpassing.
Echter, met de print regel gaat het goed (output geeft precies het juiste weer).
Maar met os.rename gaat het fout:

Traceback (most recent call last):
  File "../reverse.py", line 8, in <module>
    os.rename(OldFileSpecs, NewFileSpecs)
OSError: [Errno 2] No such file or directory
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: zakhooi op 23 januari 2015, 11:02:01
Ik zie het al. Er zat een fout in.
Dit werkt:

import os

Path = os.getcwd()
for File in os.listdir(Path):
    NamePart, Ext = os.path.splitext(File)
    NewFileSpecs = Path +'/'+ NamePart[::-1] + Ext
    OldFileSpecs = Path +'/'+ File
    print OldFileSpecs + " --> " + NewFileSpecs
    os.rename(OldFileSpecs, NewFileSpecs)

Old file specs stond '+ ext' te veel
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: Ben(V) op 23 januari 2015, 11:07:01
Grappig is zag het ook net maar was te langzaam met typen.
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: zakhooi op 23 januari 2015, 11:08:06
Grappig is zag het ook net maar was te langzaam met typen.

Bedankt voor je hulp, dit moet werkbaar zijn voor mij.
fenks!!
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: Ben(V) op 23 januari 2015, 11:08:51
Nog even en je bent zelf een volleerd python programmeur ;)
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: Matr1x op 23 januari 2015, 20:57:42
Ook dit draadje even met belangstelling gelezen, maar deze keer ook met verbazing. Wat voor nu heeft het @zakhooi om een bestandsnaam op die manier te hernoemen? Wat is het nut? Puur uit nieuwsgierigheid.
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: Juupke op 23 januari 2015, 21:20:17
QoQ releases van film, series? Deze hebben de filenames omgedraaid om takedowns tegen te gaan.
Titel: Re: Hulp gevraagd: pytonscript om filenames om te draaien (reverse rename).
Bericht door: Hutje op 17 maart 2016, 21:52:32
QoQ heeft inmiddels ook het beruchte reverse-principe overboord gegooid en maakt thans ook gebruik van de Rename.with.this.par2 methode.
Hier is het middels deze par2 file nog 'eenvoudig' om achter de juiste gebruikte naam te komen van het betreffende bestand.
De release groep Metamorfose doet het nog anders: geen reverse, geen rename methode.
Gewoon een massa willekeurige letters/cijfers.
In de rest van de meegeleverde bestanden bevindt zich het bestand info-mkv -.txt, waarin de juiste naam staat vermeld.