#!/usr/bin/env python 
# -*- coding: UTF-8 -*-

import urllib.request, re, os, time, requests, datetime

def recup_score(cand,date) :
    date= str(date)
    cand = str(cand)
    url = "https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/fr.wikipedia/all-access/user/"+cand+"/daily/2017020900/"+date+"00"

    file = urllib.request.urlopen(url)
    
def recup_un_jour(jour,mois,année) :
    jour = str(jour)
    mois = str(mois)
    année = str(année)
    url = "https://wikimedia.org/api/rest_v1/metrics/pageviews/top/fr.wikinews/all-access/"+année+"/"+mois+"/"+jour
    file = urllib.request.urlopen(url)

    a = 1

    for i in file :
        i = i.decode('utf-8')
        i = i.split('{"article":"')
    

    listar = []
    listvues = []
    while a < len(i[:]) :
        i[a]=i[a].replace('},',"")
        jk = i[a].split('","views":')
        j = jk[0]
        k = jk[1].split(',"rank"')
        k = k[0]
        listar.append(j)
        listvues.append(k)
        a = a + 1

    return {"liste_articles" : listar, "liste_vues" : listvues }

compteur = 0

while compteur < 1 :
    try : 
        #Date antérieure d'un jour 
        date_obj = datetime.datetime.now() - datetime.timedelta(days=1)
        j = date_obj.day
        if j < 10 :
            j = '0'+str(j)
        #print(j)

        mois = date_obj.month
        if mois < 10 :
            mois = '0'+str(mois)
        #print(mois)

        année = str(date_obj.year)
        #print(année)
        jour = []
        jour.append(j)


        tot_semaine = {}

        for i in jour :
            retour = recup_un_jour(i,mois,année)

            u = 0
            for a in retour["liste_articles"] :
                try : 
                    tot_semaine[retour["liste_articles"][u]] = int(tot_semaine[retour["liste_articles"][u]]) + int(retour["liste_vues"][u]) 
                except :
                    tot_semaine[retour["liste_articles"][u]] = int(retour["liste_vues"][u])
                u = u + 1


        list_tot = []
        mavar = tot_semaine
        montri = sorted(mavar, key=lambda x: x[0])
        for i in montri :
            list_tot.append((tot_semaine[i], i))

            #print(i, ' vues ', tot_semaine[i])
        list_tot.sort(reverse=True)

        #print(list_tot)

        a = 0
        #Heure
        
        heure = time.strftime('%H')
        
        #heure = '03'
        print(heure)
        liste_articles_vus = []
        b = contenu_plein = 0
        j = str(j)
        mois = str(mois)
        année = str(année)
        contenu = '{{Discussion utilisateur:Mattho69/Pages les plus consultées}}'+ "\n" +'Liste des pages les plus vues le '+ j +'/'+ mois +'/'+ année +' : '+"\n"
        print('test')
        while a < 100 : 
            u = str(list_tot[a]).split(", '")
            try : 
                test = u[1]
                art = u[1].split("')")
            except : 
                u = str(list_tot[a]).split(', "')
                art = u[1].split('")')

            try :

                if heure == '03' and b == 0 :
                    vues = u[0][1:]
                    if not art[0].startswith('Wikinews:') and not art[0].startswith('Spécial:') and not art[0].startswith('Special:') and not art[0].startswith('Sp?cial:') :
                        art = "# [[" + art[0].replace('_',' ').replace('Catégorie:',':Catégorie:') + "]] avec {{unité|"+ str(vues) + "|vues}}"
                        contenu = contenu + art +"\n"
                    
                    contenu_plein = 1



            except :
                print('Article sauté')
            a = a + 1
            
        if contenu_plein == 1 :
            username = 'Matthobot'
            password = 'Matthobot@onemb59hk1offac6qpdboa65vueo6jba'
            baseurl = 'https://fr.wikinews.org/w/'
            summary = "[Action Bot] Mise à jour des pages les plus consultées"
            message = contenu
            title = "Utilisateur:Mattho69/Pages les plus consultées"

            # Login request
            payload = {'action': 'query', 'format': 'json', 'utf8': '', 'meta': 'tokens', 'type': 'login'}
            r1 = requests.post(baseurl + 'api.php', data=payload)

            #print('1')
            # login confirm
            login_token = r1.json()['query']['tokens']['logintoken']
            payload = {'action': 'login', 'format': 'json', 'utf8': '', 'lgname': username, 'lgpassword': password, 'lgtoken': login_token}
            r2 = requests.post(baseurl + 'api.php', data=payload, cookies=r1.cookies)

            #print('2')
            # get edit token2
            params3 = '?format=json&action=query&meta=tokens&continue='
            r3 = requests.get(baseurl + 'api.php' + params3, cookies=r2.cookies)
            edit_token = r3.json()['query']['tokens']['csrftoken']

            #print('3')
            edit_cookie = r2.cookies.copy()
            edit_cookie.update(r3.cookies)
            #print (edit_token)

            # save action
            #payload = {'action': 'edit', 'assert': 'user', 'format': 'json', 'utf8': '', 'text': message,'summary': summary, 'title': title, 'token': edit_token}
            r4 = requests.post(baseurl + 'api.php', data=payload, cookies=edit_cookie)

            print("done")
            
        time.sleep(600)
        
        if heure == '04' :
            b = 0
    except :
        print("échec")
        time.sleep(900)
        
        
    
    
    
    
    

    
11
test