Skip to content

Analiza źródła

dmydlarz edited this page Nov 2, 2013 · 19 revisions

Twitter

Q&A

  • Czy da się ograniczyć w searchu tylko do tweetów z geolokalizacją?

Nie dla REST API, tak dla Streaming API

  • Jak zawęzić wyszukiwanie tweetów do określonego obszaru?

W Streaming API poprzez współrzędne prostokątnego obszaru

Zdobyte informacje

  • Wstęp do API do przeszukiwania

  • Geolokalizacja jest domyślnie wyłączona w kliencie webowym oraz androidowym

  • Maksymalna treść zapytania search/tweets to 1000 znaków

A UTF-8, URL-encoded search query of 1,000 characters maximum, including operators. Queries may additionally be limited by complexity.
https://dev.twitter.com/docs/api/1.1/get/search/tweets

REST API

The Search API is not complete index of all Tweets, but instead an index of recent Tweets. At the moment that index includes between 6-9 days of Tweets.

  • Nie można filtrować po geolokalizacji

There's no filter you can apply to the Search API that will limit only to explicitly geotagged tweets
https://dev.twitter.com/discussions/21789

  • możliwość filtrowania - lokalizacja, język, słowa kluczowe
  • różne rodzaje wyciąganych danych - wpisy, lista miejsc, znajomi, followersi, ulubione wpisy, trendy, sugerowani użytkownicy
  • limit: 180 zapytań w 15 minutowym oknie, więcej - w jednym zapytaniu maks. 100 wpisów więcej

Streaming API

new String[] { "mesut ozil", "arsenal", "londyn"} 

znalezione zostaną wpisy: kocham arsenal londyn, tylko arsenal, nowa praca, nowe możliwości, nowe miasto #londyn, świetny jest ten niemiecki mesut ozil, ciekawe jak ozil czuje się po zmianie klubu #arsenal
ale odrzucone zostanie np: no nareszcie! ozil rusza na pomoc!

  • stanie się tak dlatego, gdyż zapytanie, które powstanie dla tych słów będzie postaci: "mesut ozil,arsenal,londyn" - a mechanizm twittera traktuje spację jako operator AND, zaś przecinek jako OR

  • Działa tylko dla wpisów "na żywo"

  • Można filtrować geolokalizację

    • Na podstawie dokładnych danych z telefonu (sieć komórkowa / GPS)
    • Lub na danych przybliżonych (pisząc bezpośrednio z komputera)
    • Uwaga: lokalizacja może być ustawiona ręcznie przez użytkownika
  • Filtrowanie po lokalizacjach (https://dev.twitter.com/docs/streaming-apis/parameters#locations)

Przykładowe zapytanie

HTTP/1.1 200 OK
content-type:application/json;charset=utf-8
x-frame-options:SAMEORIGIN
x-rate-limit-remaining:174
last-modified:Wed, 16 Oct 2013 07:10:28 GMT
status:200 OK
date:Wed, 16 Oct 2013 07:10:28 GMT
x-transaction:a9a987d7a6956262
pragma:no-cache
cache-control:no-cache, no-store, must-revalidate, pre-check=0, post-check=0
x-xss-protection:1; mode=block
x-rate-limit-limit:180
expires:Tue, 31 Mar 1981 05:00:00 GMT
set-cookie:guest_id=v1%3A138190742874790579; Domain=.twitter.com; Path=/; Expires=Fri, 16-Oct-2015 07:10:28 UTC
content-length:6957
x-rate-limit-reset:1381908037
server:tfe
strict-transport-security:max-age=631138519
x-access-level:read-write-directmessages

[
  {
    "created_at": "Tue Oct 15 16:04:42 +0000 2013",
    "id": 390146222759378940,
    "id_str": "390146222759378945",
    "text": "@BolekLegia @K_Stanowski Zobacz wyniki z Serbia, Finlandia plus fart w Lizbonie. Krzynowek- plecy Ricardo - remis. I dno w elim. do MS w RPA",
    "source": "<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>",
    "truncated": false,
    "in_reply_to_status_id": 390145461308231700,
    "in_reply_to_status_id_str": "390145461308231680",
    "in_reply_to_user_id": 1488312289,
    "in_reply_to_user_id_str": "1488312289",
    "in_reply_to_screen_name": "BolekLegia",
    "user": {
      "id": 1136771436,
      "id_str": "1136771436",
      "name": "Mateusz Borek",
      "screen_name": "BorekMati",
      "location": "",
      "description": "Komentator/moderator Polsatu od 2000 r. Wcześniej Canal+ i Eurosport.",
      "url": null,
      "entities": {
        "description": {
          "urls": []
        }
      },
      "protected": false,
      "followers_count": 30414,
      "friends_count": 272,
      "listed_count": 152,
      "created_at": "Thu Jan 31 11:52:33 +0000 2013",
      "favourites_count": 37,
      "utc_offset": null,
      "time_zone": null,
      "geo_enabled": false,
      "verified": false,
      "statuses_count": 3911,
      "lang": "pl",
      "contributors_enabled": false,
      "is_translator": 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://a0.twimg.com/profile_images/3187760032/0d15136885c94c367dcc78d9e473682e_normal.jpeg",
      "profile_image_url_https": "https://si0.twimg.com/profile_images/3187760032/0d15136885c94c367dcc78d9e473682e_normal.jpeg",
      "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": false,
      "following": null,
      "follow_request_sent": false,
      "notifications": null
    },
    "geo": null,
    "coordinates": null,
    "place": null,
    "contributors": null,
    "retweet_count": 0,
    "favorite_count": 0,
    "entities": {
      "hashtags": [],
      "symbols": [],
      "urls": [],
      "user_mentions": [
        {
          "screen_name": "BolekLegia",
          "name": "Andrzej K.",
          "id": 1488312289,
          "id_str": "1488312289",
          "indices": [
            0,
            11
          ]
        },
        {
          "screen_name": "K_Stanowski",
          "name": "Krzysztof Stanowski",
          "id": 1183133300,
          "id_str": "1183133300",
          "indices": [
            12,
            24
          ]
        }
      ]
    },
    "favorited": false,
    "retweeted": false,
    "lang": "pl"
  }
]

Możliwe do wyłuskania informacje nt. lokalizacji

  • Geo and Coordinates are the same fields, but Geo is deprecated! Both of them contains latitude and longitude, but in reversed orded
  • Coordinates
    • The Tweet was created with a latitude and longitude being passed to it. The lat/long is for a place not yet know to our database
  • Coordinates and Place
    • The Tweet was created with a latitude and longitude being passed to it. The lat/long is known to our database and the neighborhood it corresponds to was set as the place.
  • Place
    • The Tweet was created with a place_id being passed to it, but no lat/long.

Linki