Avatar billede hist Praktikant
23. marts 2014 - 15:13 Der er 13 kommentarer og
1 løsning

hvorfor tager den ikke tiden ?

Er der nogen der kan fortælle mig hvorfor den ikke tager tiden fra den youtube vidio

f.eks den her video
http://www.youtube.com/watch?v=Z9H5CCLDQoE

preg_match_all("/(<span class=\"video-time\">)(.*?)(</span>)/", $html, $matchess, PREG_SET_ORDER);

foreach ($matchess as $tid) {
    echo "" . $tid[0] . "\n\n";
    echo "" . $tid[1] . "\n\n";
    echo "" . $tid[2] . "\n\n";
    echo "" . $tid[3] . "\n\n";
    echo "" . $tid[4] . "\n\n";
}
Avatar billede MadsHaupt Juniormester
23. marts 2014 - 15:33 #1
Hvor er $html og $matchess variablerne defineret?.
Avatar billede hist Praktikant
23. marts 2014 - 15:35 #2
nåå ja sorry.
jeg henter hele siden ned som ren html i en .txt fil og $html indholder alt html koden :D
Avatar billede Slater Ekspert
23. marts 2014 - 15:44 #3
Virker fint når jeg tester det her, bortset fra at din slash skal escapes. Altså <\/span>, ikke bare </span>
Avatar billede MadsHaupt Juniormester
23. marts 2014 - 15:44 #4
Kan du lægge den kode hvor du definere $html og $matchess variablerne ind her?.
Avatar billede Slater Ekspert
23. marts 2014 - 15:53 #5
Mads: Bare lige for at nævne det, $matchess skal ikke defineres - den er til outputtet fra preg_match_all funktionen.
Avatar billede MadsHaupt Juniormester
23. marts 2014 - 15:57 #6
hist kan du lægge den kode hvor du definere $html variablen her ind?.
Avatar billede hist Praktikant
23. marts 2014 - 16:24 #7
viperine.
jeg har også en anden linje hvor jeg henter tekst
preg_match_all("/(<p id=\"eow-description\" >)(.*?)(<\/p>)/", $html, $matches, PREG_SET_ORDER);

foreach ($matches as $val) {
    echo "" . $val[2] . "\n\n";

og nede under har jeg den her

preg_match_all("/(<span class=\"video-time\">)(.*?)(</span>)/", $html, $matchess, PREG_SET_ORDER);

foreach ($matchess as $tid) {
    echo "" . $tid[0] . "\n\n";
    echo "" . $tid[1] . "\n\n";
    echo "" . $tid[2] . "\n\n";
    echo "" . $tid[3] . "\n\n";
    echo "" . $tid[4] . "\n\n";
}

for det er tiden til den bestemte video jeg skal bruge
Men teksten henter den fint men tiden den gider den ikke hente

mads
her er den tekst

curl_setopt($ch, CURLOPT_URL, "".$_POST['tekst']."");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);

$data = curl_exec($ch);

$file = 'test.txt';
$current = $data;
$bodytag = str_replace('', '', ''.$current.'');
file_put_contents($file, $bodytag);

det er noget gammel tekst jeg havde og ligge
Avatar billede MadsHaupt Juniormester
23. marts 2014 - 17:39 #8
Jeg kan se at du gemmer det i en variabel der hedder $data og at $html aldrig bliver defineret og variablen $ch bliver heller aldrig defineret.

Jeg har også testet "str_replace('', '', $data);" og den gør intet, er det meningen at den skal gøre sådan?.

Her er en optimeret version af din kode til at hente siden.
// Definere variablen $ch.
$ch = curl_init();


curl_setopt($ch, CURLOPT_URL, $_POST['tekst']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);

$data = curl_exec($ch);

$file = 'test.txt';
// Her er den linje der ikke gør noget.
$bodytag = str_replace('', '', $data);

file_put_contents($file, $bodytag);

Grunden til at den ikke kunne finde længden af videoen var fordi der opstod fejl, fordi du har glemt at sætte "\" før "/" når det skal tolkes som "/" og ikke som en kommando.

Rettelse af din kode til at finde længden på videoen (Det der er med kursiv skrift er det der skulle rettes og det med fed er det der er rettet):
preg_match_all("/(<span class=\"video-time\">)(.*?)(<\/span>)/", $html, $matchess, PREG_SET_ORDER);

