Показаны сообщения с ярлыком Google. Показать все сообщения
Показаны сообщения с ярлыком Google. Показать все сообщения

вторник, 22 декабря 2009 г.

Youtube API, Поиск по видео

Вот столкнулся недавно с задачей, поиска видео на Youtube из моего приложения.

Как оказалось задача проста. В Youtube Api с использованием PHP все вызовы идут с использованием Zend Framewokr.

Вот собственно функция для поиска видео:

function searchAndPrint($searchTerms)
{
  $yt = new Zend_Gdata_YouTube(); 
  $query = $yt->newVideoQuery();
  $query->setOrderBy('viewCount');
  $query->setRacy('include');
  $query->setVideoQuery($searchTerms);
  $videoFeed = $yt->getVideoFeed($query);
  printVideoFeed($videoFeed, 'Search results for: ' . $searchTerms);
}

Где функция вывода на экран (printVideoFeed):

function printVideoFeed($videoFeed, $displayTitle = null) 
{
  $count = 1;
  if ($displayTitle === null) {
    $displayTitle = $videoFeed->title->text;
  }
  echo '

' . $displayTitle . "

\n"; echo "
\n";
  foreach ($videoFeed as $videoEntry) {
    echo 'Entry # ' . $count . "\n";
    printVideoEntry($videoEntry);
    echo "\n";
    $count++;
  }
  echo "
\n"; }
 
 
function printVideoEntry($videoEntry, $tabs = "") 
{
  // the videoEntry object contains many helper functions that access the underlying mediaGroup object
  echo $tabs . 'Video: ' . $videoEntry->getVideoTitle() . "\n";
  echo $tabs . "\tDescription: " . $videoEntry->getVideoDescription() . "\n";
  echo $tabs . "\tCategory: " . $videoEntry->getVideoCategory() . "\n";
  echo $tabs . "\tTags: " . implode(", ", $videoEntry->getVideoTags()) . "\n";
  echo $tabs . "\tWatch page: " . $videoEntry->getVideoWatchPageUrl() . "\n";
  echo $tabs . "\tFlash Player Url: " . $videoEntry->getFlashPlayerUrl() . "\n";
  echo $tabs . "\tDuration: " . $videoEntry->getVideoDuration() . "\n";
  echo $tabs . "\tView count: " . $videoEntry->getVideoViewCount() . "\n";
  echo $tabs . "\tRating: " . $videoEntry->getVideoRatingInfo() . "\n";
  echo $tabs . "\tGeo Location: " . $videoEntry->getVideoGeoLocation() . "\n";
  
  // see the paragraph above this function for more information on the 'mediaGroup' object
  // here we are using the mediaGroup object directly to its 'Mobile RSTP link' child
 foreach ($videoEntry->mediaGroup->content as $content) {
    if ($content->type === "video/3gpp") {
      echo $tabs . "\tMobile RTSP link: " . $content->url . "\n";
    }
  }
  
  echo $tabs . "\tThumbnails:\n";
  $videoThumbnails = $videoEntry->getVideoThumbnails();

  foreach($videoThumbnails as $videoThumbnail) {
    echo $tabs . "\t\t" . $videoThumbnail['time'] . " - " . $videoThumbnail['url'];
    echo " height=" . $videoThumbnail['height'];
    echo " width=" . $videoThumbnail['width'];
    echo "\n";
  }
} 

Вот собственно и все. А дальше уже оформляйте вывод как вам нравится:). Удачи

суббота, 7 февраля 2009 г.

Ebay Api Введение

По работе, мне пришлось столкнуться с аукционом Ebay, а точнее с Ebay Api о существовании которого я раньше не догадывался. Думаю что такое Ebay.com знают все пользователи интернета. А если не знают, то объясню – это самый крупный интернет-аукцион в мире, имеющий кучу возможностей, и позволяющий продать или купить все что угодно (в разумных пределах конечно).

И у этого самого аукциона, как оказалось, имеется свое Api , которое позволяет получать полный доступ к базе данных аукциона и оперировать нужной информацией.
Для того чтобы начать работать, необходимо зарегистрироваться на сайте http://developer.ebay.com/

Эта программа для разработчиков, позволяет манипулировать данными с аукциона, производить поиск, авторизацию, добавлять новые аукционы, получать данные пользователей и т.д..

API делиться несколько разделов, в зависимости от функций, вот основные из них:
  • Shopping API – позволяет производить поиск по аукционам, просматривать аукционы
  • Merchandising API – позволяет получать информацию по популярным аукционам, и текущим сделкам.
  • Trading API – позволяет получить доступ к защищенным данным, производить авторизацию, получать данный пользователя

Языки программирования, для которых существует API:
  • 1) .NET, C#, ASP, VB
  • 2) PHP
  • 3) Java
  • 4) JavaScript

Меня будет интересовать PHP.

Работа всей системы построена на XML запросах, т.е. мы генерируем какую-либо XML , по определенным правилам, отсылаем ее на Ebay, и получаем ответ на наш запрос, также в виде XML. Если вы не знаете правильно ли вы сгенерировали XML есть возможность проверить ее тут https://developer.ebay.com/DevZone/build-test/test-tool/ (естественно необходимо авторизироваться) Также на сайте http://developer.ebay.com/ можно скачать примеры использования API.

Также для работы вам потребуются ключи, которые необходимо сгенерировать для вашего приложения.

Пример:



Как видно из этого скрина, есть 2 вида ключей, это Production keys и Sandbox Key. Чтобы было понятно, Production keys – это ключи, которые позволяют работать с сайтом ebay.com. A Sandbox Key – это для работы с sandbox.ebay.com, сайтом который предназначен для разработчиков, так называемая тестовая площадка.
Если вы хотите использовать Trading API, то также прийдется сгенерировать User Tokens.

В следующей статье расскажу как производить XML запросы и обрабатывать ответы. Пока.

четверг, 25 сентября 2008 г.

Google Maps API - введение

Решил изучить немного Google Maps API. Ну и задокументировать чтобы потом мог легко вспомнить. Авось и не только мне пригодится.

Google Maps API позволяет использовать карты Google для Ваших сайтов. Имеется конечно и официальная документация (пока что вся на Английском).

http://code.google.com/intl/ru/apis/maps/documentation/

Начнемс…
Сначала необходимо зарегистрировать свой сайт и получить ключ. Это можно сделать тут:

http://code.google.com/apis/maps/signup.html

По окончании регистрации Вам выдадут ключик. И тут же будет пример кода использования карты.



Как можно легко догадаться, этот ключик используется при подключении библиотеки, вот так:


<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;
key=ABQIAAAAqYpqANy2ZhPGgzZQGir01BTif9xST6-
EmBWoJN14Z8KLoR80XBTf_F2pFIKVTQmZq4YaGqQz66pNAg"
type="text/javascript"></script>




А вот код самой просто странички



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps JavaScript API Example</title>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIA"
type="text/javascript"></script>

<script type="text/javascript">

//<![CDATA[

function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
}
}

//]]>
</script>
</head>

<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 500px; height: 300px"></div>
</body>
</html>



А в теге body необходимо размещение обьекта с id=’map’

Теперь немного о функциях управления картой.

1) map.setCenter(new GLatLng(37.4419, -122.1419), 13);
Функция задает центр карты. Т.е. при открытии страницы с картой, она будет отцентрована по заданным координатам (необходимые координаты можно получить зайдя на maps.google.com и найдя нужное место).

2) setMapType() – задает отображаемый тип карты, которых на данный момент существует 3 штуки

a. Спутник - map.setMapType(G_NORMAL_MAP);
b. Нормальная - map.setMapType(G_SATELLITE_MAP);
c. Смешанная - map.setMapType(G_HYBRID_MAP);

3) Также можно добавить элементы управления картой

map.addControl(new GSmallMapControl()); - зумирование, и стрелочки перемещения.
map.addControl(new GLargeMapControl()); - аналогично предыдущему, но отображается и шкала зумирования
map.addControl(new GSmallZoomControl()); - отображается исключительно кнопки «+» и «-»
map.addControl(new GMapTypeControl()); - кнопки переключения между режимами карты
map.addControl(new GOverviewMapControl()); - отображение миникарты в правом нижнем углу

4) Ну и самое интересное это размещение меток на карте.

var marker = new GMarker(new GLatLng(37.4419, -122.1419));
map.addOverlay(marker);

И подписи к ним:

var html="Тут что-то расположено";
marker.openInfoWindowHtml(html);


5) map.panTo(new GLatLng(37.4569, -122.1569)) – автоматическое передвижение карты. Т.е. можно поставить прерывание например функцией window.setTimeout, и потом переместить карту в какую-либо точку.

6) Данный пример реагирует на перемещение карты и отображает новые координаты центра:

map.setCenter(new GLatLng(37.4419, -122.1419), 13);
GEvent.addListener(map, "moveend", function() {
var center = map.getCenter();
document.getElementById("message").innerHTML = center.toString();
});


7) Вывод окна сообщения без установки метки.

map.openInfoWindow(map.getCenter(), document.createTextNode
("Привет!"));

8) А данный код рисует произвольную ломанную через 5 точек

var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
var points = [];
for (var i = 0; i < 5; i++) {
points.push(new GLatLng(southWest.lat() + latSpan *
Math.random(), southWest.lng() + lngSpan * Math.random()));
}
points.sort(function(p1, p2) {
return p1.lng() - p2.lng();
});
map.addOverlay(new GPolyline(points));





