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

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

  • 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

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