Jump to content

avidorh

New Members
  • Posts

    3
  • Joined

  • Last visited

avidorh's Achievements

Newbie

Newbie (1/5)

0

Reputation

  1. Thanks, I will appreciate your help here is the json array: { "kind": "youtube#searchListResponse", "etag": "\"iDqJ1j7zKs4x3o3ZsFlBOwgWAHU/nTN8Qi2VMRoeekjg0xcBleX0lCo\"", "nextPageToken": "CAUQAA", "pageInfo": { "totalResults": 468, "resultsPerPage": 5 }, "items": [ { "kind": "youtube#searchResult", "etag": "\"iDqJ1j7zKs4x3o3ZsFlBOwgWAHU/5DqDs_6XSMjfUWxD3BONxV7LIhU\"", "id": { "kind": "youtube#video", "videoId": "33kl0iQByME" }, "snippet": { "publishedAt": "2014-10-31T14:44:52.000Z", "channelId": "UCEGUP3TJJfMsEM_1y8iviSQ", "title": "The Power of $q by Dave Smith at ng-europe 2014", "description": "Dave Smith tells you everything you need to know about $q, promises with angular, nutella and bacon. Slides: http://goo.gl/LK7pHh.", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/33kl0iQByME/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/33kl0iQByME/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/33kl0iQByME/hqdefault.jpg" } }, "channelTitle": "", "liveBroadcastContent": "none" } }, { "kind": "youtube#searchResult", "etag": "\"iDqJ1j7zKs4x3o3ZsFlBOwgWAHU/McNdbSHHAQ2P32rqGlvz8kpQRfk\"", "id": { "kind": "youtube#video", "videoId": "cdG_T6ufcbE" }, "snippet": { "publishedAt": "2013-11-05T21:30:54.000Z", "channelId": "UCutKx7_WN6r2iduofUe7mlw", "title": "AngularJS Promises with $q", "description": "Angular uses a subset of Q called $q for creating promises. =========================================== **Like what you saw? Be sure to ...", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/cdG_T6ufcbE/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/cdG_T6ufcbE/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/cdG_T6ufcbE/hqdefault.jpg" } }, "channelTitle": "joemaddalone", "liveBroadcastContent": "none" } }, { "kind": "youtube#searchResult", "etag": "\"iDqJ1j7zKs4x3o3ZsFlBOwgWAHU/o2hyDPkOe_jL4CtAu_wJSrpEBuo\"", "id": { "kind": "youtube#video", "videoId": "uz0_zl6m07c" }, "snippet": { "publishedAt": "2013-02-23T07:21:28.000Z", "channelId": "UCKW92i7iQFuNILqQOUOCrFw", "title": "AngularJS Promises with $q.mp4", "description": "", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/uz0_zl6m07c/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/uz0_zl6m07c/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/uz0_zl6m07c/hqdefault.jpg" } }, "channelTitle": "johnlindquist", "liveBroadcastContent": "none" } }, { "kind": "youtube#searchResult", "etag": "\"iDqJ1j7zKs4x3o3ZsFlBOwgWAHU/Qmy-6zT-6IZk-wYnqKrvldUs_P0\"", "id": { "kind": "youtube#video", "videoId": "_Wl87xy-rLE" }, "snippet": { "publishedAt": "2015-02-03T06:29:17.000Z", "channelId": "UCdlukvTGTdskK7bHuGhPrgA", "title": "#6.2 Using the Angular $q Library", "description": "Building a Application with AngularJS For Beginner.. How to Create Single Page with AngularJS, Create Application Wint AngularJS..", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/_Wl87xy-rLE/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/_Wl87xy-rLE/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/_Wl87xy-rLE/hqdefault.jpg" } }, "channelTitle": "", "liveBroadcastContent": "none" } }, { "kind": "youtube#searchResult", "etag": "\"iDqJ1j7zKs4x3o3ZsFlBOwgWAHU/GGCN3disXjmFC9IEmEIikyOPw84\"", "id": { "kind": "youtube#video", "videoId": "FsOmdsICNYE" }, "snippet": { "publishedAt": "2013-08-08T10:59:31.000Z", "channelId": "UClOccJXlB6zbCRAFigEc6EQ", "title": "Deferred and Promise objects in Angular js", "description": "Apologies for the shrunken video and poor sound. We'll do better next time! Overview Basics of Promise and deferred objects in Angular Combining promises ...", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/FsOmdsICNYE/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/FsOmdsICNYE/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/FsOmdsICNYE/hqdefault.jpg" } }, "channelTitle": "", "liveBroadcastContent": "none" } } ] } and the php code: <!DOCTYPE a PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!-- _pre --> <html> <meta http-equiv="Content-Type" content="text/html; charset=utf8"> <head> <style type="text/css"> body { font-family:verdana,arial,sans-serif; font-size:10pt; margin:30px; background-color:#ffe97f; } </style> <script src="../js/jquery.min.js"></script> <script src="../js/actions.js"></script> <script type="text/javascript"> function onFreeSearch(artistId, inEnglish) { //alert(artistId); var searchInput = document.getElementById("input_free_search"); var searchTerm = searchInput.value; if (searchTerm == null || searchTerm == "") { alert("הכנס ערך לחיפוש"); return; } var targetUrl = "artist_search.php?id=" + artistId + "&start=1&results=10&type=rel&searchTerm=" + searchTerm; if (inEnglish == true) { targetUrl += "&eng=1"; } parent.content.location.href = targetUrl; } function onAddClip(clipId) { var div = document.getElementById("div_" + clipId); // Artist ID resides in each DIV var elementName = document.getElementById("name_" + clipId); // Title input field var elementType = document.getElementById("type_" + clipId); // Type combo var elementLyrics = document.getElementById("lyrics_" + clipId); // Has lyrics check box var elementThumb = document.getElementById("thumb_" + clipId); // Has lyrics check box var name = elementName.value; var type = elementType.selectedIndex; var lyrics = elementLyrics.checked ? 1 : 0; var artistId = div.getAttribute("name"); var duration = elementThumb.getAttribute("duration"); if (name != null && name != "") { $.post("../db/add_clip.php", { artistId: artistId, name: name, clipId: clipId, type: type, duration: duration, lyrics: lyrics }, function(data) { if (data == "success") { div.style.background = "#a1f861"; // Convert the add button into an update button var addButton = document.getElementById("addButton_" + clipId); addButton.value = "עדכן"; addButton.onclick = function() { onUpdateClip(clipId); }; // Update the artist songs list - add added clip to the end var existingSongs = document.getElementById("existing_songs"); var newSong = document.createElement('div'); newSong.value = name; existingSongs.appendChild(newSong); } else { alert(data); } }); } else { alert("שם השיר לא יכול להיות ריק"); } } function onAddArtist(clipId) { $.post("../public/getallartists.php", null, function(data) { // Add dropdown to div var clipDiv = document.getElementById("div_" + clipId); var curHtml = clipDiv.innerHTML; var selectHtml = "<select style='width:100px;' id='id_add_artist_" + clipId + "'>"; var artistData = jQuery.parseJSON(data); var test = ""; $.each(artistData.artists, function (i, artist) { selectHtml += "<option value='" + artist.id + "'>" + artist.name + "</option>"; }); curHtml += selectHtml; curHtml += "<input type='button' value='הוסף' onClick=\"onAddArtistSelected('" + clipId + "')\"/>"; clipDiv.innerHTML = curHtml; }); } </script> </head> <body style="direction:rtl" align="center"> <?php require_once '../db/db_ozen_queries.php'; require_once '../utils/ui_utils.php'; require_once '../utils/ozen_ui_utils.php'; require_once '../utils/yt_utils.php'; // First initialize Database and increase load time limit ob_start(); set_time_limit(600000); OBaseDB::init('ozen'); $artist_id = isset($_GET["id"]) ? $_GET["id"] : null; $start = isset($_GET["start"]) ? $_GET["start"] : 1; $results = isset($_GET["results"]) ? $_GET["results"] : 10; $type = isset($_GET["type"]) ? $_GET["type"] : "viewCount"; $search_term = isset($_GET["searchTerm"]) ? $_GET["searchTerm"] : null; $eng = isset($_GET["eng"]) ? $_GET["eng"] : null; if ($artist_id == null) { echo "Must provide id!"; die(); } $artist = getArtist($artist_id); if ($artist == null) { echo "id {$artist_id} Was not found in DB!"; die(); } if ($search_term != null) { if ($eng != null) { echo "<h2>תוצאת חיפוש ל{$artist['ar_engname']} ($search_term)</h2>"; } else { echo "<h2>תוצאת חיפוש ל{$artist['ar_hebname']} ($search_term)</h2>"; } } else { if ($eng != null) { echo "<h2>תוצאת חיפוש ל{$artist['ar_engname']}</h2>"; } else { echo "<h2>תוצאת חיפוש ל{$artist['ar_hebname']}</h2>"; } } // Update orderby type if ($type == "rel") { $type = "relevance"; } $q = null; // Run the search using the youtube API if ($search_term != null) { if ($eng != null) { $q = str_replace(" ", "+", $search_term) . "+" . str_replace(" ", "+", $artist['ar_engname']); } else { $q = str_replace(" ", "+", $search_term) . "+" . str_replace(" ", "+", $artist['ar_hebname']); } } else { if ($eng != null) { $q = str_replace(" ", "+", $artist['ar_engname']); } else { $q = str_replace(" ", "+", $artist['ar_hebname']); } } $q = urlencode($q); //$feedURL = "http://gdata.youtube.com/feeds/api/videos?q={$q}&orderby={$type}&max-results={$results}&start-index={$start}"; $feedURL = "https://www.googleapis.com/youtube/v3/search?part=snippet%20&q={$q}&type=video&key=AIzaSyAtuq6UNWVrGvElJZxXOMGrB7mnh9yczuM"; //echo $feedURL; //die(); //Call the API $json_file = file_get_contents($feedURL); // convert the string to a json object $jfo = json_decode($json_file); $counts = $jfo->pageInfo->resultsPerPage; $total = $jfo->pageInfo->totalResults; $startOffset = 1; $endOffset = ($startOffset-1) + $counts; if ($endOffset > $total) { $endOffset = $total; } // read the title value //$title = $jfo->result->title; // copy the posts array to a php var //$posts = $jfo->result->posts; // listing posts //foreach ($posts as $post) { // echo $post->title; // Call the API //$xml = simplexml_load_file($feedURL); // //$counts = $xml->children('http://a9.com/-/spec/opensearchrss/1.0/'); //$total = $counts->totalResults; //$startOffset = $counts->startIndex; //$endOffset = ($startOffset-1) + $counts->itemsPerPage; //if ($endOffset > $total) { // $endOffset = $total; //} // Add top pager getArtistSearchPager($start, $endOffset, $results, $total, $artist['ar_id'], $type, $search_term, $eng); echo " חיפוש חופשי:" . createInputField("input_free_search", "", 150) . "<input type='button' value='חפש' onClick=\"onFreeSearch('{$artist_id}', false)\"/>" . "<input type='button' value='חפש באנגלית' onClick=\"onFreeSearch('{$artist_id}', true)\"/>"; // Show available artists songs on the left side echo "<div id='existing_songs' style='background-color:#FFD700;width:300px;float:left;align:right;'>" . "<h3>שירים קיימים</h3>"; $artist_songs = getArtistSongs($artist_id, 'name'); $number = 1; if ($artist_songs != null) { while($artist_song = mysql_fetch_assoc($artist_songs)) { echo "<div align='right'>" . $number . ". " . $artist_song['song_hebname'] . "(" . getClipTypeText($artist_song['clip_type']) . ")</div><br>"; $number++; } } else { echo "עדיין לא הוגדרו שירים לאמן זה"; } echo "</div>"; //echo "<div><div>test</div><br><div>test</div><br><div>test</div><br>"; // now show results foreach ($json_file->kind as $kind) { // get nodes in media: namespace for media information $media = $kind->title('http://search.yahoo.com/mrss/'); // get video player URL $attrs = $media->group->player->attributes(); $watch = $attrs['url']; $ytid = extractYTId($watch); // Check to see if the clip already exists in the DB. If it exists, use an update instead of add $clip = getClip($ytid); // get video thumbnail $attrs = $media->group->thumbnail[0]->attributes(); $thumbnail = $attrs['url']; $attrs = $media->group->content->attributes(); $duration = $attrs['duration']; $bkcolor = null; if ($clip != null) { $perf_artists = getPerfArtists($clip['perf_id']); $same_artist = false; if ($perf_artists != null) { while($perf_artist = mysql_fetch_assoc($perf_artists)) { if ($perf_artist['ar_id'] == $artist_id) { $same_artist = true; } } } $bkcolor = $same_artist == true ? "#a1f861" : "#0094FF"; } else { $bkcolor = "#ffe97f"; } echo "<div style='background-color:{$bkcolor};' id='div_{$ytid}' name='{$artist_id}' align='right' height='80'>" . getYTThumb($ytid, $duration) . createInputField("name_{$ytid}", $clip != null ? $clip['song_hebname'] : $media->group->title) . createClipTypeSelector($ytid, $clip != null ? $clip['clip_type'] : 0) . createLyricsCheckbox($ytid, $clip != null ? $clip['clip_lyrics'] : false) . ($clip != null ? "<input type='button' value='עדכן' style='margin-right:50px;' onClick=\"onUpdateClip('{$clip['clip_ytid']}')\"/>" : "<input id='addButton_{$ytid}' type='button' value='הוסף' style='margin-right:50px;' onClick=\"onAddClip('{$ytid}')\"/>") . "<input type='button' value='הוסף אמן' onClick=\"onAddArtist('{$clip['clip_ytid']}')\"/>" . //"<a target='leftMenu' href='song_lyrics.php?songid={$song['song_id']}&arid=" . urlencode($artist['ar_id']) . "'><input type='button' value='מילים' /></a>" . "</div><br>"; } //echo "</div>"; // Add bottom pager getArtistSearchPager($start, $endOffset, $results, $total, $artist['ar_id'], $type, $search_term);
  2. Hello, I am new to PHP development, I am trying to change my php code to work with youtube API v3 instead of youtube API v2, instead of XML I need to work with JSON, I did some changes and got this error: Notice: Trying to get property of non-object in Can someone please explain what does it mean and instruct me how to continue? Thanks, Avidor
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.