quotes bestandsnaam

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • beerten
  • Registratie: Juni 2003
  • Laatst online: 04-09 09:51
Hoi,

mijn allereerste n00b vraag inzake python.

Ik heb een lijst met bestandsnamen in een textfile welk ik wil doorlopen. Het bertreft bestandsnamen van mp3'tjes.
Die bestandsnamen bevatten quotes/slashes, van allerlei speciale tekens die je eigenlijk niet in een bestandsnaam wilt zien.
Ik wil de ID3-tag van elk mp3-tje uitlezen. Dat lukt, mits er geen speciale tekens in de bestandsnaam staan.
Hoe kan ik deze bestandsnamen gebruiken als pad en bestandsnaam bij het aanroepen van de functie?

Alle reacties


Acties:
  • 0 Henk 'm!

  • ShitHappens
  • Registratie: Juli 2008
  • Laatst online: 14-09 17:14
Waarschijnlijk (niet bekend met Python, wel met andere talen) zul je tijdens het uitlezen van de bestandsnaam uit de text file, deze tekens moeten escapen vóór je deze verder gebruikt als parameter voor andere functies.

Acties:
  • 0 Henk 'm!

  • heuveltje
  • Registratie: Februari 2000
  • Laatst online: 13:49

heuveltje

KoelkastFilosoof

beerten schreef op donderdag 8 februari 2018 @ 19:42:
Hoi,

mijn allereerste n00b vraag inzake python.

Ik heb een lijst met bestandsnamen in een textfile welk ik wil doorlopen. Het bertreft bestandsnamen van mp3'tjes.
Die bestandsnamen bevatten quotes/slashes, van allerlei speciale tekens die je eigenlijk niet in een bestandsnaam wilt zien.
Ik wil de ID3-tag van elk mp3-tje uitlezen. Dat lukt, mits er geen speciale tekens in de bestandsnaam staan.
Hoe kan ik deze bestandsnamen gebruiken als pad en bestandsnaam bij het aanroepen van de functie?
even nieuwschierig maar welk FS laat slashes in een bestandsnaam toe ?

Heuveltjes CPU geschiedenis door de jaren heen : AMD 486dx4 100, Cyrix PR166+, Intel P233MMX, Intel Celeron 366Mhz, AMD K6-450, AMD duron 600, AMD Thunderbird 1200mhz, AMD Athlon 64 x2 5600, AMD Phenom X3 720, Intel i5 4460, AMD Ryzen 5 3600 5800x3d


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
@heuveltje iedereen (behalve windows)

Vooral leuk als je OSX of Linux gebruikt en bestanden op een shared disk zet met speciale tekens.
Koppel die share aan Windows en je kan je lol op

