from flask import Flask, jsonify, render_template, request, redirect, url_for from flask_basicauth import BasicAuth import constants import requests import json import peertube from peertube.rest import ApiException app = Flask(__name__) app.config['BASIC_AUTH_USERNAME'] = constants.AUTH_USERNAME app.config['BASIC_AUTH_PASSWORD'] = constants.AUTH_PASSWD app.config['BASIC_AUTH_FORCE'] = True basic_auth = BasicAuth(app) pt_conf = peertube.Configuration() pt_conf.host = "https://cinematheque.tube/api/v1" liste_videos = [] def update_video_list(token): pt_conf.access_token = token print('token :' + token) with peertube.ApiClient(pt_conf) as api_client: api_instance = peertube.MyUserApi(api_client) try: api_response = api_instance.users_me_videos_get(start=0,count=100, sort='-createdAt') print('nombre de videos apres requete API: ' + str(len(api_response.data))) return parse_video_list(api_response.data) except ApiException as e: print("Exception when calling MyUserApi->users_me_videos_get: %s\n" % e) def parse_video_list(unformatted_list): liste_videos = [] print('Nombre de videos à parser :' + str(len(unformatted_list))) for video in unformatted_list: liste_videos.append({ 'name':video.name, 'uuid':video.uuid, 'views': video.views, 'embed_path': video.embed_path, 'thumbnail_path': video.thumbnail_path, 'created_at' : video.created_at }) return liste_videos def get_token(): r = requests.post('https://cinematheque.tube/api/v1/users/token',data = { 'client_id':'zw484829p5q2e1xfo84ev907qnbhjcmz', 'client_secret':'3rYtuIWCbwl3OjWdXg5V3nmY1PKBe1Rt', 'grant_type':'password', 'response_type':'code', 'username': constants.PT_USERNAME, 'password':constants.PT_PASSWD }) return json.loads(r.text)['access_token'] @app.route('/') def index(): return render_template('index.html') @app.route('/getVideos') def get_videos(): global liste_videos # Faire en sorte de garder le résultat temporairement en cache token = get_token() liste_videos = update_video_list(token) return(json.dumps(liste_videos)) if __name__ == '__main__': app.run()