Avatar billede angelenglen Nybegynder
21. oktober 2011 - 18:41 Der er 8 kommentarer og
1 løsning

Find YouTube videoer i html-kode

Nogen der kan hjælpe mig med at finde alle de YouTube videoer en given sides kildekode indeholder?
Jeg har kun brug for videoernes feed-codes, evt. også en variabel med antallet af videoer.

Her et et eksempel på hvordan det kunne implementeres:

var pageSourceCode = " * indsæt en masse html-kode her * ";
var ParseResult = GetYouTubeFeedCodesFromSource(pageSourceCode);
alert("Antal videoer fundet: " + ParseResult.NumberOfVideoes + "\nFeed codes: " + ParseResult.FeedCodes);

function GetYouTubeFeedCodesFromSource(sourceCode) {
    //do stuff
    return {
        NumberOfVideoes : 5,
        FeedCodes : "Lgou1KbfEic,9ilm59rNvZw,kYKDMBfuxDk,AXQmnm7YqWo,HtAQlodoWjc"
    };
}


Ovenstående funktion simulerer at der blev fundet 5 videoer på siden, og returnerer et JSON objekt med tallet 5 og de 5 feedcodes som en string, adskildt af komma'er.

Håber det giver mening :-)
Avatar billede olebole Juniormester
21. oktober 2011 - 18:49 #1
<ole>

Mener du en robot, der kan crawle websites og finde videoer, eller? I så fald kan du ikke noget interessant med JavaScript

/mvh
</bole>
Avatar billede angelenglen Nybegynder
21. oktober 2011 - 19:15 #2
Nej nej, slet ikke.

Det jeg har brug for er en funktion jeg kan "fodre" med html-indholdet af en side, og få YouTube feedcodes tilbage.

Jeg skal bruge det til en browser-plugin jeg er ved at lave, der skal gøre det lettere at dele YouTube videoer der er indlejret på de sider brugeren besøger.
Avatar billede angelenglen Nybegynder
21. oktober 2011 - 19:23 #3
...så hvis fx siden (bl.a.) indeholder følgende kode til at vise to youtube videoer, så ønsker jeg "35TbGjt-weA,1D1cap6yETA" tilbage.




<table border="0" cellpadding="10" cellspacing="0"><tr><td>

<iframe width="560" height="315" src="http: //www.youtube.com/embed/35TbGjt-weA" frameborder="0" allowfullscreen></iframe>

</td></tr><tr><td>

<iframe width="420" height="315" src="http: //www.youtube.com/embed/1D1cap6yETA" frameborder="0" allowfullscreen></iframe>

</td></tr></table>



Bemærk: Måtte indsætte et mellemrum mellem http: og // i links i koden, for at eksperten.dk ikke "saboterer" dem :-)
Avatar billede olebole Juniormester
21. oktober 2011 - 20:44 #4
Hvis din streng hedder sHtml, kan du skrive noget i stil med:


var aFound = [], inx = 0;
sHtml.replace(/www.youtube.com\/embed\/(.+?)"/g, function(a,b){aFound[inx++]=b});
alert(aFound.length);

Avatar billede angelenglen Nybegynder
21. oktober 2011 - 20:57 #5
Umiddelbart ser det godt ud.

Dog hvis jeg fx besøger følgende side:
http://icanhascheezburger.com/page/2/
- så returnerer den korrekt 1 fordi der er 1 video, men aFound indeholder:
nVER7X_BmeI?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent

i stedet for blot "nVER7X_BmeI"

Jeg er dog godt klar over at deres video embeddedes lidt anderledes end de to eksempler jeg viste fra Youtube's egen side.
Avatar billede angelenglen Nybegynder
21. oktober 2011 - 21:16 #6
Muligt det kan gøres smartere, men foreløbig er jeg kommet frem til:

var aFound = [], inx = 0;
sHtml.replace(/www.youtube.com\/embed\/(.+?)"/g, function(a,b){
    if (b.indexOf("?") > 0) {b = b.split("?")[0];}
    aFound[inx++]=b
});
alert(aFound);


Ps. Du må meget gerne lægge et svar :-)
Avatar billede olebole Juniormester
21. oktober 2011 - 21:21 #7
Du kan også udvidde det regulære udtryk:


var aFound = [], inx = 0;
sHtml.replace(/www.youtube.com\/embed\/(.+?)("|\?)/g, function(a,b){aFound[inx++]=b});
alert(aFound.length);


Jeg samler ikke points, så læg selv et svar og accepter det, så tråden lukkes  =)
Avatar billede angelenglen Nybegynder
21. oktober 2011 - 21:47 #8
Endnu bedre, håbede også regEx kunne klare det, men kunne ikke lige få den til det selv :-)

Tak for hjælpen!
Avatar billede olebole Juniormester
21. oktober 2011 - 22:01 #9
Selvtak  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester