obshtestvo / sledi-parlamenta

Надежден инструмент за справки и анализ на парламентарната активност
http://parliament.obshtestvo.bg/
The Unlicense
13 stars 3 forks source link

Извличане на tweet-ове #27

Open antitoxic opened 10 years ago

antitoxic commented 10 years ago

В страницата за профил на човек от властта (народен представител, министър, тн) има сексция за tweet-ове.

Също така показваме tweet-ове на началната страница, най-отгоре, в карето "Feed", което съдържа най-скорошните действия в парламента и по сайта, било то приемане на закон, tweet или блог post.

Поддържане на актуален списък с tweet-ове

За всеки човек от властта първоначално ще вземем последните 10 tweet-а. След това всеки 5-10 минути ще проверяваме дали има по-нови tweet-ове от последния tweet на даден потребител.

Как може да стане това

Примерна заявка която взима tweet-ове от моя twitter, които са направени след tweet със id=XXXX

https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=antitoxic&since_id=XXXX

Но за тази заявка трябва да имаме API key / token / логин - както искайте го наричайте, трябва twitter да ни знае кои сме, за да ни ограничава броя заявки.

Няколко линка за инфо:

Ако нещо не работи ето и детайли около API key: https://dev.twitter.com/docs/auth/application-only-auth

simov commented 10 years ago

:wave:

Мога да напиша background worker с nodejs, който да пълни в база данни tweets, използвайки API-то twitter. Кеширането в база е необходимо тъй като REST API-тата имат лимит.

  1. Тоест worker-a синхронизира базата през определен интервал.
  2. Потребителският интерфейс (в случаят сайта който е писан на ruby) чете от локалния кеш и визуализира информацията.

За целта ми е необходим единствено списък с twitter screen_names/id (или каквото имате) на депутатите (не съм проверявал какво има в базата в момента, до колкото си спомням някъде имаше dump). Ще използвам мой тестов twitter application докато разработвам, след това ще добавите production credential-ите на вашият app.

Та в общи линии въпросите ми са:

  1. Има ли интерес към този feature
  2. Имате ли списък с twitter ids/names на депутатите
  3. Правилно ли разбирам задачата :grinning:
tsikov commented 10 years ago

Здравей, @simov!

Много ти благодаря за включването. :+1: Всякакъв код е добре дошъл, още повече, че проекта е супер модулярен и позволява много хора да работят по него без да си пречат. Единственото ми притеснение е, че от около 3 месеца не съм работил по него и дори да се напълни базата с туитове, не зная кога ще мога да отделя време да направя визуализация. Много силно се надявам да е скоро!

А иначе аз мога да се ангажирам да набера списък с туитър акаунти :)

Ти как си с rails и bootstrap? Имаш ли възможност да направиш някаква визуализация?

Конкретно по въпросите:

  1. да
  2. не, но може да направим
  3. да :)
simov commented 10 years ago

С ruby не съм работил и не мисля, че ще успея да изкарам нещо качествено без да инвестирам много време.

На този етап избирам задачи, които са ми интересни/лесни.

Честно казано нямам представа до колко нашите политици са активни в социалните мрежи. От тази гледна точка е под въпрос колко е приоритетен е този feature (нямам идея дали github вече поддържат задаване/сортиране по приоритет на issues)

Така че за мен би било лесно да напиша горе описаният worker, ако имам списък от потребители, срещу които да го пусна, и съответно да пълня данните в някоя база.

Ако можеш да ме насочиш от къде мога да взема/scrapе-на списъка с twitter потребители ще бъде чудесно. Ако този feature е с нисък приоритет, пак няма проблем, ще си избера друго issue.

:beers:

simov commented 10 years ago

Сетих се още нещо за визуализацията:

{ created_at: 'Tue Jun 11 19:45:24 +0000 2013',
    id: 344540892713062400,
    id_str: '344540892713062402',
    text: '@_simov yep',
    source: '<a href="http://twitter.com" rel="nofollow">Twitter Web Client</a>',
    truncated: false,
    in_reply_to_status_id: 344535996525838340,
    in_reply_to_status_id_str: '344535996525838336',
    in_reply_to_user_id: 321218143,
    in_reply_to_user_id_str: '321218143',
    in_reply_to_screen_name: '_simov',
    user: 
     { id: 1504092505,
       id_str: '1504092505',
       name: 'simo 2',
       screen_name: 'mightymob',
       location: '',
       description: '',
       url: null,
       entities: [Object],
       protected: false,
       followers_count: 1,
       friends_count: 9,
       listed_count: 0,
       created_at: 'Tue Jun 11 15:04:40 +0000 2013',
       favourites_count: 4,
       utc_offset: null,
       time_zone: null,
       geo_enabled: false,
       verified: false,
       statuses_count: 153,
       lang: 'en',
       contributors_enabled: false,
       is_translator: false,
       is_translation_enabled: false,
       profile_background_color: 'C0DEED',
       profile_background_image_url: 'http://abs.twimg.com/images/themes/theme1/bg.png',
       profile_background_image_url_https: 'https://abs.twimg.com/images/themes/theme1/bg.png',
       profile_background_tile: false,
       profile_image_url: 'http://abs.twimg.com/sticky/default_profile_images/default_profile_6_normal.png',
       profile_image_url_https: 'https://abs.twimg.com/sticky/default_profile_images/default_profile_6_normal.png',
       profile_link_color: '0084B4',
       profile_sidebar_border_color: 'C0DEED',
       profile_sidebar_fill_color: 'DDEEF6',
       profile_text_color: '333333',
       profile_use_background_image: true,
       default_profile: true,
       default_profile_image: true,
       following: false,
       follow_request_sent: false,
       notifications: false },
    geo: null,
    coordinates: null,
    place: null,
    contributors: null,
    retweet_count: 0,
    favorite_count: 0,
    entities: { hashtags: [], symbols: [], urls: [], user_mentions: [Object] },
    favorited: false,
    retweeted: false,
    lang: 'und' }

