Wget cURL scheitern am HDHomeRun

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Wget cURL scheitern am HDHomeRun

Joachim Hartmann
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?
--
Gruß aus der Ex-Heimat der CeBIT
und bleibt gesund
Jochen

Reply | Threaded
Open this post in threaded view
|

Re: Wget cURL scheitern am HDHomeRun

Richard Kraut-3
-----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 ...

> <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>
> ...

... 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.

- --

MfG Richi

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEERqPC1cUAShrzNBXW+NRy+KEKcZgFAl6kg2kACgkQ+NRy+KEK
cZj6oQ/+NiuTnPmMzIC6/GpPszLOYBFNf6X+JMZTzZGdhFHE1G32bzF4hfnOeXsH
x5SZiNLRxU8ZwcNAE9wWSTMrEG/Q0JkxnRMxGYMBBaox6udyuDeyNYAAH5o6j6XN
idtEH1cekQ4sq7v5OYXZtluMg5sAzkGepSIKMPwuqJQyliiy8Vjer6XRI2+0ix2i
18ElD6HUaiEGK1zzo6OnmiciaZWksaWZonAnhHr8juqsgZWd82PSSp2eZm5GRlNw
Ns59ayhluNcy7RYEySMcuE5kXci64hDCkFC/h1L6AZ0VXPNvnzW3rzUzTZwm+GIt
s7zzdhSbZnTnZNJDrAZPHAeoCJ9ucX0nrfzXRdT32BQ0f9K3xP2vczJYy6BcJfuN
ifxHhKe8l7YLyD3tyo8+DaTG2Tx8bI63xecrDsO8s0qk761NxnJJP50exbDxwZup
akfq+sC354itJ+FXWYcrm9UHRZQWrsLdIG7jQF32sGH3c5ZJaZ3mowo6Aew0bwNR
+4dqzm7JyFv4cdHUvN7RACq0HfmyA1klOOwF2x6pILo96PcucHNbixsHDc3DYPW2
Q7exPqUVSV4MtREsikM/NmDkHhXJQ7DKKBP+T1z2RZ39ayssyb3owrVYmYPCqHVp
pDjgBZDjMpuekBGahx0xNA9HUusgsdQ98ycgPuDGE5y/y18lnTY=
=1JTy
-----END PGP SIGNATURE-----

Reply | Threaded
Open this post in threaded view
|

Re: Wget cURL scheitern am HDHomeRun

Spiro Trikaliotis-11
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.

--
Spiro R. Trikaliotis
http://spiro.trikaliotis.net/

Reply | Threaded
Open this post in threaded view
|

Re: Wget cURL scheitern am HDHomeRun

Robert Stephan

Wußt ich doch daß ich zu dem Problem irgendwo was gelesen habe.

Chrome-Browser mittels des DevTools-Protokolls fernsteuern

 

https://www.linux-magazin.de/ausgaben/2020/03/snapshot-24/

 

 


signature.asc (499 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Wget cURL scheitern am HDHomeRun

debian-mailing-lists
In reply to this post by Joachim Hartmann
Hallo Joachim,

On 25.04.20 15:54, Joachim Hartmann wrote:

> 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?

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 http://hostname/bar/img.gif.

           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

Reply | Threaded
Open this post in threaded view
|

Re: Wget cURL scheitern am HDHomeRun

Joachim Hartmann
In reply to this post by Richard Kraut-3
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

Reply | Threaded
Open this post in threaded view
|

Re: Wget cURL scheitern am HDHomeRun

Manfred Schmitt-51
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:
https://docs.scrapy.org/en/latest/topics/dynamic-content.html

Gibt aber auch noch einige andere scraping-tools die auch mit
Javascript klar kommen:
https://www.google.com/search?q=scraping+javascript

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

Reply | Threaded
Open this post in threaded view
|

Re: Wget cURL scheitern am HDHomeRun

Joachim Hartmann
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.


Reply | Threaded
Open this post in threaded view
|

Re: Wget cURL scheitern am HDHomeRun//Zusatzfrage zu wget

whyskyhigh@yahoo.de


Hallo


We can ich HP - Forum download mit wget?

IIch kann:


wget -m -E -k -p -e robots=off http://www.example.com

Aber wie geht:


http://www.forum.com/thread123.htm

Danke

Gruss







Am Sun, 26 Apr 2020 12:22:52 +0200
schrieb Joachim Hartmann <[hidden email]>:

> 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.
>
>