예제 #1
0
def print_stats():
    nb_tweets = session.query(TWEET).count()
    nb_tw_originaux = session.query(TWEET).filter(TWEET.retweet == False).count()
    nb_comptes = session.query(COMPTE).count()
    nb_keywords = session.query(KEYWORD).count()

    print(f"Nombre de tweets : {nb_tweets}")
    print(f"Nombre de tweets (hors RT): {nb_tw_originaux}")
    print(f"Nombre de comptes d'utilisateurs : {nb_comptes}")
    print(f"Nombre de keywords : {nb_keywords}")
예제 #2
0
def main():
    tweets_to_process = (
        session.query(TWEET).filter(TWEET.texte_retraite == None))  # noqa
    lg.info(f"Tweet to process : {tweets_to_process.count()}")
    while tweets_to_process.count() > 0:
        for tweet in tweets_to_process.all()[0:1000]:
            tweet.texte_retraite = processing(tweet.texte)
        session.commit()
        session.close()
        tweets_to_process = (session.query(TWEET).filter(
            TWEET.texte_retraite == ""))
def add_keyword(keyword=None):
    if not keyword:
        keyword = input(
            """Veuillez entrer le nouveau mot clé à ajouter.
            Pour les hashtags, inclure le symbole '#'\n""")
        keyword = keyword.replace('#', '%23')

    existing_keyword = session.query(KEYWORD).filter(KEYWORD.valeur == keyword)
    if not existing_keyword.all():
        # CASE 1 : keyword doesnt exist ==> new keyword create
        new_entry = KEYWORD(keyword)
        session.add(new_entry)
        session.commit()
    elif existing_keyword.one().active is False:
        # CASE 2 : keywords already exists but inactive :
        # ask if want to activate it
        reactivate = input(
            """Le mot clé est déjà présent dans la base de données.
            Souhaitez vous le réactiver ? (o/n)\n""")
        if reactivate == "o":
            activate_keyword(keyword)
        else:
            print("Le mot clé n'a pas été réactivé")
    else:
        # CASE 3 : keyword already exists and is active : do nothing"
        print("Le mot clé est déjà présent dans la base de données")
    session.close()
def display_keywords():
    keywords = session.query(KEYWORD).all()
    print("LISTE DES MOTS CLES :")
    for keyword in keywords:
        if keyword.active:
            statut = "actif"
        else:
            statut = "inactif"
        print(f"     { keyword.valeur.replace('%23', '#') } ({ statut })")
def main():
    tweets_to_process = session.query(TWEET).filter(
        TWEET.nb_rt == None)  # noqa
    while tweets_to_process.count() > 0:
        lg.info(f"""Searching influence data. Tweets remaining :
            {tweets_to_process.count()}""")
        tweet_list = tweets_to_process.all()[0:100]
        ids = [tweet.tweet_id for tweet in tweet_list]
        results = api_query(ids)

        for tweet in tweets_to_process.all()[0:100]:
            tweet.nb_favori = results[tweet.tweet_id]["nb_favori"]
            tweet.nb_rt = results[tweet.tweet_id]["nb_rt"]
            tweet.date_influence = auj

        session.commit()
        session.close()
        tweets_to_process = session.query(TWEET).filter(
            TWEET.nb_rt == None)  # noqa
예제 #6
0
def main(older=True):
    keywords = (
        session.query(KEYWORD)
        .filter(KEYWORD.active == True) # noqa
        .order_by(KEYWORD.nb_rech)
        .all()
    )
    print(keywords)
    for keyword in keywords:
        run_keyword(keyword, older)
    lg.info("Program over")
예제 #7
0
def write_data(res, keyword):
    """
    Reorganize result data and write them to sqlite database
    """

    for tw in res['statuses']:
        tweet_id = tw['id']
        user_id = tw['user']['id']

        # Writing User data:
        compte = session.query(COMPTE).filter(COMPTE.user_id == user_id)
        if not compte.all():    # Si non existant on le créé
            compte = COMPTE(tw['user'])
            session.add(compte)
        else:
            compte = compte.one()

        # Writing Tweet_data:
        tweet = session.query(TWEET).filter(TWEET.tweet_id == tweet_id)
        if not tweet.all():
            tweet = TWEET(tw)
            tweet.compte = compte
            session.add(tweet)
            lg.info(f"adding tweet {tweet_id}")

        # Updating Keyword data :
        if keyword.plus_ancien_tweet:
            if tweet_id < keyword.plus_ancien_tweet:
                keyword.plus_ancien_tweet = tweet_id
        else:
            keyword.plus_ancien_tweet = tweet_id

        if keyword.plus_recent_tweet:
            if tweet_id > keyword.plus_recent_tweet:
                keyword.plus_recent_tweet = tweet_id
        else:
            keyword.plus_recent_tweet = tweet_id

        session.commit()
def desactivate_keyword(keyword=None):
    if not keyword:
        keyword = input(
            """Veuillez entrer la valeur du mot clé à désactiver.
            Ce mot clé ne sera pas supprimé de la base de données.
            Pour les hashtags, inclure le symbole '#'\n""")
        keyword = keyword.replace('#', '%23')

    existing_keyword = session.query(KEYWORD).filter(KEYWORD.valeur == keyword)
    if not existing_keyword.all():
        # CASE 1 : keyword doesnt exists ==> stop
        print("Le mot clé demandé n'existe pas")
    else:
        existing_keyword.one().active = False
        session.commit()
        print("Le mot clé a été désactivé")
    session.close()
def activate_keyword(keyword=None):
    if not keyword:
        keyword = input(
            """Veuillez entrer la valeur du mot clé à réactiver.
            Pour les hashtags, inclure le symbole '#'\n""")
        keyword = keyword.replace('#', '%23')

    existing_keyword = session.query(KEYWORD).filter(KEYWORD.valeur == keyword)
    if not existing_keyword.all():
        # CASE 1 : keyword doesnt exists ==> proposer création
        create = input(
            "Le mot clé n'existe pas. Souhaitez vous le créer ? (o/n)\n")
        if create == "o":
            add_keyword(keyword)
    else:
        existing_keyword.one().active = True
        session.commit()
        print("Le mot clé a été réactivé")
    session.close()
def delete_keyword(keyword=None):
    if not keyword:
        keyword = input(
            """Veuillez entrer la valeur du mot clé à supprimer.
            Pour les hashtags, inclure le symbole '#'.
            Attention, cette action est irréversible\n""")
        keyword = keyword.replace('#', '%23')

        existing_keyword = (
            session.query(KEYWORD)
            .filter(KEYWORD.valeur == keyword))
        if not existing_keyword.all():
            # CASE 1 : keyword doesnt exists ==> stop
            print("Le mot clé demandé n'existe pas")
        else:
            # CASE 2 : keyword exists ==> delete
            existing_keyword.delete()
            session.commit()
            print("Le mot clé a été supprimé")
        session.close()
예제 #11
0
 def __init__(self):
     self.tweets = (session.query(TWEET.tweet_id, TWEET.month, TWEET.year,
                                  TWEET.envir3))