jnfilter @ de76419cf301a986831dca0d802c73fd07223dbd

fix: Mexe com o metadata

Messes with metadata to try make some clients detect my feed as a
diferente one.
  1diff --git a/README.md b/README.md
  2index 65d37ebae0b20bd4618d2c2966dc611ee7b5a4f6..71a700f3f7bd664861b2e9e9917cf3d1d6ddfc48 100644
  3--- a/README.md
  4+++ b/README.md
  5@@ -16,11 +16,11 @@ - `genera`
  6 
  7 ## Para usuarios
  8 
  9-Por padrão ele só pega a série principal lançada toda sexta. Para usar basta 
 10+Por padrão ele só pega a série principal lançada toda sexta. Para usar basta
 11 adicionar a seguinte URL no seu agregador:
 12 
 13 ```
 14-https://jnfilter.herokuapp.com/
 15+https://jnfilter.gabrielgio.me/
 16 ```
 17 
 18 Mas caso você queira, você pode escolher mais alguns seguimentos. Por exemplo,
 19@@ -28,20 +28,36 @@ se voce quer ver somente a série principal e canecas de mamicas você
 20 adicionaria o seguinte URL no seu agregador:
 21 
 22 ```
 23-https://jnfilter.herokuapp.com/?q=mamicas,nerdcast
 24+https://jnfilter.gabrielgio.me/?q=mamicas,nerdcast
 25 ```
 26 
 27-Quer nerdcast e nerdcash? 
 28+Quer nerdcast e nerdcash?
 29 
 30 ```
 31-https://jnfilter.herokuapp.com/?q=nerdcash,nerdcast
 32+https://jnfilter.gabrielgio.me/?q=nerdcash,nerdcast
 33 ```
 34 
 35 E por aí vai, seguindo os seguimentos listados acima.
 36 
 37+## Pocketcast
 38+
 39+Adicionei recentemente uma parte no código pare mexer na metadata do feed
 40+(mudar titulo, nome, descrição, etc) para fazer com que o Pocketcast reconheça
 41+o feed gerado como se fosse outro feed. Eles usam a metadata para decidir se um
 42+feed e novo, então como eu não mexia na metadata ele gerava um link para o feed
 43+original do jovem nerd.
 44+
 45+Entao os usuarios do Pocketcast tem que ir ao https://pocketcasts.com/submit/
 46+para submeterem a sua URL. Observação, esse processo de submit deles e meio
 47+cagado, então se ele não oferecer o feed certo tente trocar as ordens dos
 48+parâmetro, se tiver `nerdcast,mamicas` troque para `mamicas,nercast`
 49+
 50+o ideal e que cliente de podcast nao obrigue a fazer isso mas fazer o que as outras
 51+opções fazem pior.
 52+
 53 ## Para programadores
 54 
 55-E um projeto simples feito em cima do FastApi. Ele vai pegar o _feed_ e 
 56+E um projeto simples feito em cima do FastApi. Ele vai pegar o _feed_ e
 57 filtrar os itens do _feed_ do podcast. Não tem cache nem nada sendo armazenado,
 58 todo processamento e feito a partir do feed para cada requisição.
 59 
 60diff --git a/jnfilter/main.py b/jnfilter/main.py
 61index 9795b8cd1f470689f01eafc7e8f1af3092295c9c..193975fb757caa8556d9e68f6a8e0c759b3af8bc 100644
 62--- a/jnfilter/main.py
 63+++ b/jnfilter/main.py
 64@@ -24,9 +24,13 @@     "tech": "NerdTech [0-9]+ -",
 65     "genera": "Generacast [0-9]+ -",
 66 }
 67 
 68-register_namespace("googleplay", "http://www.google.com/schemas/play-podcasts/1.0")
 69-register_namespace("itunes", "http://www.itunes.com/dtds/podcast-1.0.dtd")
 70-register_namespace("atom", "http://www.w3.org/2005/Atom")
 71+ATOM =  "http://www.w3.org/2005/Atom"
 72+ITUNES =  "http://www.itunes.com/dtds/podcast-1.0.dtd"
 73+GOOGLEPLAY = "http://www.google.com/schemas/play-podcasts/1.0"
 74+
 75+register_namespace("googleplay", GOOGLEPLAY)
 76+register_namespace("itunes", ITUNES)
 77+register_namespace("atom", ATOM)
 78 
 79 
 80 class XMLResponse(Response):
 81@@ -44,6 +48,18 @@ def filter_xml(xml_str: str, series: List[str]) -> str:
 82     tree = ElementTree(fromstring(xml_str))
 83     tree_root = tree.getroot()
 84     for channel in tree_root.findall("./channel"):
 85+        tag = f' [{",".join(series)}]'.upper()
 86+
 87+        channel.find("title").text += tag
 88+        channel.find("description").text += tag
 89+        channel.find("link").text += f"?{tag}"
 90+        channel.find(f"{{{ITUNES}}}author").text += tag
 91+        channel.find(f"{{{GOOGLEPLAY}}}author").text += tag
 92+        channel.find(f"{{{ITUNES}}}subtitle").text += tag
 93+        channel.find(f"{{{ITUNES}}}summary").text += tag
 94+
 95+        print({elem.tag for elem in channel.iter()})
 96+
 97         for item in channel.findall("item"):
 98             title = item.find("title").text
 99             if not match(title, series):
100diff --git a/setup.py b/setup.py
101index 96868e598f0a49eedf64aa4fa9bf060539da141f..8f95a75c9c6878bc492bd789794aa4ffa918dd1f 100644
102--- a/setup.py
103+++ b/setup.py
104@@ -8,7 +8,7 @@ ]
105 
106 
107 setup(name='jnfilter',
108-    version='0.2.0',
109+    version='0.2.1',
110     description='A FastAPI server to filter Nercast podcast feed',
111     url='https://git.sr.ht/~gabrielgio/jnfilter',
112     author='Gabriel Arakaki Giovanini',