iforever
Goto Top

Unbekannte Zeichenkette aus txt mit Zeilenangabe auslesen

Hallo Community face-smile

Nach über 4 Stunden herum probieren habe ich es aufgegeben und muss hier um Rat bitten...

Ich möchte mittels Batch Datei den Track eines Internet-Radios aus dem Quelltext der Seite kopieren und lokal in eine Textdatei schreiben,
um mir den Titel zu einem späteren Zeitpunkt anhören zu können.
In Verbindung damit habe ich mir den wget "Befehl" besorgt.

Was ich fest sagen kann:

- Der Track steht immer in der Zeile 204 (Bsp: DJ SHOG - Stranger On This Planet)
- Die Zeile sieht immer so aus (abgesehen von der Nummer hinter "release/", daher fällt eine Stringmanipulation meiner Meinung nach flach)
<a href="/release/4074" style="color: #FFFFFF">DJ SHOG - Stranger On This Planet</a>  

Mein momentaner Quelltext sieht so aus:

@echo off
setlocal enableDelayedExpansion

:: Wenn vorheriger Quelltext vorhanden, dann löschen
IF EXIST A:\TechnoBaseTrack\index.html (DEL A:\TechnoBaseTrack\index.html)

:: Quelltext auslesen
wget -P A:\TechnoBaseTrack http://www.technobase.fm/

:: Zeile suchen
FINDSTR #FFFFFF A:\TechnoBaseTrack\index.html>=A:\TechnoBaseTrack\line.txt

:: Track extrahieren
FOR /F "delims=" %%s in (FINDSTR #FFFFFF A:\TechnoBaseTrack\line.txt) do @set track=%%s !track:*>=!  
@ECHO %track%>>A:\TechnoBaseTrack\line.txt

Alles unter ":: Track extrahieren" ist kompletter Schwachsinn, so wie ich das sehe...
Und ":: Zeile suchen" fällt denke ich weg, insofern man die Zeile direkt angeben kann. (Nach #FFFFFF wurde gesucht, da dies nur in dieser Track-Zeile verwendet wird)


Ich bin mit meinem Latein am Ende und hoffe Ihr könnt mir dabei helfen face-smile

Content-Key: 256384

Url: https://administrator.de/contentid/256384

Printed on: April 25, 2024 at 18:04 o'clock

Member: colinardo
colinardo Dec 01, 2014 updated at 21:31:23 (UTC)
Goto Top
Hallo IForever, Willkommen auf Administrator.de!
Mach's doch mit Powershell, da ist das Gedöns ein Einzeiler ohne Zusatztools face-wink
[regex]::Match((New-Object System.Net.WebClient).DownloadString("http://www.technobase.fm"),'<a href="/release/.*?" style="color: #FFFFFF">([^<]+)</a>').Groups[1].Value | out-file "A:\TechnoBaseTrack\line.txt"  
oder wenn's unbedingt Batch sein muss, direkt ohne Umweg über eine Textdatei mit curl für Windows in Batch (Die for-Schleifen-Methode kannst du aber auch auf dein HTML-File und wget anwenden)
::Codepage ändern für Umlaute im Titel
chcp 1252

:: Titel extrahieren ,verwendet 'curl'  
for /f "tokens=3 delims=^>^<" %%a in ('curl -s http://www.technobase.fm/ ^| findstr /r /c:"/release/.*"') DO @echo %%a>"A:\TechnoBaseTrack\line.txt"  

::Codepage wieder zurücksetzen
chcp 850
Grüße Uwe
Member: Endoro
Solution Endoro Dec 02, 2014, updated at Dec 03, 2014 at 16:47:39 (UTC)
Goto Top
Hey,
nach einer Zeilennummer kann auch gesucht werden:
@echo off &setlocal disabledelayedexpansion
for /f "tokens=1*delims=:" %%a in ('wget -q -O- "http://www.technobase.fm/" ^|findstr /n "^"') do if %%a==204 set "TrackRaw=%%~b"  
for /f "tokens=3delims=<>" %%a in ("%TrackRaw%") do >>"tracks.log" echo %%~a  
Gruss, Endoro
Member: IForever
IForever Dec 03, 2014 at 15:34:59 (UTC)
Goto Top
Hallo Uwe,

danke für deinen Vorschlag face-smile

Powershell schließe ich vorerst einmal aus, da ich in diesem Thema noch nie etwas gearbeitet habe.
Die Lösung mit dem curl habe ich bis jetzt nur einmal überflogen, scheint aber zu funktionieren.
Da ich mir das mit dem curl noch einmal anschauen muss wird das wohl erst morgen, bzw. Freitag Abend geschehen, ich melde mich dann noch einmal, sobald ich deinen Code getestet habe.

Gruß
Chris
Member: IForever
IForever Dec 03, 2014 updated at 16:49:37 (UTC)
Goto Top
Hallo Endoro,

auch dir ein großes Dankeschön für den Vorschlag face-smile

Auf das einfach "Copy&Paste" habe ich keine Lösung gefunden, ich gehe mal davon aus, dass ich den Code noch einmal überfliegen muss, auch das werde ich wohl erst morgen bzw. Freitag Abend schaffen.

Gruß
Chris

EDIT:

Aus mir unerklärlichen Gründen hat der Code nun doch funktioniert Oo
Vielleicht ist mir beim ersten mal Copy-Paste ein Fehler unterlaufen ....

Vielen Dank für die Lösung, Endoro! face-smile
Morgen mache ich mich daran, den Code zu verstehen ^^

Gruß
Chris