expertenaustausch > linux.debian.user.german

Joachim Hartmann (25.04.2020, 16:00)
Ich betreibe in meinem Netzwerk einen HDHomeRun-Tuner. Dieser stellt
unter der Adresse mytv.zuhause.xx/lineup.html eine Kanal-lListe zu
Verfügung, die ich unter Debian gerne weiterverarbeiten möchte.
Hintergrund nach jedem Scan der Kanäle ändert sich der Link zum Stream.
Lade ich die Seite mit wget oder cURL herunter wird nur der Quelltext
gespeichert

....
<body>
<div class="B C">
<a href="/"><div class="T">HDHomeRun EXPAND</div></a>
<div class="S">Channel Lineup<div id="scanProgress"><....
<div align="center" id="scanStatus"></div>
</div>
<div class="B C" style="background: #ccc">
<div class="T" id="channelBanner">Channels</div>
<table id="channelTable"></table>
</div>
<div class="hidden" id="overlay">
<embed type="video/mpeg" width="640" height="480" con...
</div>
....

Wird die Seite im Browswe geöffnet und dann mit Seite speichern in deine
Datei geschrieben, so findet man dieses:

....
<body>
<div class="B C">
<a href="http://mytv.zuhause.xx/"><div class="T">HDHo...
<div class="S">Channel Lineup<div id="scanProgress" s...
<div id="scanStatus" align="center"><button onclick="...
</div>
<div class="B C" style="background: #ccc">
<div class="T" id="channelBanner">Channels (189)</div>
<table id="channelTable">
<tr>
<td><svg width="20px" height="15px"><use xlink:href="#icon_star"f...
<td><a href="http://192.168.0.140:5004/auto/v5000">5000</a></td>
<td>SWR RP HD</td>
<td><svg width="40px" height="15px"><use xlink:href="#icon_h264"><...
<tr>
....

Leider habe ich noch keinen Weg gefunden die Seite in dieser Form zu
speichern. Das - künftige - Script soll auf einem Server ohne GUI laufen.
Einer eine Idee?
Richard Kraut (25.04.2020, 20:40)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Am Samstag, den 25.04.2020, 15:54 +0200 schrieb Joachim Hartmann:

> Ich betreibe in meinem Netzwerk einen HDHomeRun-Tuner.


[...snip...]

Ein solches Gerät besitze ich nicht - aber ...

[..]
> <td><svg width="40px" height="15px"><use xlink:href="#icon_h264"><...
> <tr>
> ...


.... für mich sieht das so aus, als ob da ein Script (PHP, JavaScript, CGI)
ausgeführt wird, welches dann die generierten Links in die Seite einbaut.

> Leider habe ich noch keinen Weg gefunden die Seite in dieser Form zu
> speichern. Das - künftige - Script soll auf einem Server ohne GUI laufen.
> Einer eine Idee?


Und da haben wir das Problem. Ich wüsste jetzt nicht, dass wget oder curl
Scripte einer Seite ausführt. Sonst hättest Du ja, was Du möchtest. Die HTML-
Datei mit den Links zu den einzelnen Streams, welche Du dann weiter
verarbeiten könntest.

- --
Spiro Trikaliotis (25.04.2020, 21:30)
Hallo,

* On Sat, Apr 25, 2020 at 08:37:35PM +0200 Richard Kraut wrote:

> ... für mich sieht das so aus, als ob da ein Script (PHP, JavaScript, CGI)
> ausgeführt wird, welches dann die generierten Links in die Seite einbaut.


Nein.

Die Browser "passen" das (relative) Ziel auf eine absolute Adresse an,
damit man auch in der lokalen Kopie auf die Links drücken kann, und die
richtige Seite aufgerufen wird. Sie korrigieren auch wirklich oder
vermeintliche Fehler auf der Seite.

Eine Kopie der Seite erhält man daher nicht, sondern nur dass, wovon die
Browser denken, dass es das sein soll.

Das tun wget und curl nicht, sie laden die Seite wirklich so herunter,
wie sie vom Server kommt.

Beste Grüße,
Spiro.
Robert Stephan (25.04.2020, 21:40)
Wußt ich doch daß ich zu dem Problem irgendwo was gelesen
habe.
Chrome-Browser mittels des DevTools-Protokolls fernsteuern

[1]

--------
[1]
debian-mailing-lists (25.04.2020, 22:20)
Hallo Joachim,

On 25.04.20 15:54, Joachim Hartmann wrote:
[..]
> Leider habe ich noch keinen Weg gefunden die Seite in dieser Form zu
> speichern. Das - künftige - Script soll auf einem Server ohne GUI laufen.
> Einer eine Idee?


