Довольно плохо знаком с программированием, и я хочу, чтобы проект работал над ним, чтобы помочь мне улучшить свои навыки. Я не уверен, какой язык будет лучше для такого рода мероприятий, но я бы определенно предпочел использовать C ++ или C #.
Для первой части программы я в основном хотел бы попытаться взять все мои пристрастия к пандоре и поместить их в электронную таблицу с названием песни в одном столбце и исполнителем в другом. Я не вижу, чтобы форматирование было слишком сложным, когда я на самом деле получаю необходимые данные, но я не совсем уверен, как вообще общаться с сервером в данный момент времени. Я предполагаю, что, вероятно, я не смогу собрать сырой список лайков, поэтому я думаю, что мой лучший способ — сначала полностью расширить список лайков, а затем мне нужно прочитать текст на экран ро в исходном коде.
Для первого шага, расширив свой «лайк», я нашел исходный код HTML, который фактически делает это:
<div class="show_more tracklike" data-nextLikeStartIndex="0" data-nextThumbStartIndex="5">Show more</div>"
Не уверен, что это то, с чем я могу работать, но я подумал, смогу ли я установить data-nextThumbStartIndex = «5» равным количеству лайков — 5 (количество, которое он показывает по умолчанию), его было бы довольно легко расширить список. Если нет, мне, вероятно, придется нажимать ссылку «показать больше» несколько раз, пока у меня не появятся все лайки на странице.
На следующем этапе, получая нужные мне данные, я думаю, что лучше всего будет просто взять текст, который я физически вижу на экране, и потом побеспокоиться о фильтрации и манипулировании данными. Другой вариант — просмотр исходного кода, в котором я нашел фрагменты кода, в котором хранится информация, которую я хочу. Если бы я мог получить исходный код страницы, я думаю, что было бы относительно легко выбрать данные, которые я на самом деле хочу из этого.
Так что да, вот и все, я знаю, что я довольно нуб, и то, что я говорю, вероятно, неправильно и / или намного сложнее, чем я думаю, но я довольно быстро учусь и, по крайней мере, если кто-то может указать мне в правильном направлении, чтобы общаться с сервером, что будет высоко ценится.
Этот вопрос довольно «широкий» (и я абсолютно ничего не знаю о самой Пандоре — я не могу получить к ней доступ с того места, где я живу).
В общем, есть несколько разных способов решения этой проблемы:
Очистка экрана — в основном заходите на веб-сайт, как если бы вы были веб-сервером, и из возвращаемой строки HTML найдите необходимую информацию. Проблема здесь заключается в том, что данные не очень подходят для «машинного чтения», поскольку у «читателя» часто нет четких точек для поиска нужной информации, и трудно отсортировать данные из «мусорки».
AJAX api — «Асинхронный Java Script и XML», где поставщик веб-сайта имеет интерфейс для извлечения определенных данных в веб-браузер — конечно, если вы «притворяетесь» веб-браузером, запрашивая тот же тип Информация. Вы полагаетесь на веб-сайт, чтобы иметь такой интерфейс, но если он существует, данные, как правило, находятся в «более подходящей форме для машинного чтения» (обычно XML, но не всегда).
JSON api — «Java Script Object Notation» — это решение, похожее на AJAX — как XML, JSON — «читаемый человеком и формат».
Последние два, безусловно, предпочтительнее, так как возвращающиеся данные предназначены для машинного чтения. Недостатком является то, что вам нужно иметь «сотрудничество на стороне сервера». Хорошо, что Pandora имеет JSON API. Плохо то, что его трудно использовать … Вот одна дискуссия на эту тему:
Выполнение JSON-вызовов к Unoffical Pandora API
Основным принципом здесь является то, что вы отправляете некоторые вещи на веб-сервер и получаете ответ с запрошенной информацией. Как именно это сделать, зависит от языка / среды программирования. Популярное решение C ++ — libcurl.
Здесь есть Ruby Client, использующий интерфейс JSON
https://github.com/nixme/pandora_client
Реализация C # для взаимодействия с Pandora здесь:
http://pandoraunleashed.googlecode.com/svn/trunk/PandoraUnleashed/Pandora.cs
К сожалению, я не могу найти прямую ссылку на «список лайков».