Pull to refresh

TwiMem — Twitter + Memories = запоминаем твиты для будущих поколений

Reading time3 min
Views560
Не так давно я уже делился с общественностью Хабрхабр своими экспериментами с API социального сервиса микроблоггинга Twitter.
Сегодня я бы хотел рассказать и показать свой новый проект на ниве экспериментов с тем же API.

Представляю вашему вниманию проект рожденный мною в один из вечеров, когда я после безуспешных попыток найти в своем личном Twitter'е один из давних постов с ссылкой на нужный мне в тот момент музыкальный альбом, я подумал, что: «А было бы прикольно запоминать в заметки (мемы от англ. memories) свои или даже чужие твиты».

Сказано — сделано:
TwiMem — добавь твиты в Memories

TwiMem - главная страница TwiMem - личная страница

Задача
Нам нужно быстро и просто запомнить свой твит-пост или друга из ленты. Чтобы в дальнейшем можно было просмотреть свои «запоминалки» (мемы) с возможностью удалить их на личной странице, например набрав twimem.com/%user_name%

Решение
Стоит нам отправить свой твит-пост указав в тексте сообщения тэг #twimem то он сразу же запоминается нашим сайтом http://twimem.com, выводится на главную страницу, а так же в личной странице twimem.com/%user_name%, которую могут просмотреть все желающие. А если войти под своей OAuth авторизацией из Twitter'а в личном кабинете можно удалять ненужные запоминалки (мемы).

И всё. Просто как перочиный ножик. Добавил в мемы, когда надо нашел твит, стал не нужен — удалил. Разумеется, все сообщения сохраняются независимо от Twitter'а и в случае даже его недоступности будут доступны на нашем сайте, что в общем-то является почти backup возможностью своих интересных твитов с учетом еще планов на будущее.

А именно — планы на будущее
1. Сделать возможность выгрузить авторизованному пользователю все его мемы в XML формате, эдакий backup экспорт.
2. Сделать обработку тэгов в мем'ах с преобразованием во внутренние тэги.
3. Личные категории мем'ов.
4. — 10. ??? Ваши идеи и предложения?

Техническая часть
Расскажу вкратце о технической стороне дела.
Приложение написано полностью на языке программирования PHP. База данных MySQL. Во frontend используется JavaScript. Верстка HTML + CSS, как и программирование JS (JQuery), PHP всё лично я.

Всё приложение технологически разделено на 2 независимые части:

1. Паук (spyder), написан на «чистом» PHP в ООП стиле, для работы с Twitter REST API я написал свой класс, которым мне не жалко поделиться, берите на здоровье.
Пример использования:
$twitter = new Twitter( $twitter_name, $password );
$mentions = $twitter->get_friends_timeline();

Паук запускается как cli приложение по cron'у, сканирует все новые твиты с последнего запуска на ключевые тэги, разбирает и запоминает их в базе.

2. Frontend, как раз «лицо» сайта, где мы на главной странице показываем с десяток крайних мемов. С ссылками на личные страницы пользователей. Написано всё на расширенном PHP фреймворке CodeIgniter, так глубоко любимом мною. Под словом расширенный я подразумеваю 5-6 классов написанных мною без затрагивания ядра фреймворка, которые расширяют мои возможности, например очень красив и удобен для меня код такого вида:
$user = $this->model('user')->find_by_screen_name( $user, 1 );
автоматом загрузить модель, присоединить к таблице users (множественное число) и найти пользователя по screen_name полю магическим методом
или
$data['remembers'] = $this->model('memory')->order_by('date_at', 'DESC')->find( NULL, 10 );
а это «чанки», так же загрузка и присоединение модели, выборка 10 последних записей с сортировкой

Всё это «inspired by Rails ActiveRecord» и надеюсь расскажу, поделюсь рядом классов по данной тематике в следующий раз.
Для OAuth авторизации я не стал изобретать велосипедов и быстренько сделав ряд исправлений использовал Twitter класс от Elliot Haughin для CodeIgniter.

В целом это всё, чем я бы хотел на сегодня поделиться с человеками Хабрхабр'а.

Спасибо за внимание, приглашаю вас пользоваться TwiMem сервисом и всегда буду признателен за идеи по развитию и дальнейшему совершенствованию сервиса.
Tags:
Hubs:
Total votes 18: ↑8 and ↓10-2
Comments3

Articles