90 lines
2.4 KiB
Python
90 lines
2.4 KiB
Python
import requests
|
|
import xmltodict
|
|
from urllib import request as urlrequest
|
|
import tempfile
|
|
#Django import
|
|
from apps.telegram_communication.utils import telegramUtils
|
|
from .models import podcastData
|
|
|
|
|
|
|
|
|
|
proxy_url = 'http://gluetun-svc.gluetun.svc:8888'
|
|
proxy = urlrequest.ProxyHandler({
|
|
'http': proxy_url,
|
|
'https': proxy_url # Add the handler for HTTPS
|
|
})
|
|
|
|
proxies = {
|
|
"http" : proxy_url,
|
|
"https" : proxy_url
|
|
}
|
|
|
|
def rss_to_dict(url):
|
|
response = requests.get(url)
|
|
data = xmltodict.parse(response.content)
|
|
|
|
print(data['rss'])
|
|
|
|
title = data['rss']['channel']['title']
|
|
|
|
#Get the keys if needed of debug
|
|
#print(data['rss'].keys())
|
|
|
|
#use first object as it's ordered in a chronological order
|
|
|
|
|
|
today_object = data['rss']['channel']['item']
|
|
if isinstance(today_object, list):
|
|
today_object = data['rss']['channel']['item'][0]
|
|
|
|
today_title = today_object['title']
|
|
today_podcast_url = today_object['enclosure']['@url']
|
|
|
|
return title,today_title,today_podcast_url
|
|
|
|
def download_news_mp3(url_mp3, filename):
|
|
|
|
opener = urlrequest.build_opener(proxy)
|
|
|
|
urlrequest.install_opener(opener)
|
|
|
|
print("Downloading : " + filename +" -- " + url_mp3)
|
|
try:
|
|
|
|
urlrequest.urlretrieve(url_mp3, filename)
|
|
|
|
except:
|
|
print("Can't download " + filename +" -- " + url_mp3 + " == Cancelling")
|
|
return 0
|
|
|
|
def pretty_filename(filename,extension=''):
|
|
filename = filename.replace(' ', '_')
|
|
pretty_filename = filename.replace('/', '_')
|
|
if extension != '':
|
|
extension = str('.'+extension)
|
|
return pretty_filename+extension
|
|
|
|
def podcasts():
|
|
telegram = telegramUtils()
|
|
|
|
#clear all expired messages before
|
|
telegram.clear_expired_messages()
|
|
|
|
podcasts = podcastData.objects.filter(enabled=True)
|
|
for podcast in podcasts:
|
|
url = podcast.podcast_url
|
|
|
|
today_podcast = rss_to_dict(url)
|
|
print(today_podcast)
|
|
pretty_file_name = pretty_filename(today_podcast[1],'mp3')
|
|
|
|
temp = tempfile.TemporaryDirectory()
|
|
temp_path = temp.name.replace("\\", "/")
|
|
file_path = temp_path+"/"+pretty_file_name
|
|
download_news_mp3(today_podcast[2],file_path)
|
|
print(file_path)
|
|
telegram.send_document(file_path,str(today_podcast[0])+" "+str(today_podcast[1]))
|
|
|
|
#main()
|