9) Перехват щелчков по карте. При перехвате события «click» (щелчок) мы получаем два параметра:
• щелкнут маркер;
• координаты щелчка.
Если щелкнут не маркер (а карта), то первый параметр равен нулю.

В листинге 1 пользователь щелкает по карте и по координатам щелчка появляется маркер. Когда пользователь щелкает по маркеру, маркер удаляется.

Листинг 1.

var map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
GEvent.addListener(map, "click", function(marker, point) {
if (marker) {
map.removeOverlay(marker);
} else {
map.addOverlay(new GMarker(point));
}
});

10) Вывод инфоокон над маркерами. В следующем коде мы перехватываем клик и показываем окно над маркером. Здесь используются замыкания JavaScript для создания контента инфоокна для каждого маркера.

// Создаем маркер с номером point, заданным и текстом label


function createMarker(point, number) {
var marker = new GMarker(point);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml("Marker #" + number + "");
});
return marker;
}
// Размещаем 10 маркеров по случайным координатам
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() — southWest.lng();
var latSpan = northEast.lat() — southWest.lat();
for (var i = 0; i < 10; i++) {
var point = new GLatLng(southWest.lat() + latSpan *
Math.random(), southWest.lng() + lngSpan * Math.random());
map.addOverlay(createMarker(point, i + 1));
}





11) Информационные окна с закладками. Вторая версия Google Maps API дает нам классы openInfoWindowTabs() и GinfoWindowTab, поддерживающие закладки, которым можно присваивать отдельные имена. Пример в листинге 2 показывает простое окно с закладками над маркером.

Листинг 2.
 
var map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
// Содержимое инфоокна
var infoTabs = [
new GInfoWindowTab("Закладка #1", "Содержимое закладки #1"),
new GInfoWindowTab(" Закладка #2", "Содержимое закладки #2")
];
// Размещает маркер в центре окна автоматически.
var marker = new GMarker(map.getCenter());
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowTabsHtml(infoTabs);
});
map.addOverlay(marker);
marker.openInfoWindowTabsHtml(infoTabs);

12) Создание пользовательских пиктограмм. Пример в листинге 3 показывает мини-маркеры. Создавая новую пиктограмму, мы должны определить изображение переднего плана, теневое изображение и его координаты.


var map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
// Создание пиктограммы для "маленького" маркера
var icon = new GIcon();
icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
icon.iconSize = new GSize(12, 20);
icon.shadowSize = new GSize(22, 20);
icon.iconAnchor = new GPoint(6, 20);
icon.infoWindowAnchor = new GPoint(5, 1);
// "Разбрасываем" 10 маркеров по случайным координатам
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() — southWest.lng();
var latSpan = northEast.lat() — southWest.lat();
for (var i = 0; i < 10; i++) {
var point = new GLatLng(southWest.lat() + latSpan *
Math.random(), southWest.lng() + lngSpan * Math.random());
map.addOverlay(new GMarker(point, icon));
}




13) Перемещаемые маркеры.
Маркеры — интерактивные объекты, которые (если это необходимо) могут перемещаться пользователем посредством мыши. В приведенном примере мы перемещаем маркер по карте, это сделано благодаря нескольким перехватываемым простым событиям. Перемещаемый маркер поддерживает четыре события:
• щелчок (click);
• начало перетаскивания (dragstart);
• перетаскивание (drag);
• отпускание (dragend).
По умолчанию маркеры доступны только для кликов и недоступны для «таскания», но эта возможность очень просто реализуется добавлением дополнительного параметра. У перемещаемых маркеров есть также параметр «бодрость» (bouncy). Если он выставлен как true (по умолчанию), то при подхватывании и отпускании маркер весело подпрыгивает. Если вам не нравится такое «безрассудное» поведение маркера — просто выставьте bouncy=false при создании маркера, и он будет приземляться изящно (см. листинг).


var map = new GMap2(document.getElementById("map"));
var center = new GLatLng(37.4419, -122.1419);
map.setCenter(center, 13);
var marker = new GMarker(center, {draggable: true});
GEvent.addListener(marker, "dragstart", function() {map.closeInfoWindow();});
GEvent.addListener(marker, "dragend", function() {marker.openInfoWindowHtml("Веселый, бодрый маркер");});
map.addOverlay(marker);

14) Использование XML и асинхронного HTTP на картах. Пожалуй, одна из самых интересных возможностей Google Maps API. Пример в листинге загружает с сервера указанный XML-файл с координатами и размещает по ним маркеры.

Содержимое data.xml:





Листинг.
var map = new GMap2(document.getElementById(«map»));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
GDownloadUrl(«data.xml», function(data, responseCode) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName(«marker»);
for (var i = 0; i < point =" new" id="10869" href="http://code.google.com/intl/ru/apis/maps/documentation/">http://code.google.com/intl/ru/apis/maps/documentation/