Това е tweet обекта, избираме си какво искаме да запаметим/визуализираме за него. Могат да се добавят и линкове за retweet-ване, favorite-ване.

Тоест това което се явява релация го няма като например самите retweets, съответно техният автор, както и авторът на favorite, но предполагам че няма да задълбаваме чак толкова :grinning:

Визуализацията е: аватар с display name с линк към screen name техт, брой favorite, retweet и дата (евентуално нещо друго, което се съдържа в обекта).

Може и да се наложи да бъде написан малко html/css - widget, bootstrap не е чак толкова гъвкав. Самият сайт може да прочита последните десет tweet-a и да ги визуализира при зареждане на страницата (няма нужда да е realtime)

tsikov commented 10 years ago

По първия коментар: може би най-необходимото в момента е да изтеглим и запишем в БД всички проектозакони, заедно с всякакви метаданни за тях (кога са приети, история на статуса им (внесени, приети на първо четене, и тн.), кои са вносителите и изобщо всичко, което можем).

Въпреки това не съм сигурен, че трябва да се концентрираме върху това сега, защото се сменя политическия цикъл, което означава, че със сигурност ще бъде приет нов „Правилник за устройството и дейността на НС“, където е много да има нови регламенти за публикуване на информация на уеб страницата на НС, което вероятно ще счупи доста (или всички) скриптове. Т.е. може би е по-добре действително да се захванем с twitter и други сайтове. Така че кодът е добре дошъл.

Относно втория коментар: Твоята идея е да сложим twitter feed на депутатите на техния профил? Или може би на заглавната страница? :) На мен ми харесва първият вариант, но мнооого малко депутати използват twitter и не зная колко ще е целесъобразно. Вторият вариянт има по-голямо приложение, но от друга страна не съм сигурен, че ние искаме това там - депутатите често използват twitter за дезинформация - те говорят за нещата, за които не искат хората да говорят. Ние искаме на първата страница да покажем по-релевантна информация. Струва си да се помисли къде може да сложим този feed. :)

Ти как мислиш? :)

simov commented 10 years ago

Така както е написано заданието, аз го разбирам feed на страницата с профил на депутат.

Това че не не използват социалните мрежи е проблем :grinning:

За така наречената дезинформация - в чужбина това е регулирано, всяка личност с влияние, която притежава публичен профил, първо изпраща съобщението по вътрешна система до определени хора (не помня точно наименованието), коита са наети да преценят дали съобщението е уместно и дали не влияе на пазарите примерно. С други думи, напълно искрено съобщение без задни помисли, може да те вкара в голям проблем :grinning: (нещо като със съобщенията за нашите банки, но наистина)

По тази причина в личните акаунти е упоменато, че мнението изразено там е лично и не представлява организацията на която примерно си шеф, но така или иначе пак се проверяват тези неща.

Голямо отклонение, аз предлагам първо да съберем всички twitter акаунти, и след това да проверим някой въобще използва ли ги. Мъртъв feed е по-лошо от no feed.

tsikov commented 10 years ago

Призовавам @yurukov. Накратко: разполагаш ли със списък с twitter акаунти на депутати и ако не - знаеш ли как най-лесно да съберем такъв? Питам, те защото зная, че ти си правил govalerts. :) Благодаря.

yurukov commented 10 years ago

За евродепутатите има списъ при @ep_Bulgaria. Иначе на българските нямам. Не мисля, че са повече от 5-10 така или иначе.

Боян On Sep 18, 2014 6:50 PM, "Petko Tsikov" notifications@github.com wrote:

Призовавам @yurukov https://github.com/yurukov. Накратко: разполагаш ли със списък с twitter акаунти на депутати и ако не - знаеш ли как най-лесно да съберем такъв? Питам, те защото зная, че ти си правил govalerts. :) Благодаря.

— Reply to this email directly or view it on GitHub https://github.com/obshtestvo/sledi-parlamenta/issues/27#issuecomment-56068385 .

simov commented 10 years ago

Тоест разполагаме с един акаунт този на @ep_Bulgaria. Ако е така би трябвало twitter да предлагат готов widget за вграждане в сайт.

yurukov commented 10 years ago

Тоя е на пресцентъра на EP. Пускат общи новини. Може да им пишете да ви пратят списъка акаунти на евродепутати.

Боян On Sep 18, 2014 7:23 PM, "simo" notifications@github.com wrote:

Тоест разполагаме с един акаунт този на @ep_Bulgaria. Ако е така би трябвало twitter да предлагат готов widget за вграждане в сайт.

— Reply to this email directly or view it on GitHub https://github.com/obshtestvo/sledi-parlamenta/issues/27#issuecomment-56072807 .

simov commented 10 years ago

Тук http://openparliament.net/eudeputies/ има 5 twitter акаунта на български евро депутати.

tsikov commented 10 years ago

Само дето този сайт е за активността на народните представители, а не за евродепутатите :) Така че тези не ни трябват. =)

simov commented 10 years ago

Да това е очевидно :grinning: прехвърлих и профилите на депутати от народното събрание - за социални мрежи не са чували :grinning: Така че незнам как тази задача може да бъде изпълнена, очевидно технитеческата част не е проблема.

antitoxic commented 10 years ago

@simov @tsikov @yurukov Идеята е да позлваме API и да пазим при нас инфото. Не само за twitter - issue-то трябва да се преименува на Social media updates.

И вече в Следи Парламента да ги показваме под каквато форма искаме.