From 98862ad0ebea27eb7caa3e828117b3daa7ba88aa Mon Sep 17 00:00:00 2001 From: vincent Date: Thu, 25 Apr 2019 17:27:49 +0200 Subject: [PATCH] add emission parser to api --- backend/emission.py | 47 +++++++++++++++++++++++++++++++++++++++++++++ backend/run.py | 12 ++++++++++-- 2 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 backend/emission.py diff --git a/backend/emission.py b/backend/emission.py new file mode 100644 index 0000000..fd14d9d --- /dev/null +++ b/backend/emission.py @@ -0,0 +1,47 @@ +from bs4 import BeautifulSoup +import urllib.request +import re + +#debug +#import pprint + +def parse_emmission(strsearch): + URL="https://www.programme-tv.net/programme/canal-5/" + try: + response = urllib.request.urlopen(URL) + except urllib.error.URLError: + return False + + html = response.read() + parse=BeautifulSoup(html,"html.parser") + strsearch=strsearch.replace('É','E') + linkchaine=parse.find(text=re.compile(re.escape(strsearch))) + if linkchaine == None: + return "can't find channel" + link=linkchaine.parent.parent.find_next_sibling().find("a") + href=link['href'] + response = urllib.request.urlopen(href) + html = response.read() + parse=BeautifulSoup(html,"html.parser") + divcasting=parse.select_one(".descriptif") + casting=divcasting.find_all(href=re.compile("biographie")) + count=0 + for actor in casting: + casting[count]=actor.text + count+=1 + divsynopsis=parse.select_one(".episode-synopsis") + img=divsynopsis.find_next('img')['data-src'] + synopsis=divsynopsis.select_one(".d-b").text + return {'title':link['title'],'href':href,'casting':casting,'synopsis':remove_first_space(synopsis),'img':img} + + +def remove_first_space (string): + space_number=0 + for char in string: + if char.isspace(): + space_number+=1 + else: + break + return string[space_number:] + + diff --git a/backend/run.py b/backend/run.py index b2dfd3a..d5df105 100644 --- a/backend/run.py +++ b/backend/run.py @@ -2,7 +2,7 @@ from flask import Flask,request,make_response,redirect,url_for,render_template,j from flask_cors import CORS from Jsonfile import JSONfile from ReverseProxied import ReverseProxied - +import emission data= JSONfile("chaine.json") app=Flask(__name__,static_folder = "dist/static",template_folder="dist") app.wsgi_app = ReverseProxied(app.wsgi_app) @@ -20,7 +20,15 @@ def get_chaine(num): @app.route('/api/v1/chaine/', methods=['put']) def update_list(): data.parsechaine() - return "OK" + return jsonify("OK") + +@app.route('/api/v1/chaine//emission', methods=['GET']) +def get_emmission(num): + chaine=data.get_chaine(num) + if (chaine == "numero de chaine inconnue"): + return jsonify(chaine) + else: + return jsonify(emission.parse_emmission(chaine)) ##@app.errorhandler(404) ##def ma_page_404(error):