A python script to get RSS feeds from french-speaking Belgian broadcasting online video service.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.9KB

  1. # coding: utf-8
  2. def makefeedauvio(pid):
  3. """get an Atom feed from the pid of an auvio (pid is in the URL when you're on a show page)"""
  4. import requests as rq
  5. from bs4 import BeautifulSoup
  6. from feedgen.feed import FeedGenerator
  7. #generate Atom Feed
  8. fg = FeedGenerator()
  9. fg.id('http://www.rtbf.be/auvio/')
  10. fg.title(u'Auvio')
  11. fg.logo('http://www.static.rtbf.be/tv/media/images/ico/favicon-auvio-32x32.png')
  12. fg.subtitle(u"Flux Atom d'une émission d'Auvio.")
  13. feedlink = u'http://gauchiste.club/auvio/' + str(pid)
  14. fg.link(href=(feedlink), rel='self')
  15. fg.language(u'fr_BE')
  16. #obtain page html
  17. lien="https://www.rtbf.be/auvio/archives?pid="+str(pid)+"&contentType=complete"
  18. response = rq.get(lien)
  19. soup = BeautifulSoup(response.content, features="lxml")
  20. jolihtml=soup.prettify()
  21. listpage=jolihtml.split()
  22. #analyze the html from the page
  23. i=0
  24. autravail=False
  25. listinfo=[]
  26. lepremier=True
  27. TitreIncomplet=True
  28. #Grosse boucle d'analyse du HTML et mise en place dans un fichier XML
  29. for elements in listpage:
  30. if "rtbf-media-li__header" in elements and autravail== False:
  31. #on va ici que si on commence une partie avec des infos interessantes, sinon la boucle va dans le else non noté et rajoute juste un à i
  32. autravail = True
  33. elif autravail == True and "/time" in elements :
  34. #normalement, on a la liste complète avec les infos qui nous conviennent ici. On arrive ici uniquement quand le elif en dessous a fini de tourner.
  35. autravail = False
  36. #fc = fg.add_entry()
  37. if lepremier==True:
  38. #We don't use the first list because the first list given by the methode give us something totally unrelated and useless in all cases
  39. lepremier=False
  40. else:
  41. #l'id et le lien
  42. monHref=listinfo[3]
  43. IdLien=monHref[6:-2]
  44. #le titre
  45. j=4
  46. titre=u''
  47. #4 car le titre est en position 4 dans la liste
  48. while TitreIncomplet==True:
  49. if '/a' in listinfo[j]:
  50. TitreIncomplet=False
  51. titre=titre + IdLien
  52. else:
  53. titre=titre+listinfo[j]+u' '
  54. j+=1
  55. #mettre les éléments dans feed
  56. fe = fg.add_entry()
  57. fe.id(IdLien)
  58. fe.title(titre)
  59. fe.link(href=IdLien)
  60. TitreIncomplet=True
  61. listinfo=[]
  62. elif autravail== True:
  63. #au travail, on rajoute dans une liste les éléments qui nous interessent.
  64. toadd=listpage[int(i)]
  65. listinfo.append(toadd)
  66. i+=1
  67. #exporter le feed
  68. #atomfeed = fg.atom_str(pretty=True)
  69. fg.atom_file(u''+str(pid)+u'.xml')
  70. #return atomfeed