[ Voor 65% gewijzigd door DJMaze op 08-02-2018 20:26 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
beerten schreef op donderdag 8 februari 2018 @ 19:42:
Die bestandsnamen bevatten quotes/slashes, van allerlei speciale tekens die je eigenlijk niet in een bestandsnaam wilt zien.
Ik wil de ID3-tag van elk mp3-tje uitlezen. Dat lukt, mits er geen speciale tekens in de bestandsnaam staan.
Hoe kan ik deze bestandsnamen gebruiken als pad en bestandsnaam bij het aanroepen van de functie?
Kan je een voorbeeld geven van de bestandsnamen (zowel hoe ze in het bestand staan als hoe ze op de schijf staan) die niet willen lukken?

Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 14:42

DukeBox

loves wheat smoothies

heuveltje schreef op donderdag 8 februari 2018 @ 19:49:
even nieuwschierig maar welk FS laat slashes in een bestandsnaam toe ?
jfs mogelijk anderen ook.. erg leuk om je collega's gek mee te krijgen.

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Kun je wat relevante code laten zien?

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • beerten
  • Registratie: Juni 2003
  • Laatst online: 04-09 09:51
Met onderstaand stukkie code haal ik recursief de bestandsnamen op. Scriptje staat in de map waar ook alle dirs en subdirs met mp3's in staan. Het schrijft het resultaat naar een txt bestand.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import os
 
# The top argument for walk
topdir = '.'
# The extension to search for
exten = '.mp3'
logname = 'findfiletype.log'
# What will be logged
results = str()
 
for dirpath, dirnames, files in os.walk(topdir):
    for name in files:
        if name.lower().endswith(exten):
            # Save to results string instead of printing
            results += '%s\n' % os.path.join(dirpath, name)
 
# Write results to logfile
with open(logname, 'w') as logfile:
    logfile.write(results)


Alle bestandsnamen worden in een bestand gezet. Enkele voorbeelden hieronder.
./U2/Achtung Baby/U2-Achtung Baby-09-Tryin' to Throw Your Arms Around the World.mp3
./U2/Achtung Baby/U2-Achtung Baby-10-Ultra Violet (Light My Way).mp3
./Blof/Helder/Bløf-Helder-04-Liefs Uit Londen.mp3

De volgende stap is nu kijken of ik de ID3-tag van de mp3's uit kan lezen. In een terminal (Ubuntu) lukt dat met $ eyeD3 bells.mp3
Een mp3 zonder speciale tekens. Met speciale tekens krijg ik een foutmelding, begrijpelijk. Nu heb ik in het verlenden veel php code getikt. De truuk zal zijn om de url te encoden/prepareren. Maar hoe?

Acties:
  • 0 Henk 'm!

  • Puch-Maxi
  • Registratie: December 2003
  • Laatst online: 14-09 17:07
Wat probeer je uiteindelijk te bereiken? Voor aanpassen en lezen ID3-tags kun je evt https://mutagen.readthedocs.io/en/latest/ gebruiken.

My favorite programming language is solder.


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
beerten schreef op donderdag 8 februari 2018 @ 23:33:
Met speciale tekens krijg ik een foutmelding, begrijpelijk. Nu heb ik in het verlenden veel php code getikt. De truuk zal zijn om de url te encoden/prepareren. Maar hoe?
Aanhalingstekens: "bestand/naam'met-\\\"speciale$tekens"
Vergeet dit niet: DJMaze in "quotes bestandsnaam"

[ Voor 10% gewijzigd door DJMaze op 09-02-2018 02:15 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • beerten
  • Registratie: Juni 2003
  • Laatst online: 04-09 09:51
Puch-Maxi schreef op vrijdag 9 februari 2018 @ 00:01:
Wat probeer je uiteindelijk te bereiken? Voor aanpassen en lezen ID3-tags kun je evt https://mutagen.readthedocs.io/en/latest/ gebruiken.
Wat ik uiteindelijk probeer te bereiken is:
Voor een mycroft.ai een voice-controle MP3 player maken :)
Idee is om mijn MP3 collectie te 'analyseren' door bestandsnaam, pad en bovenal id3 tags te gebruiken voor classificatie. Moet ik eerst alle bestandsnamen ophalen. Die data in waarschijnlijk een database. (Daar komen nog vragen over... >:) )
Op basis van stemcommando (trefwoorden) query's samenstellen en zo het meest relevante/de meest relevante mp3's op te halen en af te spelen.

Ik heb nog nooit met python gewerkt. Wel heel veel (procedurele) code met PHP geschreven.
Ik begin gewoon ergens en dit is projectie nummer 1 :)

Acties:
  • 0 Henk 'm!

  • beerten
  • Registratie: Juni 2003
  • Laatst online: 04-09 09:51
Puch-Maxi schreef op vrijdag 9 februari 2018 @ 00:01:
Wat probeer je uiteindelijk te bereiken? Voor aanpassen en lezen ID3-tags kun je evt https://mutagen.readthedocs.io/en/latest/ gebruiken.
Thnx! Deze had ik nog niet gevonden, erg uitgebreid zo te zien.
Als ik de bestandsnaam tussen dubbele quotes zet heb ik geen last meer van quotes, spaties en soortgelijke tekens.

Nu blijft het probeel met bijvoorbeeld mijn soortgenoten uit de achterhoek: ./Normaal_HØken.mp3
of onze zeeuwse vrienden van BLØF ./Blof/Blauwe Ruis/BlÞf-Blauwe Ruis-05-Vrij.mp3
(Dit is hoe ik de bestandsnamen in mijn textfile zie)

Zeg ik het goed dat dit niet eens zo zeer een probleem is met speciale tekens, maar dat ik het in de hoek van encoding moet zoeken? En dat dit al begint bij het met de juiste encoding ophalen van de bestandsnamen?

[ Voor 3% gewijzigd door beerten op 09-02-2018 09:14 ]


Acties:
  • 0 Henk 'm!

  • Puch-Maxi
  • Registratie: December 2003
  • Laatst online: 14-09 17:07
Ja dat denk ik ook, afwijkende encoding. Ik zou dat proberen te normaliseren, alles naar UTF-8 oid.
Over die database: http://beets.io/ (ook Python)

My favorite programming language is solder.


Acties:
  • 0 Henk 'm!

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 14:42

The Eagle

I wear my sunglasses at night

Quick en dirty: Maak een lijstje met speciale karakters. Loop door de bestandsnamen heen en sloop die er uit. En dan pas de ID3 tags aanmaken.
Umlaut's kun je laten zitten, daar heb je volgens mij geen last van, ook niet in bestandsnamen. Het zijn met name de quotes, percentage, uitroeptekens koppeltekens etc.

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)

Pagina: 1