foreach ($matchess as $tid) {
    echo $tid[0]."\n\n";
    echo $tid[1]."\n\n";
    echo $tid[2]."\n\n";
    echo $tid[3]."\n\n";
    echo $tid[4]."\n\n";
}
Avatar billede hist Praktikant
23. marts 2014 - 18:16 #9
må sku sige jeg får samme resultat ud af det næste :D
nå får jeg bare en masse tider frem.
her er den næsten fulde tekst

<?php
$ch = curl_init();

//besøger den valgt URL

curl_setopt($ch, CURLOPT_URL, $_POST['tekst']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);

$data = curl_exec($ch);

$file = 'test.txt';
// Her er den linje der ikke gør noget.
$bodytag = str_replace('', '', $data);
file_put_contents($file, $bodytag);


?>
-------------------------------------
<?php
include_once('simple_html_dom.php');
$target_url = "test.txt";
$html = new simple_html_dom();
$html->load_file($target_url);
foreach($html->find('img') as $img){
}
?>

----------------------------------------------------
<?php
$url = $_POST['tekst'];
$tags_arr      = explode('v=', $url);
$video['url'] = 'http://www.youtube.com/watch?v=' . $id;
echo $video;
echo "<br>".$tags_arr[1]."<br>";


?>
<iframe width="630" height="495" src="http://www.youtube.com/embed/<?PHP echo $tags_arr[1]; ?>" frameborder="0" allowfullscreen></iframe><br /><br />
<img src="http://i1.ytimg.com/vi/<?PHP echo $tags_arr[1]; ?>/0.jpg" />
<br /><br /><br />
<?PHP
preg_match_all("/(<p id=\"eow-description\" >)(.*?)(<\/p>)/", $html, $matches, PREG_SET_ORDER);

foreach ($matches as $val) {
    echo "" . $val[2] . "\n\n";
}
//----Find Tiden Start ----------
preg_match_all("/(<span class=\"video-time\">)(.*?)(<\/span>)/", $html, $matchess, PREG_SET_ORDER);

foreach ($matchess as $tid) {
    echo $tid[2]."\n\n";

}
//----Find Tiden Slut -----------
$text = $val[2];
$short = substr($text, 0, 40);
?>
Avatar billede MadsHaupt Juniormester
24. marts 2014 - 14:39 #10
Jeg har lige testet det og jeg kan se at du ikke kan få længden fra videoen på den måde, du får kun alle længderne fra de video forslag der er på siden.

Længden på videoen eksistere slet ikke i html kilden.

Jeg undersøger om der er andre muligheder for at få fat i længden af videoen.
Avatar billede hist Praktikant
16. maj 2014 - 09:26 #11
nå vi må nok lukke :D
kan ikke huske om det hjalp her inde men kom med et svar dem der vil have point
Avatar billede MadsHaupt Juniormester
16. maj 2014 - 12:32 #12
Jeg har fundet en løsning som måske virker her: http://stackoverflow.com/questions/7772801/getting-time-length-of-youtube-video-file

<?php

      getYoutubeImage($_GET["y"]);

            function getYoutubeImage($e){
            //GET THE URL
            $url = $e;

            $queryString = parse_url($url, PHP_URL_QUERY);

            parse_str($queryString, $params);

            $v = $params['v']; 




        // function to parse a video <entry>
        function parseVideoEntry($entry) {     
          $obj= new stdClass;

          // get nodes in media: namespace for media information
          $media = $entry->children('http://search.yahoo.com/mrss/');
          $obj->title = $media->group->title;
          $obj->description = $media->group->description;



          // get <yt:duration> node for video length
          $yt = $media->children('http://gdata.youtube.com/schemas/2007');
          $attrs = $yt->duration->attributes();
          $obj->length = $attrs['seconds'];


          // return object to caller 
          return $obj;     
        } 

        // get video ID from $_GET
        if (!isset($v)) {
          die ('ERROR: Missing video ID'); 
        } else {
          $vid = $v;
        }

        // set video data feed URL
        $feedURL = 'http://gdata.youtube.com/feeds/api/videos/' . $v;

        // read feed into SimpleXML object
        $entry = simplexml_load_file($feedURL);

        // parse video entry
        $video = parseVideoEntry($entry);

        // display video image, title and duration
        echo "<img src='http://i3.ytimg.com/vi/$v/default.jpg' width='150' />";
        echo "<p>{$video->title}</p>";
        echo "<p>".sprintf("%0.2f", $video->length/60) . " min. </p>";


        }

        ?>
Avatar billede hist Praktikant
18. maj 2014 - 11:17 #13
tak mads, kunne jeg godt bruge.
kan du komme med et svar
Avatar billede MadsHaupt Juniormester
18. maj 2014 - 14:44 #14
Ja.
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