diff options
| author | Gabriel Arakaki Giovanini <mail@gabrielgio.me> | 2022-06-26 17:01:27 +0200 | 
|---|---|---|
| committer | Gabriel Arakaki Giovanini <mail@gabrielgio.me> | 2022-06-26 17:48:04 +0200 | 
| commit | de76419cf301a986831dca0d802c73fd07223dbd (patch) | |
| tree | c662b4f0d87b99a6feab324c9b83c4ba672e1efc | |
| parent | 6b5cc98c174715494ee3bf516923374b7b4ba694 (diff) | |
| download | jnfilter-de76419cf301a986831dca0d802c73fd07223dbd.tar.gz jnfilter-de76419cf301a986831dca0d802c73fd07223dbd.tar.bz2 jnfilter-de76419cf301a986831dca0d802c73fd07223dbd.zip | |
fix: Mexe com o metadata
Messes with metadata to try make some clients detect my feed as a
diferente one.
| -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', | 
