Twitter-клиент

Тип работы:
Курсовая
Предмет:
Коммуникации, связь, цифровые приборы и радиоэлектроника


Узнать стоимость

Детальная информация о работе

Выдержка из работы

БРЯНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра «Информатика и программное обеспечение»

Курсовой проект

по дисциплине: «Сети ЭВМ и телекоммуникации»

на тему: «Twitter-клиент»

Брянск 2012

Задание на курсовой проект

Разработать twitter-клиент, обладающий основным функционалом социальной сети Twitter.

Содержание

Введение

1. Аналитическая часть

2. Теоретическая часть

3. Конструкторская часть

4. Техническая документация

4.1 Запуск программы

4.2 Кнопка Timeline

4.3 Кнопка Mentions

4.4 Кнопка My Tweets

4.5 Кнопка Followers

4.6 Кнопка Followings

4.7 Кнопка Trends

4.8 Кнопка OK

4.9 Кнопка Tweet

4. 10 Кнопка Get Pin

4. 11 Кнопка Authorize

5. Экспериментальная часть

Вывод

Список литературы

Введение

С высоким распространением социальных сетей появилась потребность постоянно иметь доступ к своему аккаунту и оставаться в курсе последних событий. При этом удобно иметь под рукой клиент, который обладает простым функционалом и способен выполнять основные функции, которые присущи социальной сети. Таким образом, был разработан twitter-клиент, способный просматривать ленту новостей, посылать сообщения, просматривать основные тренды, а также обладающий некоторыми другими функциями социальной сети Twitter.

Данный клиент был написан на языке C# в среде разработки Visual Studio 2010. В качестве языка программирования был выбран язык C#, также использовалась библиотека Twitterizer2, которая упростила работу с сервером.

1. Аналитическая часть

Twitter-клиент может быть реализован с помощью различных методов, например, с использованием средств языков C++, C#, Python и многих других.

Приложение, созданное на языке C#, требует длительного времени и большого запаса знаний, но позволяет создавать графические приложения, не требовательные к ресурсам ПК. Поскольку объём проекта не слишком велик, был выбран именно этот вариант создания приложения.

Можно создавать как консольные приложения, которые отображают ответы сервера в консоли, либо приложения, использующие формы.

В данном случае была реализована программа, основанная на формах. Данный вид программы обеспечивает активную связь с пользователем, так же он является наиболее привычным для пользователя видом приложения. Программа включает в себя текстовую информацию, отображающую новостную ленту, тренды и друзей пользователя. Наличие кнопок делает процесс работы с приложением более удобным, а текстовые поля позволяют вводить данные для отправки сообщения в ленту или поиска сообщений других пользователей по их никнеймам.

Данный вид программы не позволяет использовать весь функционал социальной сети twitter, но является удобным приложением для быстрого обмена сообщениями и чтения новостной ленты. Программа включает в себя основные функции социальной сети, которые используются множеством людей ежедневно.

Для клиентского приложения важен интерактивный диалог с пользователем, который реализуется с помощью кнопок, всплывающих сообщений, создаваемых с помощью встроенного графического редактора Visual Studio 2010.

2. Теоретическая часть

Клиентское приложение создается для отображения основного функционала социальной сети twitter. Оно позволяет просматривать новостную ленту, отправлять сообщения в twitter, узнавать мировые тренды (темы, которые встречаются в большинстве сообщений пользователей), просматривать, кто следит за вашей новостной лентой, и кого читаете Вы, а также следить за тем, кто упоминает Вас в своих сообщениях.

Для использования данной программы, пользователю, прежде всего, нужно авторизоваться. При этом он получает ПИН-код, при введении которого в текстовое окно приложения, происходит автоматический вход пользователя в систему. После этого он может пользоваться всеми функциями приложения.

Для выполнения данной задачи был выбран объектно-ориентированный подход, поскольку при разработке использовались такие библиотеки как. Net Framework и Twitterizer, обеспечивающие наборы готовых классов. В этом случае были унаследованы пользовательские классы от предоставляемых библиотеками. Формы используются для главного окна приложения. Это решение является наиболее подходящим для данного вида приложения, поскольку обеспечивает простоту в реализации и интерактивность в пользовании программы.

Для доступа к основным функциям twitter использовался элемент Button. По нажатию на кнопку, выводится текстовая информация в элемент RichTextBox, содержание которой зависит от нажатой кнопки. Каждая кнопка имеет название, соответствующее производимому действию. Пользователь интуитивно понимает, что при нажатии кнопки он увидит интересующий его текст.

