Как получить аватар пользователя через API
|
|
|
2013-11-08Дата: Пятница, 08.11.2013, 02:50 | Сообщение # 1 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
Как получить аватар пользователя через API
Собственно, простенький пример по теме: Ликбезз по юкоз API. Получаем ссылку на аватар или любые данные, по примеру, доступные из API.
Собственно, все просто. Совершается запрос на страницу пользователя: Код http://likbezz.ru/api/index/8-1 Где: - последняя цифра == ID пользователя, в данном случае - 1 ---
Примечание: Если гостям запрещено просматривать профиль, то данные будут недоступны. Если нужно получить данные текущего пользователя - того сто смотрит страницу, то можно делать запрос просто на адрес: Код http://likbezz.ru/api/index/8 - адрес профиля текущего пользователя. ---
Вот такой простенький листинг: Код <span id="apiCont"></span> <script type="text/javascript"> $.get('/api/index/8',function(d,b,c){ var cont=$('#apiCont'),name=$('name',d); if(c.status!='200'){return cont.html('<b style="color:#F33;">Извините, но произошла ошибка: «'+c.status+'» '+c.statusText+'!</b>');} for(i=0,j=name.size();i<j;i++){ var element=$(name[i]); if(element.text()=='USER_AVATAR'){ //alert($('string',element.parent()).text()); cont.html('<img src="'+$('string',element.parent()).text()+'" />'); } } }); </script> Где: Код <span id="apiCont"></span> - блок куда выводится данные - аватар или сообщение об ошибке.
Код if(c.status!='200'){return cont.html('<b style="color:#F33;">Извините, но произошла ошибка: «'+c.status+'» '+c.statusText+'!</b>');} - проверка на положительность запроса, не обязательная функция, но имеет место быть. При ошибке выводит код ошибки и статус.
Код for(i=0,j=name.size();i<j;i++){ var element=$(name[i]); if(element.text()=='USER_AVATAR'){ //alert($('string',element.parent()).text()); cont.html('<img src="'+$('string',element.parent()).text()+'" />'); } } - проходимся циклом по всем тегам «name» выискивая нужный нам блок, и как только значение будет == «USER_AVATAR» берем из тега «string» родительского блока значение - оно и будет ссылкой на аватар.
Код cont.html('<img src="'+$('string',element.parent()).text()+'" />'); - выводим аватарку в блок. ---
☑ Пример: http://likbezz.ru/_example/_api/2013/get_api_user_avatar.html
| | |
|
|
2013-11-08Дата: Пятница, 08.11.2013, 03:07 | Сообщение # 2 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
Если вы точно знаете, а узнать достаточно просто - надо всего лишь посчитать кол-во элементов до нужного значения. Сейчас покажу. Допустим данные пользователя. Ответ сервера вот такой: Код <methodResponse> <params> <param> <value><struct> <member><name>USER_ID</name><value><i4>1</i4></value></member> <member><name>USER_PROFILE</name><value><string>http://likbezz.ru/index/8-1</string></value></member> <member><name>USER_GROUPID</name><value><i4>4</i4></value></member> <member><name>USER_GROUPNAME</name><value><string>Администраторы</string></value></member> <member><name>USER_USERNAME</name><value><string>likbezz</string></value></member> <member><name>USER_NAME</name><value><string>Anton</string></value></member> <member><name>USER_GENDER</name><value><string>1</string></value></member> <member><name>USER_AVATAR</name><value><string>http://likbezz.ru/avatar/41/810935.gif</string></value></member> <member><name>USER_EMAIL</name><value><string>fflesh3@mail.ru</string></value></member> <member><name>USER_ISVERIFIEDEMAIL</name><value><i4>1</i4></value></member> <member><name>USER_HOMEPAGE</name><value><string>http://likbezz.ru/</string></value></member> <member><name>USER_COUNTRY</name><value><string>Российская Федерация</string></value></member> <member><name>USER_CITY</name><value><string>Москва</string></value></member> <member><name>USER_ICQ</name><value><string>313615211</string></value></member> <member><name>USER_AOL</name><value><string/></value></member> <member><name>USER_MSN</name><value><string/></value></member> <member><name>USER_YAHOO</name><value><string/></value></member> <member><name>USER_BIRTHDAY</name><value><string>25 Апреля 1982</string></value></member> <member><name>USER_ZODIAC</name><value><string>Телец</string></value></member> <member><name>USER_AGE</name><value><i4>31</i4></value></member> <member><name>USER_IPADDRESS</name><value><string>83.167.116.180</string></value></member> <member><name>USER_BANNEDTILL</name><value><string/></value></member> <member><name>USER_RANK</name><value><string>10</string></value></member> <member><name>USER_RANKNAME</name><value><string>Генералиссимус</string></value></member> <member><name>USER_REPUTATION</name><value><string>386</string></value></member> <member><name>USER_AWARDS</name><value><i4>0</i4></value></member> <member><name>USER_REGTIMESTAMP</name><value><i4>1220743043</i4></value></member> <member><name>USER_LOGTIMESTAMP</name><value><i4>1383862918</i4></value></member> <member><name>USER_STATUS</name><value><string/></value></member> <member><name>USER_UNETPROFILE</name><value><string/></value></member> <member><name>USER_UNETID</name><value><i4>0</i4></value></member> </struct></value> </param> </params> </methodResponse>
Как можно заметить все данные содержаться в теге «string».
Так вот, если вам надо получить значение какого-то одного или нескольких полей, совершенно необязательно перебирать циклом все, можно просто указать порядковый номер этого поля.
Например, тот же аватар: Листинг: Код <span id="apiCont"></span> <script type="text/javascript"> $.get('/api/index/8',function(d){ var cont=$('#apiCont'),string=$(d.getElementsByTagName('string')[5]).text(); if(string.length>10){ cont.html('<img src="'+string+'" alt="" />'); } }); </script>
Где: Код <span id="apiCont"></span> - блок для вывода данных.
Код string=$(d.getElementsByTagName('string')[5]).text(); - сразу получаем содержание 5-го элемента «string» который отвечает за аватар.
- проверяем наличие аватара - ведь его может и не быть )
Код cont.html('<img src="'+string+'" alt="" />'); - выводим в блок картинку с адресом аватарки текущего пользователя. ---
☑ Пример: http://likbezz.ru/_example/_api/2013/get_api_user_avatar_eq.html ...
| | |
|
|
2013-11-08Дата: Пятница, 08.11.2013, 03:22 | Сообщение # 3 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
Таким же образом можно получить и Имя пользоателя, и пол и тп и тд - все то что доступно с данной страницы.
Листинг: Код <span id="apiCont"></span> <script type="text/javascript"> $.get('/api/index/8',function(d){ var cont=$('#apiCont'),elements=d.getElementsByTagName('string'),html='', avatar=$(elements[5]).text(), username=$(elements[2]).text(), gender=$(elements[4]).text(), city=$(elements[9]).text(); html+='Привет: <b>'+username+'</b><br />'; if(gender.length>0){ gender=(gender=1?'ты мужик':'вы девушка') html+='Поздравляю, '+gender+'<br />'; }; if(avatar.length>0){ html+='Твой аватар: <br /><img src="'+avatar+'" alt="" /><br />'; }; if(city.length>0){ html+='Твой город: '+city+'<br />'; }; cont.html(html); }); </script>
Имеем:
---
☑ Пример: http://likbezz.ru/_example/_api/2013/get_api_user_avatar_over.html ..
Если нет автара, или любого значения другого поля, по подобию, правим скрипт так: Код <span id="apiCont"></span> <script type="text/javascript"> $.get('/api/index/8',function(d,b,c){ var cont=$('#apiCont'),name=$('name',d); if(c.status!='200'){return cont.html('<b style="color:#F33;">Извините, но произошла ошибка: «'+c.status+'» '+c.statusText+'!</b>');} for(i=0,j=name.size();i<j;i++){ var element=$(name[i]); if(element.text()=='USER_AVATAR'){ if($('string',element.parent()).text().length>10){ cont.html('<img src="'+$('string',element.parent()).text()+'" />'); }else{ cont.html('<img src="свою_сылку" />'); } } } }); </script>
То бишь, вешаем проверку на наличие символов в поле Вот в этом месте:
Код if(element.text()=='USER_AVATAR'){ if($('string',element.parent()).text().length>10){ cont.html('<img src="'+$('string',element.parent()).text()+'" />'); }else{ cont.html('<img src="свою_сылку" />'); } }
Или покороче чуть: Код <span id="apiCont"></span> <script type="text/javascript"> $.get('/api/index/8',function(d,b,c){ var cont=$('#apiCont'),name=$('name',d); if(c.status!='200'){return cont.html('<b style="color:#F33;">Извините, но произошла ошибка: «'+c.status+'» '+c.statusText+'!</b>');} for(i=0,j=name.size();i<j;i++){ var element=$(name[i]); if(element.text()=='USER_AVATAR'){ cont.html('<img src="'+(($('string',element.parent()).text().length>10)?$('string',element.parent()).text():'свою_сылку')+'" />'); } } }); </script>
| | |
|
|
2014-01-14Дата: Вторник, 14.01.2014, 21:25 | Сообщение # 4 |
Лейтенант
Группа: Проверенные
Статус: Offline
|
хорошие примеры, некоторые очень помогли. Застряла только вот где: На странице материалов пользователя не могу вывести логин пользователя того, чьи материалы. Аватар вывела таким скриптом, работает.
Код <script type="text/javascript"> $(function() { var uri = '//' + location.hostname + '/api/index/8-' + window.location.href.split('-')[2] $.get( uri, function ( xml ) { var src = $( xml ).find('name:contains("USER_AVATAR")').next().text(); $('.ava').append('<img src="' + src + '" />'); }) }); </script>
Пытаюсь вывести логин, выводит, но только мой, как администратора, а нужно чтобы выводило тот логин, чьи материалы.
Код <script type="text/javascript"> var url='/api/index/8-$UID$'; $.get(url,function(data){ $('member',data).each(function(){ if(/USER_USERNAME/i.test($(this).text())){ $('<a href="$PROFILE_URL$" title="Профиль">'+$(this).text().split('USER_USERNAME')[1]+'</a>').insertAfter('.username'); };})},'xml'); </script>
с этим не получается, не знаю что и делать((( и еще, почему то ссылка $PROFILE_URL$ выглядит как ссылка на страницу материалов данного пользователя (в моем случае на страницу материалов пользователя каталога сайтов)
Сообщение отредактировал meme22 - Вторник, 14.01.2014, 21:26 | | |
|
|
2014-01-14Дата: Вторник, 14.01.2014, 22:59 | Сообщение # 5 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
meme22, Пытаюсь вывести логин, выводит, но только мой, как администратора, а нужно чтобы выводило тот логин, чьи материалы. Вместо: Код var url='/api/index/8-$UID$'; это Код var url='/api/index/8-'+window.location.href.split('-')[2]; ---
и еще, почему то ссылка $PROFILE_URL$ выглядит как ссылка на страницу материалов данного пользователя (в моем случае на страницу материалов пользователя каталога сайтов) - потому что нет такого оператора в данном шаблоне, следовательно, выводится пустая строка. А пустая строка в атрибуте href выглядит как ссылка на текущую страницу.
| | |
|
|
2014-01-14Дата: Вторник, 14.01.2014, 23:28 | Сообщение # 6 |
Лейтенант
Группа: Проверенные
Статус: Offline
|
спасибо!
потому что нет такого оператора в данном шаблоне, следовательно, выводится пустая строка. А пустая строка в атрибуте href выглядит как ссылка на текущую страницу.
это решаемая задача? наверное с помощью скрипта
| | |
|
|
2014-01-14Дата: Вторник, 14.01.2014, 23:37 | Сообщение # 7 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
meme22, это решаемая задача? наверное с помощью скрипта Какая задача? получить ссылку на профиль? Пример же выше есть, сделайте по подобию var src = $( xml ).find('name:contains("USER_AVATAR")').next().text(); Код var ссылка_в_профиль = $( xml ).find('name:contains("USER_PROFILE")').next().text(); или username=$(elements[2]).text(), Код userprofile=$(elements[0]).text(), ---
Типа: Код <script type="text/javascript"> $.get('/api/index/8-'+window.location.href.split('-')[2],function(data){ var user_username=false,user_profile=false; $('member',data).each(function(){ if(/USER_USERNAME/i.test($(this).text())){ user_username = $(this).text().split('USER_USERNAME')[1]; }; if(/USER_PROFILE/i.test($(this).text())){ user_profile = $(this).text().split('USER_PROFILE')[1]; }; }); if(user_username&&user_profile){ $('<a href="'+user_profile+'" title="Профиль">'+user_username+'</a>').insertAfter('.username'); }; }); </script> Не проверял..
| | |
|
|
2014-01-18Дата: Суббота, 18.01.2014, 14:50 | Сообщение # 8 |
Лейтенант
Группа: Проверенные
Статус: Offline
|
Какая задача? получить ссылку на профиль? да)
Пример же выше есть, сделайте по подобию
разобралась уже, благодарю))
Добавлено (18.01.2014, 14:50) --------------------------------------------- так, со страницей фото пользователя разобралась, теперь застряла на странице материалов дневника. Переменной количества записей там нет, как везде $NUM_ENTRIES$. А как получить со странички такие данные? То есть страница пользователя с его записями в дневнике(блоге) и его количество записей.
В принципе алгоритм понятен, наверное), немного не пойму как посчитать к-ство эл. до нужного значения
Код <script type="text/javascript"> var url='/api/index/46-'+window.location.href.split('-')[5]; $.get(url,function(data){ $('member',data).each(function(){ if(/USERBLOGENTRIES_NUM/i.test($(this).text())){ $('<div class="blogent">'+$(this).text().split('USERBLOGENTRIES_NUM')[1]+'</div>').insertAfter('.userent'); };})},'xml'); </script>
Блин, вобще не пойму что к чему, откуда брать эти данные USERBLOGENTRIES_NUM. На перс.странице api не выводит, на странице материалов тоже нет. Ааааааааа)))
так, что-то нашла) количество заметок можно брать отсюда /api/index/46-*-*-*-* (что под этими звездочками?)
а вот как связать пользователя и кол. заметок, чтобы на странице материалов польз.отображалось именно его кол.заметок
Сообщение отредактировал meme22 - Суббота, 18.01.2014, 23:28 | | |
|
|
2014-01-19Дата: Воскресенье, 19.01.2014, 01:30 | Сообщение # 9 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
meme22, мне не оч понятна вот эта строка: Код var url='/api/index/46-'+window.location.href.split('-')[5]; Что это? Чему должен быть равен url ?
Переменной количества записей там нет, как везде $NUM_ENTRIES$. А как получить со странички такие данные? Это можно сделать информером - счетчики.
| | |
|
|
2014-01-23Дата: Четверг, 23.01.2014, 14:17 | Сообщение # 10 |
Лейтенант
Группа: Проверенные
Статус: Offline
|
Что это? Чему должен быть равен url ? странице пользователя, чьи материалы.
В общем я не знаю как вывести количество материалов пользователя на странице материалов блога.(иссякли все возможные идеи и мысли) Это можно сделать информером - счетчики.
можно, но не для данного случая.
Еще раз о том, что мне нужно: На странице материалов пользователя (блог) я вывожу аватар и логин пользователя, которому принадлежит данная страница. То есть для каждого она своя. Теперь мне нужно вывести количество всех заметок данного пользователя.
Пример: Страница материалов user1 (/index/8-1) - заметок 5 Страница материалов user2 (/index/8-2) - заметок 12 и т.д.
| | |
|
|
2014-01-23Дата: Четверг, 23.01.2014, 22:34 | Сообщение # 11 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
meme22, странице пользователя, чьи материалы. А, ошибся, показалось.. но нет, все верно.
Блин, вобще не пойму что к чему, откуда брать эти данные USERBLOGENTRIES_NUM. На перс.странице api не выводит, на странице материалов тоже нет. Ааааааааа))) Ну что вы, все правильно: Код <script type="text/javascript"> $.get('/api/index/46-'+window.location.href.split('-')[5],function(data){ $('member',data).each(function(){ if(/USERBLOGENTRIES_NUM/i.test($(this).text())){ $('<div class="blogent">'+$(this).text().split('USERBLOGENTRIES_NUM')[1]+'</div>').insertAfter('.userent'); };}); }); </script>
брать отсюда /api/index/46-*-*-*-* (что под этими звездочками?) Нолики, в основном.. просто показано что там не пустое место. ---
| | |
|
|
2014-02-02Дата: Воскресенье, 02.02.2014, 18:51 | Сообщение # 12 |
Рядовой
Группа: Проверенные
Статус: Offline
|
В первую очередь, хочу выразить благодарность автору сайта, за помощь, которую Вы оказываете нам чайникам! Спасибо огромное. на этом сайте находишь решение многих интересующих задач.
Очередной вопрос: скажите, как можно вывести на странице город пользователя добавившего материал. Важно, чтобы эти данные генерировались автоматически. Заранее благодарен.
<span id="apiCont"></span> <script type="text/javascript"> $.get('/api/index/8',function(d){ var cont=$('#apiCont'),elements=d.getElementsByTagName('string'),html='', avatar=$(elements[5]).text(), username=$(elements[2]).text(), gender=$(elements[4]).text(), city=$(elements[9]).text(); html+='Привет: <b>'+username+'</b><br />'; if(gender.length>0){ gender=(gender=1?'ты мужик':'вы девушка') html+='Поздравляю, '+gender+'<br />'; }; if(avatar.length>0){ html+='Твой аватар: <br /><img src="'+avatar+'" alt="" /><br />'; }; if(city.length>0){ html+='Твой город: '+city+'<br />'; }; cont.html(html); }); </script>
Сообщение отредактировал prommetey - Воскресенье, 02.02.2014, 19:10 | | |
|
|
2014-02-02Дата: Воскресенье, 02.02.2014, 19:33 | Сообщение # 13 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
prommetey, как можно вывести на странице город пользователя добавившего материал Ну у вас же готовый код в цитате: if(city.length>0){ html+='Твой город: '+city+'<br />'; }; ...либо я не понял вопроса..
| | |
|
|
2014-09-19Дата: Пятница, 19.09.2014, 08:01 | Сообщение # 14 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
cpstriker, но работать не хочет в полях: Для полей используется метод val() вместо html() Например:
Возможно ли сделать форму в которую будут подтягиваться Имя, Город, Телефон и другие данные, которые указал пользователь при регистрации? Возможно. Бесплатно делать не буду.
| | |
|