Guida më poshtë është paksa e gjatë dhe në shikim të parë mund të duket e komplikuar. Qëllimi i saj nuk është thjeshtë prezantimi i një scripti që ju shton një numër të pafund videosh dhe faqesh në domainin tuaj, por perceptimi i disa nga praktikave të programimit në PHP. Sugjeroj ta lexoni nga fillimi në fund pasi do e keni më të lehtë të programoni diçka të ngjashme në të ardhmen, por nëse koha nuk ju pret, atëherë shikoni demon dhe skedarët që ju duhen për ta vendosur në faqe.
Teoria e veprimeve
YouTube ashtu si shumë nga faqet e epokës Web 2.0 kanë si veçori ofrimin e ndërveprimit jo vetëm me vizitorët, por dhe me faqet e tjera. Për të mundësuar këtë bashkëveprim shpesh herë faqet publikojnë një API ose e shqipëruar nga Wikipedia Shqip si Interfejsi për programimin e aplikacioneve. API nuk është gjë tjetër veçse një grup metodash që thirren publikisht (ose sipas një identifikimi) në një faqe jo-në-pronësi, – nga një faqe tjetër. Shpeshherë API-t të lejojnë të tërheqësh në faqen tënde disa artikuj, disa statistika, ose në drejtimin e kundërt, të përditësosh statusin personal (psh në Twitter), të shtosh faqe të preferuara (psh në delicious), etj.
Nëse ndjeheni konfuz nga API dhe përshkrimi më sipër mos u shqetësoni, guida në vazhdim do jetë më e thjeshtë. (Në fund të fundit mund të merrni skedarët në çdo çast dhe t’i vendosni në server e të mos e lexoni fare më tej, por sigurisht nuk do mësoni asgjë të re).
Për t’u kthyer sërish tek teoria e veprimeve në këtë skenar, duhet të kuptojmë që bota e programimit është e mbushur me terma të komplikuar, por që gjithmonë nënkuptojnë diçka të thjeshtë. Nëpërmjet API bëhet një kërkesë tek Ofruesi i një shërbimi dhe merret një përgjigje nga ai.
Në rastin tonë, ne do kërkojmë një video sipas një identifikuesi unik (çdo video ka një identifikuesu unik) dhe API i YouTube do na kthejë informacionin e nevojshëm për ta prezantuar këtë video në faqen tonë. Përveç një video, nëpërmjet APIt të YouTube ne mund të marrim dhe të gjitha videot e ngjashme me atë video, të gjitha videot e një kanali (një publikuesi), të kërkojmë video sipas një termi e të tjera veprime. Disa nga këto proçese do i shpjegojmë më poshtë.
Çfarë do përdoret në këtë guidë?
Për të ndjekur guidën do ju duhet një kompjuter (hmm), pak internet dhe shumë vullnet. Për të parë rezultate dhe për ta vendosur në punë do ju duhet një host që mund të proçesojë PHP të paktën versioni 5.2 ose më mirë. Nuk ka asnjë bazë të dhënash apo nevojë për të ruajtur informacion në këtë rast.
Guida do të shfrytëzojë një grup librarish të quajtura Zend Framework, por asnjë njohuri paraprake nuk do duhet në këtë rast. Të gjithë skedarët e nevojshëm do jenë të ruajtur dhe të bashkangjitur në fund të këtij shkrimi për shkarkim.
Nëse dëshironi ta ndiqni këtë guidë hap pas hapi, krijoni një direktori në hostin tuaj, psh public_html/video. Shkarkoni këtë skedar të arkivuar në zip, dekompresojeni dhe ngarkojeni në server gjithmonë nën public_html. Skedari zip përmban librarinë e Zend Framework 1.10.1.
Arritëm kështu në hapin e parë të guidës tonë. Deri tani duhet të keni arritur të keni një strukturë pak a shumë të tillë:
|– Zend
|– video.php
Hapi i parë:
Si çdo aktivitet tjetër, hapi i parë është nxemja. Nxehja nënkupton krijimin e një ideje të përgjithshme se si funksionojnë gjërat (gjatësia e një fushe futbolli, testimi i një fushe tenisi, dhe vendosja në punë e disa muskujve sipas rastit).
Në rastin tonë nxemja lidhet me krijimin e një ideje të përgjithshme se si funksionon një thirrje e YouTube API). Në seksionin në vijim do fillojmë me një thirrje të thjeshtë të një video nëpërmjet një klase php.
Krijoni një skedar video.php dhe brenda të tij kopjoni kodin më poshtë:
| HTML | | Kopjo Kodin | | ? |
| 01 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
| 02 | <html> |
| 03 | <head> |
| 04 | <title>Faqja ime me nje pafundesi videosh</title> |
| 05 | <meta http-equiv="content-type" content="text/html; charset=UTF-8"> |
| 06 | <meta name="description" content=""> |
| 07 | <meta name="keywords" content=""> |
| 08 | <style media="screen,projection" type="text/css"> |
| 09 | /* Stilet */ |
| 10 | *{margin:0;padding:0} |
| 11 | body{padding:20px;background:white;background:white;color:#555;font:80%/140% 'helvetica neue',sans-serif;width:900px;margin: 0 auto;} |
| 12 | h1,h2{font:bold 80% 'helvetica neue',sans-serif;letter-spacing:3px;text-transform:uppercase;} |
| 13 | a{color:#348;text-decoration:none;outline:none;} |
| 14 | a:hover{color:#67a;} |
| 15 | .caption{color:#888;position:absolute;top:250px;left:3px;width:200px;} |
| 16 | .video_container{margin:0 auto 60px auto;min-height:438px;width:700px;float:right;} |
| 17 | .nav{padding-top:15px;clear:both;} |
| 18 | .info{text-align:left;margin:30px 0;border-top:1px dotted #221;padding-top:30px;clear:both;} |
| 19 | .info p{margin-top:1.6em;} |
| 20 | </style> |
| 21 | </head> |
| 22 | |
| 23 | <body> |
| 24 | <h1>Video</h1> |
| 25 | <div> |
| 26 | <!-- fillim qendra --> |
| 27 | <?php |
| 28 | require_once 'Zend/Gdata/YouTube.php'; |
| 29 | $yt = new Zend_Gdata_YouTube(); |
| 30 | $videoID = "dQRGHAdQjR0"; |
| 31 | try { |
| 32 | $videoEntry = $yt->getVideoEntry($videoID); |
| 33 | $commentFeed = $yt->getVideoCommentFeed($videoID); |
| 34 | $relatedVideosFeed = $yt->getRelatedVideoFeed($videoID); |
| 35 | ?> |
| 36 | <div id="video" align="center"> |
| 37 | <object width="425" height="344"> |
| 38 | <param name="movie" value="http://www.youtube.com/v/<?=$videoID?>?color1=0x2b405b&color2=0x6b8ab6&fs=1"></param> |
| 39 | <param name="allowFullScreen" value="true"></param> |
| 40 | <param name="allowscriptaccess" value="always"></param> |
| 41 | <embed src="http://www.youtube.com/v/<?=$videoID?>?rel=0&color1=0x2b405b&color2=0x6b8ab6&border=1&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed> |
| 42 | </object> |
| 43 | </div> |
| 44 | <?php |
| 45 | echo 'Video: ' . $videoEntry->getVideoTitle() . "<br />"; |
| 46 | echo 'Video ID: ' . $videoEntry->getVideoId() . "<br />"; |
| 47 | echo 'Updated: ' . $videoEntry->getUpdated() . "<br />"; |
| 48 | echo 'Përshkrimi: ' . $videoEntry->getVideoDescription() . "<br />"; |
| 49 | echo 'Kategoria: ' . $videoEntry->getVideoCategory() . "<br />"; |
| 50 | echo 'Tage: ' . implode(", ", $videoEntry->getVideoTags()) . "<br />"; |
| 51 | echo 'Watch page: ' . $videoEntry->getVideoWatchPageUrl() . "<br />"; |
| 52 | echo 'Flash Player Url: ' . $videoEntry->getFlashPlayerUrl() . "<br />"; |
| 53 | echo 'Kohezgjatja: ' . $videoEntry->getVideoDuration() . "<br />"; |
| 54 | echo 'Gjithsej shikime: ' . $videoEntry->getVideoViewCount() . ""; |
| 55 | echo 'Vleresimi: ' . print_r ($videoEntry->getVideoRatingInfo()) . "<br />"; |
| 56 | echo 'Geo: ' . $videoEntry->getVideoGeoLocation() . "<br />"; |
| 57 | echo 'Recorded on: ' . $videoEntry->getVideoRecorded() . "<br />"; |
| 58 | |
| 59 | } catch (Zend_Gdata_App_HttpException $e){ |
| 60 | echo "Grupo, ke nje gabim diku"; |
| 61 | //Bej dicka per te njoftuar zhvilluesin, shkruaj nje koment tek Feniksi.com |
| 62 | } |
| 63 | ?> |
| 64 | <!-- fund qendra --> |
| 65 | </div> |
| 66 | <div> |
| 67 | <h2>Informacion</h2> |
| 68 | |
| 69 | Projekti me siper eshte i ndertuar per te krijuar nje ide se si mund te perfitohet nga API i Youtube per te pasur nje pafundesi videosh ne faqen tende. |
| 70 | Cdo kush eshte i lire ta perdore kete kod per nje faqe personale, persa kohe nuk e rishet apo nuk i heq te dhenat ne tagun Footer te kesaj faqeje |
| 71 | |
| 72 | <a href="http://www.shqiperia.com/">Te drejtat Shqiperia.Com</a> | <a href="http://www.feniksi.com">Pjese e nje Tutoriali ne Feniksi.com</a> |
| 73 | </div> |
| 74 | </body> |
| 75 | </html> |
Pak shpjegime tani për kodin më sipër.
Faqja është një HTML e thjeshtë dhe brenda të saj ndodhet dhe CSS. (Ideja më e mirë është ndarja në skedar të veçantë për të arritur decentralizim të “pushtetit”, por në këtë rast për të thjeshtuar shkarkimin e skedarit, i kam vendosur të gjithë asetet e faqes në një vend.
Ajo që është e rëndësishme për ne është kodi që ndodhet në brendi të komenteve HTML <!–fillim qendra –> deri tek <!– fund qendra –>. Kodi fillon me një krijim të një instance nga klasa ‘YouTube.php’ nëpërmjet dy rreshtave më poshtë:
| PHP | | Kopjo Kodin | | ? |
| 1 | |
| 2 | //Inkludo skedarin që përmban klasën |
| 3 | require_once 'Zend/Gdata/YouTube.php'; |
| 4 | |
| 5 | //krijo instancën |
| 6 | $yt = new Zend_Gdata_YouTube(); |
Kam zgjedhur një video të preferuar nga YouTube dhe ne URLnë e saj mësova që identifikuesi unik i saj është: dQRGHAdQjR0. Duke pasur identifikuesin e videos në një variabël $videoID (pra $videoID=”dQRGHAdQjR0″), tani bëj një thirrje tek YouTube që të më kthejë të gjitha rezultatet në lidhje me këtë video.
Një video përmban gjatësinë e videos, kategorinë e saj, termat e bashkangjitur, e të tjera informacoine dytësore. Të gjitha këto informacione kthehen mbrapsht si një vektor (Atom Feed) tek variabli ynë i sapo krijuar $videoEntry nëpërmjet thirrjes së metodës getVideoEntry() të instancës $yt! Për të pasur sa më shumë informacion mbi një video po tërheq dhe të gjitha komentet e kësaj video dhe një grup videosh të tjera të ngjashme.
| PHP | | Kopjo Kodin | | ? |
| 1 | $videoEntry=$yt->getVideoEntry($videoID); |
| 2 | $commentFeed = $yt->getVideoCommentFeed($videoID); |
| 3 | $relatedVideosFeed = $yt->getRelatedVideoFeed($videoID); |
Te gjitha rezultatet e tërhequra nëpërmjet rrjeshtit 32 (shih kodin më sipër) i kemi shfaqur në rrjeshat 45-57.
Duke qëndruar akoma në kohën e nxemjes, do vini re që kemi marrë po ashtu dhe të gjitha komentet, por nuk i kemi shfaqur gjëkundi. Për të shfaqur komentet na duhet thjeshtë një bredhje në vektorin e komenteve (rezultat i thirrjes getVideoCommentFeed()). Kodin më poshtë mund ta vendosni menjëherë mbi sintaksën }catch (Zend_Gdata_App_HttpException $e){
| PHP | | Kopjo Kodin | | ? |
| 1 | echo '<h2>Komentet</h2>'; |
| 2 | foreach ($commentFeed as $commentEntry) { |
| 3 | echo $commentEntry->title->text . "<br />"; |
| 4 | echo $commentEntry->content->text . "<br /><br /><br />"; |
| 5 | } |
Përveç komenteve, kemi tërhequr edhe videot e ngjashme, por tek ato do hidhemi pas pak!
Hapi i dytë: Rregull & funksion
Për gjithçka që bëjmë ka rregulla! Rregullat gjithmonë ndihmojnë për të arritur një rezultat. Rregullat janë ato që na imponohen nga organizma të tjerë, ose rregulla që i krijojmë vetë që të arrijmë një rezultat të mirë më shpejt.
Në rastin tonë, duam të kryejmë disa operacione në faqe. Deri tani jemi prezantuar vetëm me shfaqjen e një video, por ndërmjet kodit <!–fillim qendra –> … <!– fund qendra –> mund të kemi thirrje të ndryshme sipas rastit. Për të thjeshtuar kopjimin e kodeve të gjata, në PHP mund të krijohen funksione që lihen në një skedar më vete, ose në një cep të skedarit video.php siç do veprojmë ne dhe thirren nëpërmjet një rrjeshti në vendin ku duam t’i shfaqim.
Një funksion në PHP fillon me sintaksën:
| PHP | | Kopjo Kodin | | ? |
| 1 | function emer($variablasiargumenta, $tjetervar, ..., $var_n){} |
Funksioni mund të vendoset në çdo vend të një faqeje (në fund psh) dhe të thërritet në fillim. Pikërisht këtë gjë do bëjme dhe ne. Fshijmë të gjithë kodin ndërmjet <!–fillim qendra –> … <!– fund qendra –>. Në fund të skedarit video.php, më poshtë kodit mbyllës vendosim këtë kod:
| PHP | | Kopjo Kodin | | ? |
| 01 | <?php |
| 02 | /** |
| 03 | * Funksion qe shfaq nje video duke marre si argument identifikuesin unik te videos |
| 04 | * Nese nuk vjen argumenti $videoID, atehere marrim si default dQRGHAdQjR0 |
| 05 | */ |
| 06 | function shfaqvideo($videoID="dQRGHAdQjR0"){ |
| 07 | require_once 'Zend/Gdata/YouTube.php'; |
| 08 | $yt = new Zend_Gdata_YouTube(); |
| 09 | global $title, $description; |
| 10 | try { |
| 11 | $content=""; |
| 12 | $videoEntry=$yt->getVideoEntry($videoID); |
| 13 | $commentFeed = $yt->getVideoCommentFeed($videoID); |
| 14 | $relatedVideosFeed = $yt->getRelatedVideoFeed($videoID); |
| 15 | $content.='<div id="video" align="center"> |
| 16 | <object width="425" height="344"> |
| 17 | <param name="movie" value="http://www.youtube.com/v/'.$videoID.'?color1=0x2b405b&color2=0x6b8ab6&fs=1"></param> |
| 18 | <param name="allowFullScreen" value="true"></param> |
| 19 | <param name="allowscriptaccess" value="always"></param> |
| 20 | <embed src="http://www.youtube.com/v/'.$videoID.'?rel=0&color1=0x2b405b&color2=0x6b8ab6&border=1&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed> |
| 21 | </object> |
| 22 | </div> |
| 23 | .Video: ' . $videoEntry->getVideoTitle() . '<br /> |
| 24 | Video ID: ' . $videoEntry->getVideoId() . '<br /> |
| 25 | Updated: ' . $videoEntry->getUpdated() . '<br /> |
| 26 | Përshkrimi: ' . $videoEntry->getVideoDescription() . '<br /> |
| 27 | Kategoria: ' . $videoEntry->getVideoCategory() . '<br /> |
| 28 | Tage: ' . implode(", ", $videoEntry->getVideoTags()) . '<br /> |
| 29 | Watch page: ' . $videoEntry->getVideoWatchPageUrl() . '<br /> |
| 30 | Flash Player Url: ' . $videoEntry->getFlashPlayerUrl() . '<br /> |
| 31 | Kohezgjatja: ' . $videoEntry->getVideoDuration() . '<br /> |
| 32 | Gjithsej shikime: ' . $videoEntry->getVideoViewCount() . '<br />'; |
| 33 | $vleresim=$videoEntry->getVideoRatingInfo(); |
| 34 | $content.='Vleresimi: ' . $vleresim["average"] . '<br /> |
| 35 | Geo: ' . $videoEntry->getVideoGeoLocation() . '<br /> |
| 36 | Recorded on: ' . $videoEntry->getVideoRecorded() . '<br /> |
| 37 | <h2>Komentet</h2>'; |
| 38 | foreach ($commentFeed as $commentEntry) { |
| 39 | $content.=$commentEntry->title->text . "<br />"; |
| 40 | $content.=$commentEntry->content->text . "<br /><br /><br />"; |
| 41 | } |
| 42 | //Krijoj një titull për faqen dhe një description |
| 43 | $title=$videoEntry->getVideoTitle(); |
| 44 | $description=$videoEntry->getVideoDescription(); |
| 45 | |
| 46 | } catch (Zend_Gdata_App_HttpException $e){ |
| 47 | $content.= "Grupo, ke nje gabim diku"; |
| 48 | //Bej dicka per te njoftuar zhvilluesin, shkruaj nje koment tek Feniksi.com |
| 49 | } |
| 50 | |
| 51 | return $content; |
| 52 | } |
| 53 | ?> |
Siç shihet i gjithë kodi që ndodhej në mes të faqes ndodhet tashmë në këtë funksion. Funksioni mund të kthejë një rezultat dhe t’u japë vlerë disa variablave. Në rastin tonë kam krijuar dy variabla globale $title dhe $description që do i përdor në MetaDatat e faqes! Ndërsa e gjithë pjesa tjetër e funksionit ngarkohet në një variabël string $content.
Tani bëjmë një tjetër modifikim të vogël në fillim (krye) të skedarit video.php
Mbi kodin hapësv endosim kodin:
| PHP | | Kopjo Kodin | | ? |
| 1 | <?php $contentfaqja=shfaqvideo(); ?> |
Në këtë çast, të gjithë kodin html që do shfaqej nga funksioni e kemi në variablën $contentfaqja. Për ta shfaqur aty shkojmë ndërmjet komenteve <!–fillim qendra –> … <!– fund qendra –>, fshijmë gjithçka midis tyre dhe vendosim kodin:
| PHP | | Kopjo Kodin | | ? |
| 1 | <!-- fillim qendra --> |
| 2 | <?php |
| 3 | echo $contentfaqja; |
| 4 | ?> |
| 5 | <!-- fund qendra --> |
Rezultati do jetë i njëjtë si më parë; në faqe do shfaqet gjithmonë e njëjta video. Ndërrojmë dhe rrjeshtin e title dhe description në faqe si më poshtë:
| PHP | | Kopjo Kodin | | ? |
| 1 | <title><?=$title?></title> |
| 2 | <meta name="description" content="<?=$description?>"> |
Ajo që kemi arritur në këtë çast është një organizim i mirë i faqes. Hapi tjetër!? Tërheqja e të gjitha videove të një kanali!
Nëse keni arritur deri këtu, tregon që kishit vullnet dhe tani pjesa më e vështirë kaloi. Pjesa tjetër është relativisht e thjeshtë dhe me pak komplikime!
Hapi i tretë: I want more!
Deri tani kemi krijuar një faqe që thërret një video nga YouTube sipas një kodi të paracaktuar nga ne. Nëse do donim të thërrisnim një video tjetër duke ia kaluar faqes si argument, do përdornim një URL si: http://www.domain.com/video.php?videoID=EOuKepG0KE0. Me anë të kësaj thirrje mund të kalohen në URL disa argumenta që të mundësojnë interaktivitetin e kërkesës nga përdoruesi apo dinamicitet nga faqja.
Në rastin kur në URL ka një argument të formës ?videoID=EOuKepG0KE0 do të thotë që në faqe mund të marrim një variabël me emrin “videoID” dhe me vlerën “EOuKepG0KE0″. Në këtë rast do kishim:
| PHP | | Kopjo Kodin | | ? |
| 1 | //Marr argumentin nga URL (argumenti është i pafiltruar, versioni i saktë është në skedarin për shkarkim) |
| 2 | $videoID=$_GET["videoID"]; |
| 3 | //kete argument ia kaloj funksionit tonë |
| 4 | $contentfaqja=shfaqvideo($videoID); |
Vendoseni modifikimin më sipër në fillim të faqes para tagut hapës html.
Mjafton të bridhni në YouTube për të marrë një identifikues unik dhe mund t’ia kaloni faqes si argument.
Tani që kemi një URL ku thërrasim një video të caktuar, mund të krijojmë një funksion që na shfaq një tufë videosh nga një autor (kanal).
Krijojmë një funksion të ri si më poshtë:
| PHP | | Kopjo Kodin | | ? |
| 01 | /** |
| 02 | * Shfaq videot sipas nje kanali te caktuar |
| 03 | */ |
| 04 | function shfaqvidskanal($autor="Infoarkiv"){ |
| 05 | require_once 'Zend/Gdata/YouTube.php'; |
| 06 | $yt = new Zend_Gdata_YouTube(); |
| 07 | //krijojme nje query |
| 08 | $query = $yt->newVideoQuery(); |
| 09 | //kalojme argumentin qe duam video vetem nga ky autor |
| 10 | $query->setAuthor($autor); |
| 11 | //percaktojme nje renditje te videove |
| 12 | $query->setOrderBy('updated'); |
| 13 | //percaktojme numrin maksimal te videove qe duam te marrim si rezultat |
| 14 | $query->setMaxResults(15); |
| 15 | //me ne fund ... terheqim videot |
| 16 | $videoFeed = $yt->getVideoFeed($query); |
| 17 | $content="Duke shfaqur rezultatet e kanalit: $autor<br />"; |
| 18 | //print_r ($videoFeed); |
| 19 | //bredhim vektorin e videove duke nxjerre rezultatin dhe duke ia kaluar nje variabli string |
| 20 | foreach ($videoFeed as $videoEntry) { |
| 21 | $videoThumbnails = $videoEntry->getVideoThumbnails(); |
| 22 | foreach($videoThumbnails as $videoThumbnail) { |
| 23 | $thumb=$videoThumbnail['url']; |
| 24 | $height='height=' . $videoThumbnail['height']; |
| 25 | $width='width=' . $videoThumbnail['width'] . "<br />"; |
| 26 | } |
| 27 | $content.= '<div style="margin-bottom:10px;float:left;width:130px;height:150px;"> |
| 28 | <a href="video.php?videoID='.$videoEntry->getVideoId().'"> |
| 29 | <img src="'.$thumb.'" width="94" height="70" alt="'.$videoEntry->getVideoTitle().'" /> |
| 30 | </a> |
| 31 | <a href="video.php?videoID='.$videoEntry->getVideoId().'">'.$videoEntry->getVideoTitle().'</a> |
| 32 | </div>'; |
| 33 | } |
| 34 | //ruaj nje titull per faqen |
| 35 | global $title, $description; |
| 36 | $title="Video nga kanali $autor"; |
| 37 | $description="Video nga kanali $autor"; |
| 38 | //kthej variablin string |
| 39 | return $content; |
| 40 | } |
Me anë të funksionit më sipër mund të shfaqim të gjitha videot e kanalit ‘Infoarkiv’ dhe tani kemi një tjetër funksion
Rregull, rregull, rregull!
Besoj do ishte më mirë të shfaqeshin fillimisht të gjitha videot e kanalit që unë kam zgjedhur, dhe më tej lexuesi mund të zgjidhte të kalonte tek ky kanal. Për këtë qëllim bëj një modifikim të vogël në krye të faqes:
| PHP | | Kopjo Kodin | | ? |
| 01 | <?php |
| 02 | $videoID=$_GET["videoID"]; |
| 03 | $kanalID=$_GET["kanali"]; |
| 04 | if (isset($videoID)){ |
| 05 | $contentfaqja=shfaqvideo($videoID); |
| 06 | }else if (isset($kanalID)){ |
| 07 | $contentfaqja=shfaqvidskanal($kanalID); |
| 08 | }else{ |
| 09 | $contentfaqja=shfaqvidskanal(); |
| 10 | } |
Kodi më sipër shërben si një router i vogël që drejton përdoruesin tek një funksionalitet i duhur. Nëse përdoruesi do thërriste vetëm scriptin video.php pa asnjë argument, atëherë atij do i shfaqeshin të gjitha videot e kanalit të paracaktuar.
Por nëse përdoruesi do thërriste videot e një kanali tjetër, psh të USAIDAlbania1, atëherë ne mund të thërrasim: http://www.domain.com/video.php?kanali=USAIDAlbania1 et voila, aty do shfaqen videot e këtij kanali. Thjesht e mbajmë në mendje këtë fakt dhe hidhemi më tej.
Nëse mbani mend, kur nxorrëm rezultatet e një video, thërritëm dhe një funksion me video të ngjashme. Është e llogjikshme që kur një shikues hap një video për të parë, ai do donte të shihte dhe video të tjera të ngjashme (ne nuk merremi me ngjashmërinë e videove, këtë detyrë e ka marrë përsipër YouTube. Se si, se pse e se nga e cakton ngjashmërinë, … ne nuk e dimë dhe nuk pyesim për këtë guidë).
Atëherë krijojmë një funksion tjetër të thjeshtë të cilit i kalon si argument një vektor me video-të ngjashme dhe ai i shfaq ato.
| PHP | | Kopjo Kodin | | ? |
| 01 | <?php |
| 02 | /** |
| 03 | * Funksion qe shfaq videot e ngjashme! |
| 04 | */ |
| 05 | function shfaqvideongjashme($relatedVideosFeed){ |
| 06 | $ngjashme="<div>"; |
| 07 | foreach ($relatedVideosFeed as $videoEntry) { |
| 08 | $videoThumbnails = $videoEntry->getVideoThumbnails(); |
| 09 | foreach($videoThumbnails as $videoThumbnail) { |
| 10 | $thumb=$videoThumbnail['url']; |
| 11 | $height='height=' . $videoThumbnail['height']; |
| 12 | $width='width=' . $videoThumbnail['width'] . "<br />"; |
| 13 | } |
| 14 | $ngjashme.= '<div style="margin-bottom:10px;float:left;width:130px;height:150px;"> |
| 15 | <a href="/video.php?videoID='.$videoEntry->getVideoId().'"> |
| 16 | <img src="'.$thumb.'" width="94" height="70" alt="'.$videoEntry->getVideoTitle().'" /> |
| 17 | </a><br /> |
| 18 | <a href="/video.php?videoID='.$videoEntry->getVideoId().'">'.iconv("UTF-8", "ISO-8859-1//IGNORE",$videoEntry->getVideoTitle()).'</a> |
| 19 | </div>'; |
| 20 | } |
| 21 | return $ngjashme."</div>"; |
| 22 | } |
| 23 | ?> |
Për ta aktivizuar këtë funksion shtojmë vetëm këto dy rrjeshta në funksionin shfaqvideo() mbi komentin e titullit dhe përshkrimit global:
| PHP | | Kopjo Kodin | | ? |
| 1 | $content.='<h2>Video te ngjashme</h2>'; |
| 2 | $content.= shfaqvideongjashme($relatedVideosFeed); |
| 3 | //Krijoj një titull për faqen dhe një description |
| 4 | $title=$videoEntry->getVideoTitle(); |
| 5 | $description=$videoEntry->getVideoDescription(); |
Duke shtuar kodin më sipër pranë çdo video, kemi mundësuar listimin e një sërë videosh të ngjashme pranë çdo video. Ofrimi i videove të tjera do mundësojë vizitorët të kapërcejnë nga një video në një video tjetër duke krijuar me qindra faqe brenda domainit tuaj, për të cilat ju nuk hostoni asgjë (dhe nuk keni pse shqetësoheni).
Nëse dëshironi ta zgjeroni më tej projektin, atëherë mund të lexoni tek YouTube API dhe të përpiqeni të zgjeroni funksionalitetin e faqes. Një ushtrim shumë i lehtë do ishte të shtonit një formë kërkimi për video sipas një termi. Më besoni që është shumë e lehtë po të lexoni pak dokumentacionin dhe do i jepte faqes suaj një vizion më të plotë!








Tung Armand sapo mbarova ket mesim
buu qe 30/40 min ne te
shume interesante
te faleminderit shume
Kalo mire
Pershendetje
kur shkarkova scripten qe ju keni postu hapa video.php me Macromedia Dreamweaver 8 por gjithqka ishte mir por une kam vetem nje pytje se a mundem ne qat video.php vetem te ndryshoj Id e videos te shfaq nje video ne faqen time sikur tek kjo demo qe keni shfaq te jen videot ne futboll dmth te gjitha videot besoj se me kuptoni