<jupyter_start><jupyter_text>import syssys.argv[0] (nom du fichier)sys.argv[1] (1er paramètre, etc...) Documentation de l'API :https://github.com/GeneralMills/pytrends  open issues Limites de requêtes sur Google :- générer un string aléatoire à passer en paramètre custom_useragenthttps://github.com/GeneralMills/pytrends/issues/77Format JSON :- quel format lu par chart.js, d3.js ?http://stackoverflow.com/questions/24929931/drawing-line-chart-in-chart-js-with-json-responsePlus de 5 recherches à la fois :- cf open issues sur pytrendshttps://github.com/GeneralMills/pytrends/issues/77[résolu] Gérer les timestamps et timezones :- cf : https://docs.python.org/3/library/datetime.htmldatetime.tzinfo  Les tendances sur les recherches - 'Élection présidentielle française de 2017' : '/m/0n49cn3' (Élection) Codes associés aux candidats :- <NAME> : '/m/047drb0' (Ancien Premier ministre français)- <NAME> : '/m/0fqmlm' (Ancien Ministre de l’Écologie, du Développement durable et de l’Énergie)- <NAME> : '/m/0551vp' (Homme politique)- <NAME> : '/m/02y2cb' (Homme politique)- <NAME> : '/m/02qg4z' (Président de la République française)- <NAME> : '/m/04zzm99' (Homme politique)- <NAME> : '/m/05zztc0' (Ecologiste)- <NAME> (Debout la France) : '/m/0f6b18'- <NAME> (Indépendante) : '/m/061czc' (Ancienne Ministre de l'Intérieur de France)- <NAME> (LO) : pas dispo- <NAME> (NPA) : '/m/0gxyxxy'- <NAME> : '/m/011ncr8c' (Ancien Ministre de l'Économie et des Finances)- <NAME> : '/m/047fzn' Codes associés aux partis :- LR : '/g/11b7n_r2jq'- PS : '/m/01qdcv'- FN : '/m/0hp7g'- EELV : '/m/0h7nzzw'- FI (France Insoumise) : pas dispo ... renvoie vers le PCF- PCF : '/m/01v8x4'- Debout la France : '/m/02rwc3q'- MoDem : '/m/02qt5xp' (Mouvement Démocrate)- Lutte Ouvrière : '/m/01vvcv'- Nouveau Parti Anticapitalise : '/m/04glk_t'- En marche! : pas dispo<jupyter_code>TrendReq('mdp', 'user', custom_useragent=None).suggestions("debout la france")<jupyter_output><empty_output><jupyter_text>Fonction qui sauvegarde les requetes via l'API en JSON<jupyter_code>def trends_to_json(query='candidats', periode='7d', geo='FR'):

    # Formats possibles pour la date : now 1-H, now 4-H, now 1-d, now 7-d, today 1-m, today 3-m
    periodes = {'1h': 'now 1-H', '4h': 'now 4-H', '1d': 'now 1-d', '7d': 'now 7-d',
                '1m': 'today 1-m','3m': 'today 3-m'}

    # Les termes de recherche (5 au maximum separes par des virgules)
    # On associe a un type de recherche la liste des parametres correspondants
    queries = {'candidats': '/m/047drb0, /m/0fqmlm', 'partis': 'a completer'} 
    # se referer a la table de correspondance ci-dessus
    
    if (query not in queries) or (periode not in periodes):
        print('Erreur de parametre')
        return
    
    try:
        # Connection to Google (use a valid Google account name for increased query limits)
        pytrend = TrendReq('<EMAIL>', 'projet_fil_rouge', custom_useragent=None)

        # Possibilite de periode personnalise : specifier deux dates (ex : 2015-01-01 2015-12-31)

        # geographie : FR (toute France), FR-A ou B ou C... (region de France par ordre alphabetique)
        # categorie politique : cat = 396

        # On fait la requete sur Google avec les parametres choisis
        payload = {'q': queries[query], 'geo': geo, 'date': periodes[periode]}
        df = pytrend.trend(payload, return_type='dataframe')

        # Formattage de la date
        if periode in ['1h', '4h', '1d', '7d']:
            dates = []
            rdict = {' à': '', ' UTC−8': '', 'janv.': '01', 'févr.': '02', 'mars': '03', 'avr.': '04', 
                     'mai': '05', 'juin': '06', 'juil.': '07', 'août': '08', 'sept.': '09', 'oct.': '10', 
                     'nov.': '11', 'déc.': '12'}
            robj = re.compile('|'.join(rdict.keys()))
            for date in df['Date']: # converting str to datetime object
                t = datetime.strptime(robj.sub(lambda m: rdict[m.group(0)], date),
                                      '%d %m %Y %H:%M') + timedelta(hours=9) # GMT+1
                dates.append(datetime.strftime(t, '%d-%m %H:%M'))
            df['Date'] = dates

        df.set_index('Date', inplace=True)
        
        # Sauvegarde en JSON
        df.to_json(query + '_' + periode + '.json', orient='split')
        status = 'sauvegarde dans : ' + query + '_' + periode + '.json'
    
    except:
        print('Erreur')
    
    return<jupyter_output><empty_output><jupyter_text>On lance la fonction<jupyter_code>trends_to_json(query='candidats', periode='1h')
pd.read_json('candidats_4h.json', orient='split')<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.16017316017316016, 'fraction_numerical': 0.03571428571428571, 'mean_word_length': 3.1856884057971016, 'pattern_counts': {'":': 0, '<': 27, '<?xml version=': 0, '>': 27, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '284934', 'license': 'MIT', 'n_tokens_mistral': 1827, 'n_tokens_neox': 1690, 'n_words': 443, 'path': 'site/gtrends/data/.ipynb_checkpoints/script_trends-checkpoint.ipynb', 'repo_name': 'verycourt/Elections', 'size': '4763'}