Der Browser ersetzt relative Links durch absolute, das kann wget auch. Mit dem Parameter
"-k" oder "--convert-links" aktivierst Du das, der passende Auszug aus der manpage wget(1):

--cut
-k
--convert-links
After the download is complete, convert the links in the document
to make them suitable for local viewing. This affects not only the
visible hyperlinks, but any part of the document that links to
external content, such as embedded images, links to style sheets,
hyperlinks to non-HTML content, etc.

Each link will be changed in one of the two ways:

The links to files that have been downloaded by Wget will be
changed to refer to the file they point to as a relative link.

Example: if the downloaded file /foo/doc.html links to
/bar/img.gif, also downloaded, then the link in doc.html will
be modified to point to ../bar/img.gif. This kind of
transformation works reliably for arbitrary combinations of
directories.

The links to files that have not been downloaded by Wget will
be changed to include host name and absolute path of the
location they point to.

Example: if the downloaded file /foo/doc.html links to
/bar/img.gif (or to ../bar/img.gif), then the link in doc.html
will be modified to point to .

Because of this, local browsing works reliably: if a linked file
was downloaded, the link will refer to its local name; if it was
not downloaded, the link will refer to its full Internet address
rather than presenting a broken link. The fact that the former
links are converted to relative links ensures that you can move the
downloaded hierarchy to another directory.

Note that only at the end of the download can Wget know which links
have been downloaded. Because of that, the work done by -k will be
performed at the end of all the downloads.
--cut

Das sollte m.E. genau das sein, was du suchst.

hth,
Thomas
Joachim Hartmann (26.04.2020, 00:40)
Hallo Richard

Am 25.04.2020 um 20:37 schrieb Richard Kraut:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA512
> Am Samstag, den 25.04.2020, 15:54 +0200 schrieb Joachim Hartmann:
> ... für mich sieht das so aus, als ob da ein Script (PHP, JavaScript, CGI)
> ausgeführt wird, welches dann die generierten Links in die Seite einbaut.

das hast du richtig erkannt! Konkret scheint es sich um Javascript zu
handeln.

Gruß aus der Ex-Heimat der CeBIT
und bleibt gesund
Jochen
Manfred Schmitt (26.04.2020, 02:30)
Joachim Hartmann schrieb:
> Am 25.04.2020 um 20:37 schrieb Richard Kraut:
> > ... für mich sieht das so aus, als ob da ein Script (PHP, JavaScript, CGI)
> > ausgeführt wird, welches dann die generierten Links in die Seite einbaut.

> das hast du richtig erkannt! Konkret scheint es sich um Javascript zu
> handeln.

Z.B. mit scrapy (Paket python3-scrapy) duerfte man auch in der
Konsole an die Daten rankommen:


Gibt aber auch noch einige andere scraping-tools die auch mit
Javascript klar kommen:


Vielleicht reicht es aber auch das in der website eingebundene
Javascript oder eventuell auch eine JSON-Datei runterzuladen
und die Daten da raus zu holen. Am besten mal z.B. in Firefox
in der Netzwerkanalyse (Strg-Umschalt+E) schauen was beim laden
der Webseite denn so gezogen wird.

Kurz mal in google geschaut:

Channel List. The list of available channels can be queried using
the following URLs:
http://<device ip>/lineup.json
http://<device ip>/lineup.xml

Und wech,
Manne
Joachim Hartmann (26.04.2020, 12:30)
Hallo Manne,

Am 26.04.2020 um 02:10 schrieb Manfred Schmitt:
> Channel List. The list of available channels can be queried using
> the following URLs:
> http://<device ip>/lineup.json
> http://<device ip>/lineup.xml wie fast immer ein VOLLTREFFER!


#~# wget -q -O  - 192.168.0.140/lineup.json  | sed 's/},{/\n/g'

[{"GuideNumber":"5000","GuideName":"SWR RP HD","VideoCodec":"H264", //
"AudioCodec":"AC3","HD":1,"URL":"http://192.168.0.140:5004/auto/v5000"
"GuideNumber":"5001","GuideName":"Das Erste HD","VideoCodec":"H264"//
,"AudioCodec":"AC3","HD":1,"URL":"http://192.168.0.140:5004/auto/v5001"
...

Danke und bleib gesund
Jochen.
whyskyhigh (29.04.2020, 17:30)
Hallo

We can ich HP - Forum download mit wget?

IIch kann:

wget -m -E -k -p -e robots=off

Aber wie geht:



Danke

Gruss

Am Sun, 26 Apr 2020 12:22:52 +0200
schrieb Joachim Hartmann <joachim.hartmann>:
[..]
Ähnliche Themen