Skip to content
Snippets Groups Projects
Commit e3989126 authored by Millot Lucas's avatar Millot Lucas
Browse files

Merge remote-tracking branch 'origin/master'

parents cd8e622d ab338017
No related branches found
No related tags found
No related merge requests found
import pytest
import visual_recognition_challenge.twitter_to_images as tti
def test_vrai_texte():
texte = "RT @arnaque : ceci est un test"
sans_rt = tti.vrai_texte(texte)
assert sans_rt == 'ceci est un test'
texte = "@tomate @potato azertyuiop @johncena"
sans_cit = tti.vrai_texte(texte)
assert sans_cit == "azertyuiop"
texte = "RT : ceci est un test avec rt et citation @RT RT: @prout"
sans_cit_ni_rt = tti.vrai_texte(texte)
assert sans_cit_ni_rt == 'ceci est un test avec rt et citation RT:'
def test_fold_string():
string_de_liste_vide = tti.fold_string([])
assert string_de_liste_vide == ""
string_liste_str_vide = tti.fold_string(["","",""])
assert string_liste_str_vide == ""
string = tti.fold_string(['base'])
assert string == "base"
string = tti.fold_string(["ceci","","est","un",'test.'])
assert string == "ceci est un test."
def test_collect_texte():
dernier_tweet = tti.collect_texte("a")
assert dernier_tweet != None
# comme le contenu des tweet change sans cesse on peut difficilement faire un test certain
# j'ai posté un tweet qui est le seul à contenir le mot clé, et qui le restera, à moins que qqn cherche volontairement à faire échouer ce test
texte_tweet_solitaire = tti.collect_texte("ce_tweet_est_le_seul_tweet_à_contenir_ce_mot")
assert texte_tweet_solitaire == "ce_tweet_est_le_seul_tweet_à_contenir_ce_mot voici_un_autre_mot pomme"
def test_collect_text_mots():
texte_tweet_solitaire = tti.collect_text_mots("ce_tweet_est_le_seul_tweet_à_contenir_ce_mot", "voici_un_autre_mot")
assert texte_tweet_solitaire == "ce_tweet_est_le_seul_tweet_à_contenir_ce_mot voici_un_autre_mot pomme"
texte_tweet = tti.collect_text_mots("ce_tweet_est_le_seul_tweet_à_contenir_ce_mot", "un_mot_pas_dans_le_tweet")
assert texte_tweet == "ce_tweet_est_le_seul_tweet_à_contenir_ce_mot voici_un_autre_mot pomme"
texte_tweet = tti.collect_text_mots("voici_un_autre_mot", "azertyuiop")
assert texte_tweet == "voici_un_autre_mot pomme azertyuiop"
......@@ -20,9 +20,11 @@ def twitter_setup():
def collect_image_url(txt):
"""récupère les url d'image de tweets contenant txt, ainsi que le texte du tweet, et l'id de l'utilisateur"""
liste_data = []
connexion = twitter_setup()
tweets = connexion.search(txt, language="english", rpp=100, count=100)
for tweet in tweets:
txt=tweet.text
user=tweet.user
......@@ -34,16 +36,74 @@ def collect_image_url(txt):
return liste_data
def collect_texte(mot):
"""renvoie le premier tweet contenant 1 mot"""
liste_data = []
connexion = twitter_setup()
tweets = connexion.search(mot, language="english", rpp=100, count=100)
for tweet in tweets:
if len(tweet.text) < 135 :
return tweet.text
if len(tweets) > 0:
txt = tweets[0].text
return txt
def collect_text_mots(mot1, mot2):
"""renvoie le premier tweet contenant les 2 mots, ou seulement le premier si il n'y en a pas"""
liste_data = []
connexion = twitter_setup()
tweets = connexion.search(mot1 + ' AND ' + mot2, language="english", rpp=100, count=100)
# si on ne trouve pas de tweet avec les 2 mot, on ne recherche que le premier
if len(tweets) == 0:
return collect_texte(mot1)
txt = tweets[0].text
# choisit les tweets qui font moins de 140 caractères, sinon le texte du tweet est coupé
for tweet in tweets:
if len(tweet.text) < 135 :
return tweet.text
txt = tweets[0].text
return txt
def vrai_texte(texte_tweet):
"""supprime les informations non-pertinentes du texte du tweet"""
if texte_tweet[0:2] == 'RT':
for i in range(len(texte_tweet)):
if texte_tweet[i] == ':':
texte_tweet = texte_tweet[i+1:]
break
citation = False
liste_mots = texte_tweet.split(" ")
for i in range(len(liste_mots)) :
# supprime les mentions
if len(liste_mots[i]) > 0 and liste_mots[i][0] == '@':
liste_mots[i] = ''
# supprime le lien vers le tweet
if 'https' in liste_mots[i]:
liste_mots[i] = ''
f = fold_string(liste_mots)
return f
def fold_string(liste):
"""concatène une liste string, et ajoute des espaces entre eux"""
a = ""
for mot in liste:
if mot != "":
a += mot + " "
if a=="":
return a
return a[:-1]
import requests
def load_requests(source_url, sink_path):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment