diff options
-rw-r--r-- | README.md | 28 | ||||
-rw-r--r-- | jnfilter/main.py | 22 | ||||
-rw-r--r-- | setup.py | 2 |
3 files changed, 42 insertions, 10 deletions
@@ -16,11 +16,11 @@ diferentes. Os seguintes seguimentos são suportados: ## Para usuarios -Por padrão ele só pega a série principal lançada toda sexta. Para usar basta +Por padrão ele só pega a série principal lançada toda sexta. Para usar basta adicionar a seguinte URL no seu agregador: ``` -https://jnfilter.herokuapp.com/ +https://jnfilter.gabrielgio.me/ ``` Mas caso você queira, você pode escolher mais alguns seguimentos. Por exemplo, @@ -28,20 +28,36 @@ se voce quer ver somente a série principal e canecas de mamicas você adicionaria o seguinte URL no seu agregador: ``` -https://jnfilter.herokuapp.com/?q=mamicas,nerdcast +https://jnfilter.gabrielgio.me/?q=mamicas,nerdcast ``` -Quer nerdcast e nerdcash? +Quer nerdcast e nerdcash? ``` -https://jnfilter.herokuapp.com/?q=nerdcash,nerdcast +https://jnfilter.gabrielgio.me/?q=nerdcash,nerdcast ``` E por aí vai, seguindo os seguimentos listados acima. +## Pocketcast + +Adicionei recentemente uma parte no código pare mexer na metadata do feed +(mudar titulo, nome, descrição, etc) para fazer com que o Pocketcast reconheça +o feed gerado como se fosse outro feed. Eles usam a metadata para decidir se um +feed e novo, então como eu não mexia na metadata ele gerava um link para o feed +original do jovem nerd. + +Entao os usuarios do Pocketcast tem que ir ao https://pocketcasts.com/submit/ +para submeterem a sua URL. Observação, esse processo de submit deles e meio +cagado, então se ele não oferecer o feed certo tente trocar as ordens dos +parâmetro, se tiver `nerdcast,mamicas` troque para `mamicas,nercast` + +o ideal e que cliente de podcast nao obrigue a fazer isso mas fazer o que as outras +opções fazem pior. + ## Para programadores -E um projeto simples feito em cima do FastApi. Ele vai pegar o _feed_ e +E um projeto simples feito em cima do FastApi. Ele vai pegar o _feed_ e filtrar os itens do _feed_ do podcast. Não tem cache nem nada sendo armazenado, todo processamento e feito a partir do feed para cada requisição. diff --git a/jnfilter/main.py b/jnfilter/main.py index 9795b8c..193975f 100644 --- a/jnfilter/main.py +++ b/jnfilter/main.py @@ -24,9 +24,13 @@ RegexCollection = { "genera": "Generacast [0-9]+ -", } -register_namespace("googleplay", "http://www.google.com/schemas/play-podcasts/1.0") -register_namespace("itunes", "http://www.itunes.com/dtds/podcast-1.0.dtd") -register_namespace("atom", "http://www.w3.org/2005/Atom") +ATOM = "http://www.w3.org/2005/Atom" +ITUNES = "http://www.itunes.com/dtds/podcast-1.0.dtd" +GOOGLEPLAY = "http://www.google.com/schemas/play-podcasts/1.0" + +register_namespace("googleplay", GOOGLEPLAY) +register_namespace("itunes", ITUNES) +register_namespace("atom", ATOM) class XMLResponse(Response): @@ -44,6 +48,18 @@ def filter_xml(xml_str: str, series: List[str]) -> str: tree = ElementTree(fromstring(xml_str)) tree_root = tree.getroot() for channel in tree_root.findall("./channel"): + tag = f' [{",".join(series)}]'.upper() + + channel.find("title").text += tag + channel.find("description").text += tag + channel.find("link").text += f"?{tag}" + channel.find(f"{{{ITUNES}}}author").text += tag + channel.find(f"{{{GOOGLEPLAY}}}author").text += tag + channel.find(f"{{{ITUNES}}}subtitle").text += tag + channel.find(f"{{{ITUNES}}}summary").text += tag + + print({elem.tag for elem in channel.iter()}) + for item in channel.findall("item"): title = item.find("title").text if not match(title, series): @@ -8,7 +8,7 @@ requirements = [ setup(name='jnfilter', - version='0.2.0', + version='0.2.1', description='A FastAPI server to filter Nercast podcast feed', url='https://git.sr.ht/~gabrielgio/jnfilter', author='Gabriel Arakaki Giovanini', |