Topic: Ricavare il testo completo di un tweet  (Letto 122 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Simone3

  • python unicellularis
  • *
  • Post: 8
  • Punti reputazione: 0
    • Mostra profilo
Ricavare il testo completo di un tweet
« il: Luglio 09, 2019, 10:24 »
Volevo chiedere se attraverso un programma che estrae informazioni attraverso SteamListener vi è la possibilità di avere il testo completo del tweet e non una parte

Offline bebo

  • python erectus
  • ***
  • Post: 238
  • Punti reputazione: 0
    • Mostra profilo
    • bebo_sudo's personal homepage
Re:Ricavare il testo completo di un tweet
« Risposta #1 il: Luglio 09, 2019, 10:46 »
Io conosco la libreria che stai usando, ma gli altri no. Come puoi aspettarti che qualcuno possa aiutarti se non gli spieghi cosa stai facendo?

Inoltre, l'oggetto che ti ritorna StreamListener ha un sacco di metodi, prova a guardarli, dovrebbe esserci un "body". Purtroppo la libreria tweepy non e' molto chiara e dettagliata a riguardo.

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.652
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re:Ricavare il testo completo di un tweet
« Risposta #2 il: Luglio 10, 2019, 09:42 »
Mah, io l'ho usata per qualche anno e non ho mai riscontrato problemi di documentazione.

Offline bebo

  • python erectus
  • ***
  • Post: 238
  • Punti reputazione: 0
    • Mostra profilo
    • bebo_sudo's personal homepage
Re:Ricavare il testo completo di un tweet
« Risposta #3 il: Luglio 10, 2019, 10:16 »
Mah, io l'ho usata per qualche anno e non ho mai riscontrato problemi di documentazione.
Anche io l'ho usata per un progetto grossetto, ma ieri velocemente non sono riuscito a trovare dettagli sull'oggetto che passa StreamListener al metodo on_status:
http://docs.tweepy.org/en/latest/streaming_how_to.html

@Simone3
prova a printare quell'oggetto status, potrebbe essere un json.
Oppure guardane i metodi esposti con un print(dir(status))

Offline Simone3

  • python unicellularis
  • *
  • Post: 8
  • Punti reputazione: 0
    • Mostra profilo
Re:Ricavare il testo completo di un tweet
« Risposta #4 il: Luglio 10, 2019, 15:08 »
 
def on_data(self, data):
        all_data = json.loads(data)

        tweet = all_data["text"].encode('ascii','ignore')

        username = all_data["user"]["screen_name"]

        c.execute("INSERT INTO info (username, tweet) VALUES (%s,%s)",
            (username, tweet))

        conn.commit()

        print(username,tweet)

Può esssere che se usando il tweepy.cursor (
for tweet in tweepy.Cursor(api.search,q="plastica",tweet_mode="extended",count=5,
                           #lang="it").items(500):
) esista la funzione tweet.full_text mentre per SteamListener no? Conoscete qualche soluzione? Nonostante sto cercando su internet non riesco a trovare una soluzione (forse ad ostacolare il tutto è l'inglese,nonostante mi metta di buona volontà a tradurlo ogni qualvolta capiti)
« Ultima modifica: Luglio 10, 2019, 15:36 da Simone3 »

Offline bebo

  • python erectus
  • ***
  • Post: 238
  • Punti reputazione: 0
    • Mostra profilo
    • bebo_sudo's personal homepage
Re:Ricavare il testo completo di un tweet
« Risposta #5 il: Luglio 10, 2019, 16:12 »
Ma l'oggetto tweet che hai creato a riga 5, cosa contiene? Non ci sono altri campi?
Prova con un:

from pprint import pprint

    all_data = json.loads(data)
    pprint(tweet)

Offline Simone3

  • python unicellularis
  • *
  • Post: 8
  • Punti reputazione: 0
    • Mostra profilo
Re:Ricavare il testo completo di un tweet
« Risposta #6 il: Luglio 10, 2019, 16:44 »
Ho creato la varibile tweet per avere all'interno solo i dati relativo al testo del tweet scaricato.

Eseguendo i tuoi consigli ho ugualmente problemi in quanto il testo mi viene cosi restituito.
Esempio:
(b'RT @DottorWatson: Ciao @luigidimaio, ricordi quando volevi Gino Strada al Qu'
 b'irinale? \n\nDa 0 a 1 milione di multa per le ONG, quanto ti verg')

Mi viene restituisce il tweet in due righe e non completo

Offline bebo

  • python erectus
  • ***
  • Post: 238
  • Punti reputazione: 0
    • Mostra profilo
    • bebo_sudo's personal homepage
Re:Ricavare il testo completo di un tweet
« Risposta #7 il: Luglio 10, 2019, 23:54 »
Errore mio nello script, volevo farti stampare la variabile all_data

from pprint import pprint

def ..():
    all_data = json.loads(data)
    pprint(all_data)

Offline Simone3

  • python unicellularis
  • *
  • Post: 8
  • Punti reputazione: 0
    • Mostra profilo
Re:Ricavare il testo completo di un tweet
« Risposta #8 il: Luglio 11, 2019, 10:29 »
Ma che senso ha stampare all_data se è la variabile dove vengono salvati TUTTI i dati che vengono prelevati da Twitter?

Il mio problema sta nel riuscire a scaricare l'intero testo del tweet!

Offline bebo

  • python erectus
  • ***
  • Post: 238
  • Punti reputazione: 0
    • Mostra profilo
    • bebo_sudo's personal homepage
Re:Ricavare il testo completo di un tweet
« Risposta #9 il: Luglio 15, 2019, 00:37 »
Siccome tu selezioni in automatico la chiave "text" da all_data, volevo capire se c'era magari il tweet completo da qualche altra parte nel json che ti viene ritornato.

Pero' in effetti chissene, tanto io questo lavoro ero riuscito a farlo e recuperavo tutto quello che mi serviva da tweepy, quello che chiede aiuto sei tu.

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.652
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re:Ricavare il testo completo di un tweet
« Risposta #10 il: Luglio 18, 2019, 09:10 »
Infatti la documentazione della libreria rimanda a quella di twitter.


Al link https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/intro-to-tweet-json si dice:


JSON that describes Extended Tweets was introduced when 280-character Tweets were launched in November 2017. Tweet JSON was extended to encapsulate these longer messages, while not breaking the thousands of apps parsing these fundamental Twitter objects. To provide full backward compatibility, the original 140-character 'text' field, and the entity objects parsed from that, were retained. In the case of Tweets longer than 140 characters, this root-level 'text' field would become truncated and thus incomplete. Since the root-level 'entities' objects contain arrays of key metadata parsed from the 'text' message, such as included hashtags and links, these collections would be incomplete. For example, if a Tweet message was 200 characters long, with a hashtag included at the end, the legacy root-level 'entities.hashtags' array would not include it.A new 'extended_tweet' field was introduced to hold the longer Tweet messages and complete entity metadata. The "extended_tweet" object provides the "full_text" field that contains the complete, untruncated Tweet message when longer than 140 characters. The "extended_tweet" object also contains an "entities" object with complete arrays of hashtags, links, mentions, etc.
Extended Tweets are identified with a root-level "truncated" boolean. When true ("truncated": true), the "extended_tweet" fields should be parsed instead of the root-level fields. Note in the JSON example below that the root-level "text" field is truncated and the root-level "entities.hashtags" array is empty even though the Tweet message includes three hashtags. Since this is an Extended Tweet, the "truncated" field is set to true, and the "extended_tweet" object provides complete "full_text" and "entities" Tweet metadata.