none
Website nach MP4 Link absuchen Excel VBA RRS feed

  • Frage

  • Hi Zusammen,

    ich versuche aus der folgenden Website den link für die MP4 Datei zu bekommen. Schaffe bis jetzt nur die Beschreibung oben drüber auszulesen. >>> Excel VBA


    http://www.4players.de/4players.php/tvplayer/4PlayersTV/Alle/4312/133758/AMD/Radeon_VII_Worlds_First_7nm_Gaming_GPU.html

    Hier ist ein Screenshot dazu.

    https://share-your-photo.com/e62e9e98cf

    Habe versucht mit getelementsbyclass und byname und byID aber schaffe es nicht an den link zu kommen.

    der Richtige link den ich bräuchte wäre in dem Bild:

    https://video.4players.de/v1/2019/01/AMD_Radeon_TM_VII_World_s_First_7nm_Gaming_GPU-19-portal.mp4

    Danke für eure Hilfe

    Da ich in andern Foren noch keine Antwort erhalten habe, bzw. mein Problem noch offen ist versuche ich es hier.

    Hatte früher URL Snooper genutzt, dies geht aber seit 31.12 nicht mehr.

    Mfg

    Silent
    Mittwoch, 13. Februar 2019 18:21

Alle Antworten

  • Hi,

    die Information, die Du suchst, steht nicht in der Datei selbst, sondern in einer XML Datei, die in einem Script Tag (var jwplayerConfig = ...) verlinkt ist.

      http://www.4players.de/4players.php/tvplayer_playlist_formats/4PlayersTV/Alle/4312/133758/AMD/Radeon_VII_Worlds_First_7nm_Gaming_GPU.xml

    Du müsstest also diesen Part suchen, im Attribut "playlist" der jwplayerConfig den Pfad der XML Datei auslesen, diese dann laden und den gewünschten Pfad zum Video aus der XML Struktur holen.

    Am "einfachsten" erscheint mir hier noch Regex, ich weiß allerdings nicht, ob das auch in VBA verfügbar ist.

    So oder so: Je nach Verwendungszweck solltest Du den Anbieter vorher um Erlaubnis fragen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Donnerstag, 14. Februar 2019 14:57
    Moderator
  • Hi,

    geht nur drum die Videos zu laden damit ich sie von Festplatte gucken kann, weil mein Internet hier am Dorf net das schnellste is und es sonst nur ruckelt und nicht möglich ist ein Video ordentlich zu gucken, und vorallem hat mein Sony TV kein LAN Anschluss, ich schaue sie per HDMI so auf dem TV.

    Hmm wie sieht so nen Marco dann aus? Und wie kann ich dann die XML Datei laden um daraus den Link zu holen? Hatte mir ein Marco zusammen gebastelt was das hier geladen hat:

    <div class="jw-aspect jw-reset"></div><div class="jw-media jw-reset"><video tabindex="-1" class="jw-video jw-reset" id="fubggcVIEm" disableRemotePlayback="" webkit-playsinline="" playsinline=""></video></div><div class="jw-preview jw-reset"></div><div class="jw-captions jw-reset" style="font-size: 31px;"><div class="jw-captions-window jw-reset"><span class="jw-captions-text jw-reset"></span></div></div><div class="jw-title jw-reset"><div class="jw-title-primary jw-reset">AMD: Radeon VII: World's First 7nm Gaming GPU</div><div class="jw-title-secondary jw-reset">Die Grafikkarte AMD Radeon VII bietet den weltweit ersten Grafikverarbeitungsprozessor (GPU), der im 7nm-Verfahren hergestellt wurde. Die 60 Compute Units und 3.840 Stream-Prozessoren arbeiten mit bis zu 1,8 GHz. Der US-Preis soll 699 Dollar betragen. Drei Spiele sollen im Bundle mit der Grafikkarte enthalten sein: Resident Evil 2 (Remake), Devil May Cry 5 und The Division 2.</div></div><div class="jw-overlays jw-reset"></div><div class="afs_ads" style="background: none; width: 1px; height: 1px; ;">&nbsp;</div>

    Ich probiere nebenbei ein bisschen.

    Danke & Gruß

    Silent

    Donnerstag, 14. Februar 2019 16:47
  • Hi,

    ok erstes Problem von hinten anfangend gelöst, wenn ich die xml Datei habe, dann hol ich mir so den mp4 Link:

    So nun muss ich nur noch versuchen an die XML Datei dran zu kommen.

    Sub MP4LinkLaden4Players()
    Dim xml    As Object
    Dim Regex As Object
    Dim RegexMatch As MatchCollection
    Dim result As String
    Set xml = CreateObject("MSXML2.XMLHTTP.6.0")
    Set Regex = CreateObject("vbscript.regexp")
    With xml
    .Open "GET", "http://www.4players.de/4players.php/tvplayer_playlist_formats/4PlayersTV/Alle/4312/133758/AMD/Radeon_VII_Worlds_First_7nm_Gaming_GPU.xml", False
    .send
    End With
    result = xml.responseText
     
     Tabelle4.Range("K4").Value = result
     
     
    ' >>>noch umbauen für genauen Link
    '    With Regex
    '        .MultiLine = True
    '        .IgnoreCase = True
    '        .Global = False
    '        .Pattern = "jwplayer:source file[^(]*?\(([0-9]*)"
    '    If .Test(result) Then
    '        Set RegexMatch = .Execute(result)
    '        Range("K4").Value = RegexMatch(0).SubMatches(0)
    '    End If
    '     End With
         
    End Sub

    Danke & Gruß

    Silent

    Donnerstag, 14. Februar 2019 17:22
  • Hi,

    uff ich glaub das is der schwere Teil, wie komm ich denn an den Link zu der XML Datei ran?

    Danke & Gruß

    Silent

    Donnerstag, 14. Februar 2019 17:59
  • Hi,

    da sich die Inhalte auch jederzeit ändern können, würde ich evtl. erst mal dein einfachen Weg gehen und den Pfad zur XML aus dem Pfad zur HTML Datei, die Du gerade aufrufst, ermitteln. Der folgt (derzeit) einem Schema.

    http://www.4players.de/4players.php/tvplayer/                 4PlayersTV/Alle/4312/133758/AMD/Radeon_VII_Worlds_First_7nm_Gaming_GPU.html
    http://www.4players.de/4players.php/tvplayer_playlist_formats/4PlayersTV/Alle/4312/133758/AMD/Radeon_VII_Worlds_First_7nm_Gaming_GPU.xml
    
    http://www.4players.de/4players.php/tvplayer/                 4PlayersTV/Alle/39740/134221/Assassins_Creed_Odyssey/Monthly_Update_Februar_2019.html
    http://www.4players.de/4players.php/tvplayer_playlist_formats/4PlayersTV/Alle/39740/134221/Assassins_Creed_Odyssey/Monthly_Update_Februar_2019.xml

    Nimm also den aktuellen URL, den Du ausliest, ersetze "/tvplayer/" mit "/tvplayer_playlist_formats/" und ".html" durch ".xml".

     



    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport


    Freitag, 15. Februar 2019 08:24
    Moderator
  • Hi,

    hehe genau so hab ich es au gestern Abend noch gemacht.

    Ich lasse einfach die Links auslesen und suche das Wort "Alle" und somit komme ich an die HTML und ersetze es durch den andern Teil und baue hinten xml dran und so würde es gehen.

    Und wie würde der Weg aussehen um es aus dem Code auslesen zu lassen?

    Möchte da gerne was dazulernen.

    Danke & Gruß

    Silent

    Freitag, 15. Februar 2019 16:47
  • Hi,

    entweder suchst Du mittels InStr die Vorkommen passender Inhalte, bspw.

    playlist: '

    von dort an das nächste:

    '

    und schneidest dann bspw. mittels Mid( ... ) den URL zur XML Datei aus oder Du arbeitest nochmal mit Regex und suchst eben nach playlist: '...' (... musst Du natürlich entsprechend ersetzen, damit Du den Inhalt zwischen '...' zurückbekommst.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Freitag, 15. Februar 2019 17:04
    Moderator
  • Hi,

    wenn ich den Quelltext per Macro lade ohne die Seite zu öffnen und den Player zu starten, dann fehlt da der Bereich wo ich die XML finden kann?

    Kann es hier nicht posten, sind zu viele Zeichen mehr als 60000.

    Den Bereich brauch ich ja, aber wie gesagt wenn ich per Macro lade, fehlt das komplett.

    jwplayer.key="PRABzjH2g87RovRJxc8pxk/bEi4ukV25/EiaoA==";
    
    var jwplayerConfig = {
        base: "http://static4.fore.4pcdn.de/sourcen/portal/4players/tv/jw842/",
        width: 1060,
        height: 616,
        autostart: true,
        primary:'html5',
        startparam: "start",
        playlist: 'http://www.4players.de/4players.php/tvplayer_playlist_formats/4PlayersTV/Alle/40436/134213/Disney_Tsum_Tsum_Festival/Reveal_Trailer.xml',
        abouttext: 'Mehr Videos zu Disney Tsum Tsum Festival auf 4PlayersTV',
        aboutlink: 'http://www.4players.de/4players.php/spielvideos/4PlayersTV/40436/Disney_Tsum_Tsum_Festival.html',
        skin: {
                    name: "seven2",
                    active: "#F58C48",
                    inactive: "white",
                    background: "black"
                },
        related: {
            file: "/4players.php/tvplayer_playlist_relatedvideos/related/MEDIAID/related.xml?maxItems=12",
                 onclick: "play",
                dimensions: "300x168",
            heading: "Weitere interessante Videos von 4Players",
                 oncomplete: 'autoplay',
            autoplaytimer: 6,
            autoplaymessage: 'Nächstes Video "__title__" startet in xx Sekunden'
            },

    Wie schaffe ich das an den "großen" Quelltext dran zu kommen? Ohne das ich die Seite aufrufen muss und das Video starten muss? Das mit Regex das bekomm ich hin, hab es für die XML Datei schon fertig. Um nur zwischen den gesuchten Wörtern das auszulesen.

    Danke & Gruß

    Silent

    <meta charset="" windows-1252""="" /><title>Video "Reveal Trailer" zu Disney Tsum Tsum Festival für Nintendo Switch - 4Players.de</title><meta content="" disney="" festival,video,reveal="" keywords""="" name="" trailer""="" tsum="" /><meta content="" description""="" die="" diesem="" disney-figuren="" erscheinen.""="" exklusiv="" für="" in="" jahr="" minispiel-sammlung="" mit="" name="" noch="" soll="" switch="" /><meta content="" index,follow""="" name="" robots""="" /><meta content="" google-site-verification""="" n4txrqiiunq_ygb29qernlkvv0o7xjudawb5wwa7xro""="" name="" /><meta app-id="539982777""/" apple-itunes-app""="" content="" name="" /><link apple-touch-icon""="" apple-touch-icon-precomposed.png""="" href="" rel="" /><meta age="18" age-de-meta-label""="" age-issuer="usk""" content="" info="www.4players.de/age-de.xml" kind="sl" name="" protocol="all" v="1.0" /><meta 295863441907""="" content="" fb:pages""="" property="" /><meta 171519236233353""="" content="" fb:app_id""="" property="" /><meta 134213="" 40436="" 4players.php="" 4playerstv="" alle="" content="" disney_tsum_tsum_festival="" http:="" og:url""="" property="" reveal_trailer.html""="" tvplayer="" www.4players.de="" /><meta "reveal="" -="" 4players.de""="" content="" disney="" festival="" für="" nintendo="" og:title""="" property="" switch="" trailer"="" tsum="" video="" zu="" /><meta 4players""="" content="" og:site_name""="" property="" /><meta 134213-screenshot.jpg""="" 32="" 54="" content="" http:="" og:image""="" premium="" property="" static3.fore.4pcdn.de="" streaming="" /><meta content="" og:type""="" property="" website""="" /><meta content="" die="" diesem="" disney-figuren="" erscheinen.""="" exklusiv="" für="" in="" jahr="" minispiel-sammlung="" mit="" noch="" og:description""="" property="" soll="" switch="" /><meta content="" games""="" property="" video:tag""="" /><meta content="" property="" spiele""="" video:tag""="" /><link 134213="" 40436="" 4players.php="" 4playerstv="" alle="" canonical""="" disney_tsum_tsum_festival="" href="" http:="" rel="" reveal_trailer.html""="" tvplayer="" www.4players.de="" /><link favicon.ico""="" href="" http:="" icon""="" rel="" shortcut="" static6.fore.4pcdn.de="" /><link -="" 4players.de="" allgemein="" alternate""="" application="" feeds.4players.de="" href="" http:="" news="" news""="" rel="" rss+xml""="" rss.xml""="" title="" type="" /><link -="" 4players.de="" allgemein="" alternate""="" application="" articles="" berichte""="" feeds.4players.de="" href="" http:="" rel="" rss+xml""="" rss.xml""="" title="" type="" /><link -="" 4players.de="" allgemein="" alternate""="" application="" feeds.4players.de="" href="" http:="" rel="" rss+xml""="" rss.xml""="" title="" type="" videos="" videos""="" /><link -="" 4players.de="" allgemein="" alternate""="" application="" downloads="" downloads""="" feeds.4players.de="" href="" http:="" rel="" rss+xml""="" rss.xml""="" title="" type="" /><link -="" 40436="" 4players.de="" alternate""="" application="" disney="" feeds.4players.de="" festival="" game="" href="" http:="" news""="" rel="" rss+xml""="" rss.xml""="" title="" tsum="" type="" /><link href="" javascript="" jquery-ui="" jquery-ui-redmond.css""="" libs="" rel="" sourcen="" static.4players.de="" stylesheet""="" /><link css="" href="" http:="" redesign2011.css?v156""="" rel="" stylesheet""="" www.4players.de="" /><style css""="" text="" type="">#tv-mediaplayer { clear: both; width: 1060px; height: 596px; margin-bottom: 18px; background: #000; } #video-thumbnail { margin-left: auto; margin-right: auto; display: block; } #jugendschutz_layer { clear: both; width: 1060px; height: 623px; margin-bottom: 18px; background: #000; } #tv-stats { float: left; width: 750px; margin-bottom: 18px; margin-top: 18px; } #tv-stats .left { margin-right: 12px; } #starTable { width: 72px; height: 15px; background- right; } #starTable { float: left; cursor: pointer; } #starTable div { float: left; width: 14px; height: 15px; } #embed { float: left; } #embed-code { width: 200px; margin: -4px 0; } #jugendschutz_layer { z-index: 999; } #jugendschutz_layer img { display: block; ; left: 400px; top: 150px; } #jugendschutz_layer .panel { left: 300px; top: 150px; } #vi-header{ margin-bottom: 15px; padding-bottom: 0; } #timer { ; bottom: 0; right: 0; padding: 10px; } .tvplayer-description { line-height: 1.3; } .tv-aktuell-download { ; bottom: 5px; right: 5px; padding: 5px 10px; color: white; font-weight: bold; background: #004A6D; /* text-transform: uppercase; */ font-size: 14px; } .podcast-download-image { width: 20px; height: 20px; background-image: url(http://static1.fore.4pcdn.de/sourcen/portal/4players/icons.png); background-position: -780px -169px; display: inline-block; margin: -5px 10px -5px -5px; } .fb-like-iframe{ border:none; overflow:hidden; width:120px; height:21px; } .facebook-likebutton { width:120px; height:21px; .social-button { width: 100% height: 100%; display: inline-block; cursor: pointer; } } .social-counter { font-family: ""Open Sans"", Arial, snas-serif; color: white; line-height: 23px; vertical-align: bottom; float: right; margin-right: 5px; display: inline-block; font-size: 13px; } .social-image { min-width: 24px; max-width: 24px; min-height: 24px; max-height: 24px; margin: 0; margin-bottom: -1px; background: transparent; float: left; display: inline-block; } .social-facebook { background-color: #3b5998; margin: 0px; margin-right: 1px; width: 70px; float: left; display: inline-block; cursor: pointer; } .social-facebook .social-image { background-image: url(http://static1.fore.4pcdn.de/sourcen/portal/4players/icons.png); background-position: -99px -128px; } .social-twitter { background-color: #2caae1; margin: 0px; margin-right: 1px; width: 70px; float: left; display: inline-block; cursor: pointer; } .social-twitter .social-image { background-image: url(http://static1.fore.4pcdn.de/sourcen/portal/4players/icons.png); background-position: -150px -128px; } .social-gplus { background-color: #da503b; margin: 0px; width: 70px; margin-right: 1px; float: left; display: inline-block; cursor: pointer; } .social-gplus .social-image { background-image: url(http://static1.fore.4pcdn.de/sourcen/portal/4players/icons.png); background-position: -125px -128px; } .social-pur { /*background-color: #090; width: 70px; cursor: pointer;*/ margin: 0px; display: inline-block; float: left; } .social-pur .social-image { min-width: 0px; } #bericht-social div a .social-image, .bericht-social div a .social-image { float: left; } .fb-like-iframe{ border:none; overflow:hidden; width:120px; height:21px; } .facebook-likebutton { width:120px; height:21px; .social-button { width: 100% height: 100%; display: inline-block; cursor: pointer; } } .social-counter { font-family: ""Open Sans"", Arial, snas-serif; color: white; line-height: 23px; vertical-align: bottom; float: right; margin-right: 5px; display: inline-block; font-size: 13px; } .social-image { min-width: 24px; max-width: 24px; min-height: 24px; max-height: 24px; margin: 0; margin-bottom: -1px; background: transparent; float: left; display: inline-block; } .social-facebook { background-color: #3b5998; margin: 0px; margin-right: 1px; width: 70px; float: left; display: inline-block; cursor: pointer; } .social-facebook .social-image { background-image: url(http://static1.fore.4pcdn.de/sourcen/portal/4players/icons.png); background-position: -99px -128px; } .social-twitter { background-color: #2caae1; margin: 0px; margin-right: 1px; width: 70px; float: left; display: inline-block; cursor: pointer; } .social-twitter .social-image { background-image: url(http://static1.fore.4pcdn.de/sourcen/portal/4players/icons.png); background-position: -150px -128px; } .social-gplus { background-color: #da503b; margin: 0px; width: 70px; margin-right: 1px; float: left; display: inline-block; cursor: pointer; } .social-gplus .social-image { background-image: url(http://static1.fore.4pcdn.de/sourcen/portal/4players/icons.png); background-position: -125px -128px; } .social-pur { /*background-color: #090; width: 70px; cursor: pointer;*/ margin: 0px; display: inline-block; float: left; } .social-pur .social-image { min-width: 0px; } #bericht-social div a .social-image, .bericht-social div a .social-image { float: left; } .tv-aktuell { width: 698px; margin-bottom: 25px; } .tv-weitere-datepicker { ; top: 0; right: 20px; } #NewsCalendar { ; top: 30px; right: -12px; z-index: 100; -moz-box-shadow: 0px 2px 3px #0f0f0f; -webkit-box-shadow: 0px 2px 3px #0f0f0f; box-shadow: 0px 2px 3px #0f0f0f; width: 303px; min-height: 192px; background: #fff; } .liste-re-footer { clear: both; margin-right: 20px; } li.fehler { width: 100%; margin: 20px auto; } .tv-aktuell-liste li { list-style: none; } .tv-aktuell-box .spielname { font-size: 18px; margin-bottom: 4px; } .tv-aktuell-box { min-height: 150px; } .tv-aktuell-box .systeme { margin: 4px 0 0 10px; } .tv-aktuell-box .icon-system { float: left; margin-right: 2px; } .tv-aktuell-box .einleitung { margin: 0; } .tv-aktuell-views { ; top: 128px; left: 0; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: bold; } .tv-aktuell-rating { ; top: 124px; left: 100px; width: 72px; height: 15px; margin: 2px 4px 0 0; } .index-system article, .index-system-hauptthema { width: 692px; } .tv-aktuell-box .einleitung { width: 514px; float: right; } .tv-aktuell-datum { ; top: 0; right: 0; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: bold; } .jw-related-heading-text{ white-space: normal!important; font-size: 1.25em!important; height: 100%!important; } .jw-plugin-related .jw-related-header { height: 15%!important; } </style><link 4players="" contextmenu.css""="" css""="" href="" http:="" javascript="" rel="" stylesheet""="" text="" type="" www.4players.de="" />

    <script>document.domain = '4players.de'; </script>

    <script>var cX = window.cX || {}; cX.callQueue = cX.callQueue || []; var kvcxsegments = null; if(document.cookie.indexOf(""ade_segments"") !== -1) { kvcxsegments = document.cookie.replace(/(?:(?:^|.*;\s*)ade_segments\s*\=\s*([^;]*).*$)|^.*$/, ""$1"").replace(/,/g,"":""); console.log(""current kvcxsegments: "" + kvcxsegments); if(typeof kvcxsegments !== ""undefined"" && typeof SDG !== ""undefined"" && kvcxsegments != null) { SDG.Publisher.addKeyValue(""kvcxsegments"", kvcxsegments); } } cX.callQueue.push([""invoke"", function() { if (document.cookie.indexOf(""throttle_segment"") === -1 || document.cookie.indexOf(""ade_segments"") === -1) { cX.getUserSegmentIds({""persistedQueryId"":""fc3abe261f02c0f548147da23b3675b2640ae212"", callback: function(segments) { if (segments && segments.length > 0 ) { kvcxsegments = segments.toString().replace(/,/g,"":""); console.log(""refreshed kvcxsegments: "" + kvcxsegments); if(typeof kvcxsegments !== ""undefined"" && typeof SDG !== ""undefined"" && kvcxsegments != null) { SDG.Publisher.addKeyValue(""kvcxsegments"", kvcxsegments); } document.cookie=(""throttle_segment=1; max-Age=120; Path=/""); document.cookie=(""ade_segments="" + segments + ""; max-Age=600; Path=/""); } }}); } }]); </script>

    Samstag, 16. Februar 2019 16:22
  • Hi,

    da hier keiner weiß, was Du da auf welchem Weg lädst, kann dir auch keiner sagen, was Du falsch machst.

    Hier mal ein kleines VBA Skript, das den Quelltext einer Seite komplett ausliest und ausgibt.

    Private Sub <IrgendeinEventHandler>
    
    Dim Result Result = GetContent( "http://www.4players.de/4players.php/tvplayer/4PlayersTV/Alle/4312/133758/AMD/Radeon_VII_Worlds_First_7nm_Gaming_GPU.html" ) ...

    End Sub
    Public Function GetContent( ByVal Url ) Dim objHTTP Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") objHTTP.SetTimeouts 2000, 2000, 2000, 2000 objHTTP.open "GET", Url, False objHTTP.send GetContent = objHTTP.ResponseText Set objHTTP = Nothing End Function

    Du rufst in einem Eventhandler deiner Wahl dann nur die GetContent Methode auf, verarbeitest die Rückgabe dieser Methode und bist eigentlich schon fertig.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport



    Samstag, 16. Februar 2019 18:35
    Moderator
  • Hi,

    das klappt irgendwie nicht. Mein Marco läd genau das gleiche. Wie schaffst du es das der ganze Quelltext geladen wird? Ich bekomme wieder nur einen Teil davon, wo der Link zu der xml Datei nicht dabei ist?

    Kann das sein das der Quelltext sich ändert, sobald man den Player startet?

    Danke & Gruß

    XD

    Sonntag, 24. Februar 2019 20:49
  • Hi, 

    hab gerade rausgefunden:

    mit diesem Link geht es nicht alles zu laden:

    http://www.4players.de/4players.php/tvplayer/4PlayersTV/Alle/4312/133758/AMD/Radeon_VII_Worlds_First_7nm_Gaming_GPU.html

    http://www.4players.de/4players.php/tvplayer_embed/4PlayersTV/Alle/4312/133758/AMD/Radeon_VII_Worlds_First_7nm_Gaming_GPU.html

    mit diesem schon:

    Warum ist das so? 

    Danke & Gruß

    Silent

    Sonntag, 24. Februar 2019 21:11
  • Hi,
    es ist davon auszugehen, dass der Anbieter der WebSite mittels JavaScript Teile nachlädt, wenn z.B. Aktivitäten wie Start des Players ausgeführt werden. Allein aus einer statischen Betrachtung des html wirst Du deshalb nicht den endgültigen Link extrahieren können.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    Montag, 25. Februar 2019 04:47
  • Hi,

    ich weiß zwar nicht um welche Videos es dir geht, aber da es dir offensichtlich NICHT um Softwareentwicklung und/oder Programmierung geht, nimm doch einfach jDownloader. Der findet heute früh 96 Videos (ca. 15GB)!

    Aber wie schon von Stefan Falz gesagt, den Anbieter solltest du schon um Erlaubnis fragen... Ich sehe das eher ..."kritisch"...

    Gruß


    Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP

    Montag, 25. Februar 2019 09:29
  • Hi,

    es geht um Trailer zu Computer Spielen, was man ja selber sehen kann, wenn man die Seite sich anschaut. Und da es um eine private Nutzung geht, ich die Videos download, weil wir hier auf dem Land nicht das schnellste Internet haben und sie gerne ruckelfrei auf dem Fernseher sehen mag,wird es wohl nur mit einem vorherigen Download gehen. Also da diese Seite ebenfalls kostenlos ist und für jeden abrufbar, gibt es wohl hier keine "kritischen" Bedenken, wie ich finde. Hätte man oben auch lesen können, wenn man von Anfang an gelesen hätte. Ebenfalls habe ich ein Abo bei 4Players wo ich jeden Monat Geld bezahle um die Videos ohne Werbung zu sehen. 

    Ich habe es bis zum 31.12 mit URL Snooper gemacht, was nun nicht mehr geht. Habe 10 andere Tools getestet, wovon kein einziges ging! Also bleibt mir keine andere Wahl. So nun habe ich in Excel VBA mir ein paar Marcos zusammen gebastelt was schon funktioniert. Mir geht es nur drum wie ich direkt an die xml Datei dran komme, im Moment generiere ich sie einfach aus dem html Link weil ich die Struktur erkannt habe. 

    Danke & Gruß

    Silent

    Montag, 25. Februar 2019 13:51
  • Hi,

    bei mir funktioniert das auch mit dem ersten URL exakt mit dem geposteten Code in einem Excel VBA Makro.

    Daher kann ich dir nicht sagen, warum das so ist.

    Prüf mal mittels Fiddler, ob beim Abruf der beiden URLs aus deinem Makro unterschiedliche Rückgaben kommen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Montag, 25. Februar 2019 14:15
    Moderator
  • Hi,

    wie soll ich das mit dem Tool machen? Loggt das die Anfragen an die Seite? Andere haben das gleiche Problem, hatte die Frage ja in einem andern Forum vorher gestellt und keine Antwort bekommen die mir geholfen hatte.

    hier mal der Text:

    Also eine XML Datei habe ich da nicht ausmachen können, in der der Link drinsteht. Vielmehr baut die Seite mindestens im Bereich des Players ihren Quellcode um, sobald man etwas macht. Die Lösung ist etwas unorthodox, aber bei mir funktioniert sie bei jedem Aufruf. Ich rufe den Player nochmal in einer eigenen Seite auf. Meine Ausgangsidee war, dass dort im Quelltext dann vielleicht der MP4-Link drinsteht. Das ist aber nicht so. Ich gehe aber trotzdem weiter über die Playerseite, weil dort das Video nicht direkt abgespielt wird und deshalb kein Werbefilm geladen wird. Ob das nun auch in der Ausgangsseite funktionieren würde habe ich nicht ausprobiert.

    Ich habe es nicht geschafft eines der ganzen Player-Events auszulösen. Deshalb geht meine Lösung nur mit Sendkeys. Daher muss der IE sichtbar aufgerufen werden (sonst funktioniert Sendkeay nicht) und Du musst die Finger vom PC lassen, solange das Makro läuft bzw. der IE noch offen ist. Sendkeys haut alles an das Programm raus, das grade den Fokus hat.

    Bitte lies Dir den Quelltext genau durch. Ich habe ihn gut kommentiert. Die Debug.Print Zeilen sind nur zur Veranschaulichung drin, was ja klar sein sollte. Wie man das Video dann mit der API Funktion URLDownloadToFile auf die Festplatte zieht weißt Du nehme ich an.

    Achja, der IE braucht etwas, bis er wieder zu geht. Warum weiß ich nicht, aber er geht von allein zu.

    Eventuell musst Du mit den Application.Wait Zeiten etwas rumspielen. Bei mir reichen jeweils die 2 Sekunden. Falls kein Link kommt, bzw. der Video-Tag zweimal gleich aussieht, erhöhe die zweite Wartezeit um ein paar Sekunden. Wenn gar kein Video-Tag gefunden wird, musst Du die erste Zeit erhöhen.

    Hier ist der VBA-Code:
    Option Explicit
    
    Sub MP4URLvon4PlayersHolen()
    
    'Für den Internetzugriff
    Dim browser As Object
    Dim url As String
    Dim urlHilfA As String
    Dim urlHilfB As String
    Dim knotenStamm As Object
    Dim knotenAst As Object
    Dim embedAttrib As String
    Dim embededURL As String
    Dim mp4URL As String
    
      'Link zur Ausgangsseite
      '(HilfsURLs nur, um den undefinierten Umbruch im Forum zu verhindern)
    urlHilfA = "http://www.4players.de/4players.php/tvplayer/4PlayersTV/Alle"
      urlHilfB = "/4312/133758/AMD/Radeon_VII_Worlds_First_7nm_Gaming_GPU.html"
      url = urlHilfA & urlHilfB
      
      'Internet Explorer initialisieren und URL aufrufen
      Set browser = CreateObject("internetexplorer.application")
      browser.Visible = True 'Muss in diesem Makro True, unten wird Sendkeys aufrufen
      browser.navigate url
      Do Until browser.readyState = 4: DoEvents: Loop
      
      'Unter dem Video gibt es ein Eingabefeld, in dem eine Codezeile
      'zu einem iFrame steht, die auch den Link zum eingebetteten Player
      'selbst enthält. Diese Codezeile holen wir uns allerdings nicht, da
      'das Value, also der enthaltene Text genau das ist ... Text. Kein DOM
      'mehr an dieser Stelle. Da könnte man den Link zwar auch rausholen,
      'aber nur über Stringoperationen.
      '
      'Den Link in der Codezeile gibt es auch in den Metatags der Seite, da
      'holen wir ihn raus, weil dafür nur etwas Schleifenmechanik und der
      'direkte DOM Zugriff notwendig sind.
      Set knotenStamm = browser.document.getElementsByTagName("meta")
      
      'Prüfen ob Meta-Tags eingelesen wurden
      If Not knotenStamm Is Nothing Then
        'Alle Metatags durchgehen
        For Each knotenAst In knotenStamm
          'Abfragen, ob das Attribut itemprob vorhanden ist
          If knotenAst.hasAttribute("itemprop") Then
            'Abfragen, ob das Attribut itemprob den Wert embedUrl enthält
            embedAttrib = knotenAst.getAttribute("itemprop")
            If embedAttrib = "embedUrl" Then
              'Wurde das richtige Meta-Tag gefunden, den
              'Link aus dem Attribut content holen
              embededURL = knotenAst.getAttribute("content")
              'Schleife verlassen, da der Link gefunden wurde
              Exit For
            End If
          End If
        Next knotenAst
      Else
        'Diese Messagebox sollte niemals erscheinen
        MsgBox "Es wurden keine Meta-Tags ausgelesen"
      End If
      
      'Nur wenn ein Link ausgelesen werden konnte weitermachen
      If Len(embededURL) = 0 Then
        'Hinweis, dass kein Player-Link ausgelesen werden konnte
        MsgBox "Der gesuchte Player-Link wurde nicht in den Meta-Tags gefunden"
      Else
        'Mit dem gefundenen Link den Player für sich aufrufen
        browser.navigate embededURL
        Do Until browser.readyState = 4: DoEvents: Loop
        'Zusätzlich 2 Sekunden warten, sonst wird das
        'Tag video(0) unten nicht gefunden
        Application.Wait (Now + TimeSerial(0, 0, 2))
        
        'HTML-Bereich eingrenzen, damit der Video-Tag direkt ausgelesen werden kann
        Set knotenStamm = browser.document.getElementByID("tv-mediaplayer")
        Set knotenAst = knotenStamm.getElementsByTagName("video")(0)
        
        'An dieser Stelle ist der MP$-Link im Video-Tag noch nicht vorhanden
        'Das kann man sich mal ansehen, indem man den Tag ausgeben lässt
        Debug.Print knotenAst.outerhtml
        
        'ACHTUNG!
        'Hier wird Sendkeys verwendet. Deshalb während des Makrolaufs Finger weg
        'von Maus und Tastatur. Sendkeys schickt gnadenlos alles an das Programm,
        'das grade den Fokus hat. Da wir zuletzt den IE aufgerufen haben, hat
        'dieser den Fokus und muss für Sendkeys an dieser Stelle nicht extra
        'aktiviert werden
        'Warum beim Einblenden der HTML-Tools der Video-Link mit dem ergänzt wird,
        'was wir brauchen weiß ich nicht. Ich weiß dass die Leertaste (Video starten)
        'nicht zum Ziel führt. Bei F12 konnte ich den Link aber immer sehen, deshalb
        'bin ich überhaupt drauf gekommen es mit Sendkeys zu probieren
        Application.SendKeys "{F12}", True
        
        'Etwas warten, damit der Link vom IE in den Tag eingefügt werden kann
        Application.Wait (Now + TimeSerial(0, 0, 2))
        
        'An dieser Stelle ist der MP4-link dann im Video-Tag enthalten. Wohlgemerkt,
        'es ist exakt das gleiche Video-Tag. Die Seite verändert den eigenen HTML-
        'Quelltext mindestens des Players, sobald man etwas macht. Deshalb stehen
        'im Inspector von Firefox die kleinen Event-Icons im entsprechenden
        'Quelltextabschnitt. Zum Vergleich kann man sich den Video-Tag jetzt unter
        'seiner ersten Version ausgeben lassen
        Debug.Print knotenAst.outerhtml
        
        'Den MP4-Link extrahieren
        mp4URL = knotenAst.src
      End If
      
      'Weiterverarbeitung des MP4-Links, wenn vorhanden
      If Len(mp4URL) > 0 Then
        Debug.Print mp4URL
      Else
        MsgBox "Es wurde kein MP4-Link ausgelesen"
      End If
      
      'Aufräumen
      browser.Quit 'dauert in diesem Makro etwas
      Set browser = Nothing
      Set knotenStamm = Nothing
      Set knotenAst = Nothing
    End Sub
    

    Ich hoffe das klappt bei Dir auch, denn in meinem IE wird kein Video abgespielt. Warum habe ich nicht untersucht. Das die Playerseite das Video nicht direkt abspielt weiß ich aus dem Firefox. Von dort weiß ich auch, dass dort ein Werbevideo geladen wird, sobald man Play auslöst.

    Noch ein Hinweis:
    Wenn das Makro beim Auslesen der Attribute itemprob und content rumzickt, ruf den Seitenquelltext im Browser auf und kopiere diese beiden Begriffe direkt von dort ins Makro. Bei mir hat die Abfrage mit hasAttribute für itemprob zuerst nicht funktioniert, obwohl ich es genau so geschrieben habe. Vielleicht sind die Zeichen anders codiert, keine Ahnung. Jedenfalls ging es, nachdem ich die Direktkopie gemacht habe.

    Er bekommt auch nicht den ganzen Quelltext angezeigt. Hilft sich hier mit send keys um den Player zu starten und dann erst kommt der ganze Quelltext. Wie sieht dein Makro ganz aus mit Event Handler?

    Danke & Gruß

    Silent

    Mittwoch, 27. Februar 2019 16:33
  • Hi,

    ist mir ehrlich gesagt viel zu lange.

    Ich hab dir schon gesagt, was Du machen musst. Warum es bei dir nicht klappt, weiß ich nicht, da ich dein System, deine Officeversion, ... nicht kenne.

    Den ganzen Quatsch aus deinem vorherigen Posting (den Code dort meine ich) brauchst Du nicht. Ich wüsste auch nicht, was der hier überhaupt soll.

    Ich nutze hier Office/Excel 2013 und da klappt das mit dem von mir gezeigten Code problemlos. Ich erhalte den kompletten Inhalt (auch mit dem anderen URL) und dort steht der Link zur XML Datei drin.

    Option Explicit
    
    Private Sub Workbook_Open()
    
    Dim Result
        Result = GetContent("http://www.4players.de/4players.php/tvplayer/4PlayersTV/Alle/4312/133758/AMD/Radeon_VII_Worlds_First_7nm_Gaming_GPU.html")
        
    Dim FileName   As String
    Dim FileNumber As Integer
    
        FileName = "X:\Ordner\Response.html"
        FileNumber = FreeFile
        
        Open FileName For Output As #FileNumber
        Print #FileNumber, Result
        Close #FileNumber
    
    End Sub
    
    Public Function GetContent(ByVal Url)
    
    Dim objHTTP
    Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    
        objHTTP.SetTimeouts 2000, 2000, 2000, 2000
        objHTTP.Open "GET", Url, False
    
        objHTTP.send
    
        GetContent = objHTTP.ResponseText
    
    Set objHTTP = Nothing
    
    End Function

    Führ das mal bei dir. Wenn dann in der Response.html (Pfad anpassen!) auch nur die Hälfte bzw. nicht der playlist Parameter mit dem Pfad zur XML Datei drin steht, stell die Datei, die das Skript bei dir erzeugt,m bitte mal online (in deinen OneDrive oder woanders) und poste hier den Downloadlink.

    Dazu dann bitte auch die exakte Versionsnummer deiner Excelinstallation.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport


    Mittwoch, 27. Februar 2019 17:48
    Moderator
  • Hi,

    naja damit wollte ich zeigen das ich nicht der einzige bin, der nicht den ganzen Quelltext bekommt und er sich halt nur mir Send Keys helfen konnte den Player zu starten.

    In der erzeugten HTML Datei ist der ganze Quelltext drinne, komisch, habe hier den Link wo ich eine kleine Excel Test Datei erstellt habe, mit dem Marco was ich benutze und mit dem einen Link der geht wo "embed" drin steht. Ohne das Wort geht es nicht. Bei Workbooks open mit dem GLEICHEN Link der in deinem Marco steht geht es, bei dem Marco im Modul geht es nicht. Excel habe ich hier an dem Pc 2013 und an meinem Gaming PC 2019.


    Link zu Dateien

    Danke & Gruß

    Silent

    Donnerstag, 28. Februar 2019 20:10