aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Arakaki Giovanini <mail@gabrielgio.me>2022-06-26 17:01:27 +0200
committerGabriel Arakaki Giovanini <mail@gabrielgio.me>2022-06-26 17:48:04 +0200
commitde76419cf301a986831dca0d802c73fd07223dbd (patch)
treec662b4f0d87b99a6feab324c9b83c4ba672e1efc
parent6b5cc98c174715494ee3bf516923374b7b4ba694 (diff)
downloadjnfilter-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.md28
-rw-r--r--jnfilter/main.py22
-rw-r--r--setup.py2
3 files changed, 42 insertions, 10 deletions
diff --git a/README.md b/README.md
index 65d37eb..71a700f 100644
--- a/README.md
+++ b/README.md
@@ -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):
diff --git a/setup.py b/setup.py
index 96868e5..8f95a75 100644
--- a/setup.py
+++ b/setup.py
@@ -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',