Для ввода текста сообщения был также использован элемент RichTextBox с ограничением на ввод символов, равный 140 символам. Это ограничение связано с тем, что twitter не позволяет вводить длинные сообщения, и максимальная длина каждого из них составляет 140 символов.

Для ввода имени пользователя, сообщения которого нас интересуют, был использован элемент TextBox. Использование этого элемента является наилучшим решением, так как имена пользователей, как правило, короткие. По этой же причине был выбран тот же элемент для ввода ПИН-кода.

Для отображения имени пользователя при авторизации был выбран элемент Label.

Для подсчета количества введенных символов использовался элемент Timer.

3. Конструкторская часть

Приложение состоит из модуля «Program. cs», который содержит точку входа в программу, класс Twitter, содержащий методы получения ПИН-кода, авторизации и отправки сообщения, а так же модуля «Form. cs», который содержит функции для чтения своей ленты, ленты другого пользователя, просмотра трендов, своих читателей и пользователей, за лентой которых Вы следите.

Точкой входа в программу является метод Run класса Application, в котором происходит создание основного окна приложения.

Application. Run (new Form1());

Класс Twitter:

public class Twitter

{

public HttpWebRequest Request; //запрос серверу

public HttpWebResponse Response; //ответ сервера

public StreamReader Reader;

//данные для авторизации

public string oauth_token;

public string oauth_token_secret;

public string oauth_callback_confirmed;

public Twitter () { }//конструктор

public string GetPin ()//метод для получения ПИН-кода

{

}

public string Authorize (string pin)//метод для авторизации

{

}

public string SendTwit (string Twit)//метод для отправки сообщения в ленту

{

}

Метод public string GetPin () используется для получения ПИН-кода. Он не принимает никаких параметров, а возвращаемым значением является строка, которая содержит уникальный идентификатор авторизации. Внутри метода генерируются необходимые данные для авторизации, формируется запрос на сервер, формируется необходимая строка, которая передается браузеру по умолчанию и ожидается ввод ПИН-кода.

public string GetPin ()

{

Uri uri = new Uri («http: //api. twitter. com/oauth/request_token»);

string consumerKey = «XXX»;

string consumerSecret = «XXX»;

OAuthBase oAuth = new OAuthBase ();

// Генерация необходимых данных

string timeStamp = oAuth. GenerateTimeStamp ();

string nonce = oAuth. GenerateNonce ();

string normUri;

string normParams;

string sig = oAuth. GenerateSignature (uri, consumerKey, consumerSecret, string. Empty, string. Empty, «GET», timeStamp, nonce, OAuth. OAuthBase. SignatureTypes. HMACSHA1, out normUri, out normParams);

// Формирование и вывод строки запроса

string request_url =

«http: //api. twitter. com/oauth/request_token» + «?» +

«oauth_consumer_key=» + consumerKey + «&» +

«oauth_signature_method=» + «HMAC-SHA1» + «&» +

«oauth_signature=» + sig + «&» +

«oauth_timestamp=» + timeStamp + «&» +

«oauth_nonce=» + nonce + «&» +

«oauth_version=» + «1. 0»;

// Запрос на сервер

Request = (HttpWebRequest)HttpWebRequest. Create (request_url);

Response = (HttpWebResponse)Request. GetResponse ();

Response = (HttpWebResponse)Request. GetResponse ();

Reader = new StreamReader (Response. GetResponseStream (), Encoding. GetEncoding (1251));

string outline = Reader. ReadToEnd ();

char[] delimiterChars = { '& ', '=' };

string[] words = outline. Split (delimiterChars);

oauth_token = words[1];

oauth_token_secret = words[3];

oauth_callback_confirmed = words[5];

request_url = «http: //api. twitter. com/oauth/authorize?oauth_token=» + oauth_token;

System. Diagnostics. Process. Start (request_url); // Передаём ссылку на страницу браузеру по умолчанию и ждём пока пользователь введёт PIN-код

return oauth_token;

}

Метод public string Authorize (string pin) используется для авторизации пользователя. В качестве параметра принимает строку, содержащую ПИН-код. Возвращаемым значением является имя пользователя. Внутри метода происходит процедура запроса на сервер, получение ответа в виде строки, разбор полученной строки и присвоение значений соответствующим переменным.

public string Authorize (string pin)

{

Uri uri = new Uri («http: //api. twitter. com/oauth/request_token»);

string consumerKey = «7sm4qTVBxeqlTdv9Syfog»;

string consumerSecret = «058PJGiiPs3SClDoDg1cd6fvFqw37Vy8ZXSrpKks5k»;

OAuthBase oAuth = new OAuthBase ();

string oauth_verifier = pin; // oauth_verifier -- это полученный нами PIN-код.

// Формирование и вывод строки запроса

request_url =

«http: //api. twitter. com/oauth/access_token» + «?» +

«oauth_consumer_key=» + consumerKey + «&» +

«oauth_token=» + oauth_token + «&» +

«oauth_signature_method=» + «HMAC-SHA1» + «&» +

«oauth_signature=» + sig + «&» +

«oauth_timestamp=» + timeStamp + «&» +

«oauth_nonce=» + nonce + «&» +

«oauth_version=» + «1. 0» + «&» +

«oauth_verifier=» + oauth_verifier;

// Запрос на сервер

Request = (HttpWebRequest)HttpWebRequest. Create (request_url);

Response = (HttpWebResponse)Request. GetResponse ();

Reader = new StreamReader (Response. GetResponseStream (), Encoding. GetEncoding (1251));

outline = Reader. ReadToEnd ();

// Разбор выданной строки и присвоение значений соответствующим переменным

words = outline. Split (delimiterChars);

oauth_token = words[1];

oauth_token_secret = words[3];

string user_id = words[5];

string screen_name = words[7];

return screen_name;

}

Метод public string SendTwit (string Twit) используется для отправки сообщения в ленту. В качестве параметра принимает строку с сообщением. Возвращаемым значением является строка с текстом «ok» в случае удачного завершения, либо строка с ответом сервера об ошибке.

public string SendTwit (string Twit)

{

OAuthTokens tokens = new OAuthTokens (); // Создаём объект класса

tokens. ConsumerKey = «7sm4qTVBxeqlTdv9Syfog»; //Ввводим Consumer Key

//Вводим Consumer Secret

tokens. ConsumerSecret = «058PJGiiPs3SClDoDg1cd6fvFqw37Vy8ZXSrpKks5k»;

//Вводим AccessToken

tokens. AccessToken = «264 296 709-ZYOQKDXKbXlNcZa7nl1VbR1g3oIZmXwX9b4XlSgA»;

//Вводим Access Token Secret

tokens. AccessTokenSecret = «j2BJCq5hwxkIgWslRybLYPzZY4euIiAuYJiFzVrtBY»;

//Отправляем сообщение в твиттер

TwitterResponse< TwitterStatus> tweetResponse = TwitterStatus. Update (tokens, Twit);

if (tweetResponse. Result == RequestResult. Success) //Проверка отправки

{

return «ok»; //Сообщение отправилось

}

else

{

return tweetResponse. ErrorMessage; //Сообщение не отправилось

}

}

При нажатии на различные кнопки на форме происходит вызов методов классов библиотеки Twitterizer2.

Кнопка «Timeline»:

UserTimelineOptions opts = new UserTimelineOptions ();

opts. IncludeRetweets = true;

opts. UseSSL = true;

opts. Count = 15;

timeline. Clear ();

TwitterResponse< TwitterStatusCollection> t = TwitterTimeline. HomeTimeline (tokens, opts);

foreach (TwitterStatus status in t. ResponseObject)

{

timeline. AppendText (status. User. Name + «» + «[» + status. CreatedDate + «] «+ status. Text + «nn»);

}

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

Действия для кнопок «Mentions» и «My tweets», а так же кнопки «Ok» при вводе имени пользователя аналогичны действиям кнопки «Timeline», но в этих случаях выводятся соответственно сообщения, в которых упоминается Ваш никнейм, Ваши сообщения и сообщения пользователя, имя которого Вы ввели в элемент TextBox.

При нажатии на кнопки «Following» и «Followers» выводятся списки пользователей, которых Вы читаете и которые читают Вас соответственно.

Кнопка «Following»:

int i = 0;

TwitterResponse< TwitterUserCollection> fol = TwitterFriendship. Friends (tokens);

foreach (TwitterUser following in fol. ResponseObject)

{

i++;

}

timeline. AppendText («You follow «+ i + «peoplenn»);

foreach (TwitterUser following in fol. ResponseObject)

{

timeline. AppendText (following. ScreenName + «n»);

}

Кнопка «Followers»:

int i = 0;

TwitterResponse< TwitterUserCollection> fol = TwitterFriendship. Followers (tokens);

foreach (TwitterUser follower in fol. ResponseObject)

{

i++;

}

timeline. AppendText («You have «+ i + «followersnn»);

foreach (TwitterUser follower in fol. ResponseObject)

{

timeline. AppendText (follower. ScreenName+"n");

}

При нажатии на кнопку «Trends» выводятся текущие тренды.

System. Net. WebRequest reqGET = System. Net. WebRequest. Create («https://api. twitter. com/1/trends/1. json»);

System. Net. WebResponse resp = reqGET. GetResponse ();

System. IO. Stream stream = resp. GetResponseStream ();

System. IO. StreamReader sr = new System. IO. StreamReader (stream);

string s = sr. ReadToEnd ();

int n = s. Length;

char[] str = s. ToCharArray ();

int ind = s. IndexOf («name»);

string[] find = s. Split (new string[] {"name"}, 10, StringSplitOptions. None);

for (int i = 0; i < 10; i++)

{

int ind1 = find[i]. IndexOf («event»);

if (ind1 ≠ -1)

{

string a = find[i]. Substring (3, ind1−6);

timeline. AppendText (a+"n");

}

Происходит GET-запрос по адресу https: //api. twitter. com/1/trends/1. json, читается ответ с сервера, который принимается в строку. Так как список трендов передается в формате JSON, необходимо извлечь из строки названия трендов. Для этого строка разбивается на массив строк, начинающихся с подстроки «name», после чего в цикле для каждой строки находится подстрока «event» и в текстовое поле записывается текст, который находится между подстроками «name» и «event».

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

4. Техническая документация

программа клиент новостной пользователь

4.1 Запуск программы

При запуске программы пользователь видит главное окно приложения, которое предлагает получить ПИН-код, нажав на соответствующую кнопку, авторизоваться, написать сообщение в twitter, просмотреть ленту, сообщения, в которых упоминается пользователь, сообщения пользователя, список Followers и Followings, трендов, сообщения конкретного пользователя, либо покинуть программу.

Рис. 1. Запуск программы

4. 2 Кнопка Timeline

При нажатии на кнопку Timeline в текстовое поле выводится новостная лента.

Рис. 2. Кнопка Timeline

4.3 Кнопка Mentions

При нажатии на данную кнопку происходит вывод в текстовое поле сообщений, в которых упоминается имя авторизованного пользователя.

Рис. 3. Кнопка Mentions

4. 4 Кнопка My Tweets

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

Рис. 4. Кнопка My Tweets

4.5 Кнопка Followers

При нажатии на данную кнопку в текстовое поле выводится список Followers.

4.6 Кнопка Followings

При нажатии на данную кнопку в текстовое поле выводится список Followings.

4.7 Кнопка Trends

При нажатии на данную кнопку в текстовое поле выводится список трендов.

4.8 Кнопка OK

При нажатии на данную кнопку в текстовое поле выводятся сообщения пользователя, имя которого введено в поле TextBox.

Рис. 5. Кнопка OK

4. 9 Кнопка Tweet

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

Рис. 6. Всплывающее окно, подтверждающее отправку сообщения

4. 10 Кнопка Get Pin

При нажатии на данную кнопку открывается окно браузера с ПИН-кодом.

Рис. 7. Окно браузера с ПИН-кодом

4. 11 Кнопка Authorize

При нажатии на данную кнопку происходит авторизация, с помощью ПИН-кода, введенного в текстовое поле. При этом в окне программы отображается имя авторизованного пользователя.

Рис. 8. Часть окна программы с введенным ПИН-кодом и именем пользователя

5. Экспериментальная часть

Основной задачей экспериментальной части является выявление ошибок при работе программы и поиск пути их устранения. При этом важно понять причину возникновения неисправностей и найти наиболее оптимальные пути исправления допущенных ошибок.

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

Вывод

Поставленная задача полностью выполнена. Была создана программа-клиент с простым интерфейсом и удобным оформлением. При этом были учтены потребности пользователей разного уровня подготовки. Приложение обладает основным функционалом социальной сети Twitter.

Список литературы

1. http: //msdn. microsoft. com

2. Мартынов Н. Н. — С# для начинающих. Издательство: КУДИЦ-ПРЕСС, 2007 г., 272с.

3. Бен Ватсон — С# 4.0 на примерах. Издательство: БХВ-Петербург, 2011 г., 608с.

4. Анкудинов Г. И. — Сети ЭВМ и телекоммуникации. Издательство: Санкт-Петербург, 2006 г., 176с.

5. Алиев Т. И. — Сети ЭВМ и телекоммуникации. Издательство: СПбГУ ИТМО, 2011 г., 400с.

ПоказатьСвернуть
Заполнить форму текущей работой