Compare commits
5
Commits
623bc9b74e
...
ec2696ee43
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ec2696ee43 | ||
|
|
52ba892d6f | ||
|
|
5478a1032c | ||
|
|
b11c840688 | ||
|
|
15994f11b1 |
@@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
@@ -0,0 +1,6 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class PodcastAggregatorConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'podcast_aggregator'
|
||||
@@ -0,0 +1,3 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
@@ -0,0 +1,49 @@
|
||||
import requests
|
||||
import xmltodict
|
||||
from urllib import request as urlrequest
|
||||
from apps.telegram_communication.utils import telegramUtils
|
||||
|
||||
|
||||
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'][0]
|
||||
today_title = today_object['title']
|
||||
today_podcast_url = data['rss']['channel']['item'][0]['enclosure']['@url']
|
||||
|
||||
return title,today_title,today_podcast_url
|
||||
|
||||
def download_news_mp3(url_mp3, filename):
|
||||
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 main():
|
||||
telegram = telegramUtils()
|
||||
url = "https://feeds.audiomeans.fr/feed/44f6a116-20a6-44c4-98c4-b3e1bdd46dce.xml"
|
||||
today_podcast = rss_to_dict(url)
|
||||
print(today_podcast)
|
||||
file= pretty_filename(today_podcast[1],'mp3')
|
||||
download_news_mp3(today_podcast[2],file)
|
||||
telegram.send_document(file,str(today_podcast[0])+" "+str(today_podcast[1]))
|
||||
|
||||
main()
|
||||
@@ -0,0 +1,3 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
@@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
@@ -0,0 +1,6 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class TelegramCommunicationConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'telegram_communication'
|
||||
@@ -0,0 +1,3 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
@@ -0,0 +1,73 @@
|
||||
import os
|
||||
import requests
|
||||
from apps.bitwarden.utils import bitwardenUtils
|
||||
|
||||
|
||||
class telegramUtils():
|
||||
|
||||
token_uid = "a88dbe52-b862-422a-a116-b479009733ab"
|
||||
chat_id_uid = "13e948ab-494a-4b09-bb3a-b47900974cef"
|
||||
|
||||
__bitwarden_access_token = os.environ.get('bitwarden_access_token')
|
||||
__bitwarden_organization_id = os.environ.get('bitwarden_organization_id')
|
||||
|
||||
bw = bitwardenUtils(__bitwarden_access_token,__bitwarden_organization_id)
|
||||
|
||||
__TOKEN = bw.read_value_secret(token_uid)
|
||||
__CHAT_ID = bw.read_value_secret(chat_id_uid)
|
||||
|
||||
|
||||
|
||||
def get_chat_id(self):
|
||||
# Source - https://stackoverflow.com/a/75118239
|
||||
# Posted by Yasantha Biyuranga, modified by community. See post 'Timeline' for change history
|
||||
# Retrieved 2026-06-30, License - CC BY-SA 4.0
|
||||
|
||||
url = f"https://api.telegram.org/bot{self.__TOKEN}/getUpdates"
|
||||
print(requests.get(url).json())
|
||||
return 0
|
||||
|
||||
def send_message(self,message):
|
||||
# Source - https://stackoverflow.com/a/75118239
|
||||
# Posted by Yasantha Biyuranga, modified by community. See post 'Timeline' for change history
|
||||
# Retrieved 2026-06-30, License - CC BY-SA 4.0
|
||||
|
||||
url = f"https://api.telegram.org/bot{self.__TOKEN}/sendMessage?chat_id={self.__CHAT_ID}&text={message}"
|
||||
#print(requests.get(url).json()) # this sends the message
|
||||
|
||||
result = requests.get(url).json() # this sends the message
|
||||
send_result = result['ok']
|
||||
return send_result
|
||||
|
||||
def send_document(self,file,message=''):
|
||||
url = 'https://api.telegram.org/bot{}/sendDocument'.format(self.__TOKEN)
|
||||
data = {'chat_id': self.__CHAT_ID ,'caption': message}
|
||||
document = open(file, 'rb')
|
||||
files = {'document': document}
|
||||
response = requests.post(url, data=data, files=files)
|
||||
result = response.json()
|
||||
return result['ok'],result['result']['message_id'],result
|
||||
|
||||
#example send_document('apps/Le_journal_10h00_du_30_06_2026.mp3')
|
||||
|
||||
def delete_message(self,message_id_list):
|
||||
send_result = []
|
||||
for message_id in message_id_list:
|
||||
url = f"https://api.telegram.org/bot{self.__TOKEN}/deleteMessage?chat_id={self.__CHAT_ID}&message_id={message_id}"
|
||||
|
||||
result = requests.get(url).json()
|
||||
send_result.append(["Message id: "+str(message_id),result['ok']])
|
||||
return send_result,result
|
||||
|
||||
|
||||
telegram = telegramUtils()
|
||||
#send_message("Hello")
|
||||
print(telegram.send_document('apps/Le_journal_10h00_du_30_06_2026.txt',"News du jour 2"))
|
||||
#print(telegram.send_document('apps/Le_journal_10h00_du_30_06_2026.txt'))
|
||||
|
||||
#just delete everything , for testing
|
||||
list_message_to_delete = []
|
||||
for i in range(26):
|
||||
list_message_to_delete.append(i)
|
||||
|
||||
print(telegram.delete_message(list_message_to_delete))
|
||||
@@ -0,0 +1,3 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
Reference in New Issue
Block a user