Comment obtenir l'URL directe de la vidéo au format .mp4 en utilisant C #?

c# html-agility-pack video web-scraping windows-phone

Question

J'ai besoin d'une sorte d'algorithme qui permettrait d'extraire le lien de mp4engine.

Voici l'exemple d'une page que je veux supprimer.

La sortie souhaitée dans ce cas serait: http://mp4engine.com:182/d/a2chmyndcqqgkpskitclvbgu5pgwxve2vmlrdsctpwbte2flb4i4hrz6/.hack_Roots (Dub) Episode 001-360p.mp4

J'ai essayé d'utiliser HtmlAgilityPack pour obtenir le code du lecteur, mais c'est p,a,c,k,e,d et je ne parviens pas à l'exécuter dans mon projet C # Windows Phone 8.1. J'ai pensé à utiliser le paquet Jurassic pour exécuter le JS, mais cela ne semble pas fonctionner avec WinPhone8.1

Voici le script que je reçois en utilisant HAP:

<script type='text/javascript'>eval(function(p,a,c,k,e,d){while(c--    )if(k[c])p=p.replace(new RegExp('\\b'+c.toString(a)+'\\b','g'),k[c]);return p} ('15("14").13({f:"0://2.1:e/d/c/.b (a) 9 8- 7.6",12:"0://2.1/4/h.g",11:"0://2.1/i/10/z.y",x:"w",v:u,t:s,5:"0",r:"0://2.1/4/q /p",o:[{3:"n",m:"0://2.1/4/h.g"},{3:"l",k:{f:\'0://2.1:e/d/c/.b (a) 9 8- 7.6\',\'5\':\'0\'}},{3:"j"}],});',36,42,'http|com|mp4engine|type|player|provider|mp4|360p|001|Episode|Dub|hack_Roots|a2chmyndcqqgkpskitclvbgu5pgwxve2vmlrdsctpwbte2flb4i4hrz6||182|file|swf|jw6||download|config|html5|src|flash|modes|six|skins|skin|420|height|722|width|1484|duration|jpg|hahgl235zwv2|00000|image|flashplayer|setup|flvplayer|jwplayer'.split('|')))

J'ai également essayé d'utiliser le contrôle WebView intégré:

WebView wv = new WebView();
//... navigation to string and all that
var res = await wv.InvokeScriptAsync("eval", null);

Malheureusement, la fonction retourne une chaîne vide ( res = "" )

J'ai également recherché une chaîne base64 que je pouvais décoder, mais la page ne semble pas en avoir une.

Que puis-je faire pour obtenir l'URL de la vidéo?

Réponse populaire

HtmlAgilityPack ne prend que le code HTML statique, vous devez exécuter le contenu dynamique (javascript) pour prendre les données.

Vous avez trois façons:

1 - Implémentez un code de beautifiant pour javascript dans votre c # (ici vous pouvez voir un exemple: http://jsbeautifier.org/ ). Dans ce cas et uniquement pour vous, vous pouvez extraire l'URL de la vidéo car il s'y trouve, mais cela n'est pas courant.

2 - En utilisant le navigateur Web .net pour vous connecter à la page et exécuter le code javascript pour extraire les données, dans ce cas votre application doit être une application Windows Form.

3 - Utiliser un navigateur sans navigateur pour se connecter à la page et exécuter le code javascript pour récupérer les données. Vous pouvez utiliser les célèbres phatomjs. Exemple ici: exemple en C # d'utilisation de PhantomJS webdriver ExecutePhantomJS pour filtrer les images




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi