Deseja obter um resumo das notícias mais recentes de um feed RSS ou Atom? Quer vê-los no formato Markdown, em um documento do Microsoft Word ou em um dispositivo e-ink? Aqui está a ferramenta para você.
Este aplicativo é implantado como uma função AWS Lambda. A função baixa as entradas mais recentes de um feed RSS ou Atom, baixa o conteúdo vinculado, extrai texto e faz um resumo. A saída é escrita no formato JSON em um bucket S3. O objeto S3 permite leituras públicas para que possa ser facilmente baixado em um dispositivo externo.
Consulte as instruções no final sobre como executar e testar a função Lambda localmente.
Aqui está um exemplo da estrutura do arquivo JSON:
{
"title" : " Recent Announcements " ,
"entries" : [
{
"title" : " Amazon SageMaker Model Registry announces support for private model repositories " ,
"link" : " https://... " ,
"summary" : " Amazon SageMaker Model Registry now supports... "
},
{
"title" : " Announcing memory optimized Amazon EC2 R7a bare metal instances " ,
"link" : " https://... " ,
"summary" : " Amazon announces general availability... "
},
...
]
}
Por padrão, a função Lambda está programada para ser executada no início do dia, de segunda a sexta, para atualizar as novidades.
O URL do feed RSS, a programação cron para executar a função e instruções especiais que podem ser adicionadas ao prompt de resumo podem ser editadas no arquivo temnplate do AWS SAM ( template.yaml
).
Primeiro, edite o arquivo de modelo SAM ( template.yaml
):
RSS_LINK
padrão aponta para os anúncios mais recentes da AWS.RSS_LINK
por vez pode ser usado no modelo.ScheduleExpression
entre parênteses.SPECIAL_INSTRUCTIONS
que são adicionados ao prompt passado ao modelo. Você pode usar estas instruções especiais para adaptar o resumo às suas necessidades. Em seguida, no diretório sam-get-news
, crie e implante o aplicativo usando este comando:
sam build && sam deploy
Confirme a implantação quando solicitado.
Obtenha o URL de notícias da saída do comando sam deploy
.
Você pode baixar os documentos JSON usando curl
ou wget
no URL de notícias. Por exemplo:
curl https://BUCKET-NAME.s3.REGION.amazonaws.com/news.json
No diretório Markdown
, atualize o NEWS_URL
no arquivo markdown_news.py
para a saída do comando sam deploy
.
Em seguida, execute o script run.sh
para criar notícias em vários formatos.
O script run.sh
usa Pandoc para converter a saída Markdown do script markdown_news.py
em HTML, Microsoft Word e PDF. Siga as instruções no site Pandoc para instalar a ferramenta.
A saída do PDF é comentada por padrão em run.sh
porque requer a instalação de ferramentas PDF adicionais.
A maior parte do código MicroPython na pasta RaspberryPiPico
é específica para o modelo de display e-ink. Mais informações sobre o display e-ink podem ser encontradas aqui.
Para implantar o script no microcontrolador, baixe o IDE Thonny Python de código aberto para iniciantes para o seu sistema operacional.
Para permitir que o microcontrolador baixe o arquivo JSON do bucket S3, você precisa tornar esse arquivo público. Para fazer isso, você precisa atualizar o arquivo `template.yaml``.
Primeiro, adicione as seguintes propriedades ao recurso `NewsBucket`` (sua conta AWS pode não permitir esta configuração):
Properties :
PublicAccessBlockConfiguration :
BlockPublicPolicy : false
RestrictPublicBuckets : false
Em seguida, adicione a seguinte política de recursos (o nome e o caminho do arquivo devem ser iguais aos da variável de ambiente OUTPUT_FILE
):
NewsBucketPolicy :
Type : AWS::S3::BucketPolicy
Properties :
Bucket : !Ref NewsBucket
PolicyDocument :
Statement :
- Effect : Allow
Principal : ' * '
Action : s3:GetObject
Resource : !Sub 'arn:aws:s3:::${NewsBucket}/news.json'
Conecte o Raspberry Pi Pico via USB ao laptop. Em seguida, use o editor Thonny para copiar e executar o script display_news.py
MycroPython no dispositivo. No script, atualize a URL do arquivo news.json
e o nome e senha da rede WiFi que o Raspberry Pi Pico W irá se conectar para baixar o arquivo.
Este é o fluxo arquitetônico geral desta ferramenta:
O código da função Lambda pode ser executado na linha de comando para simplificar os testes locais. Para executar a função Lambda localmente, você precisa criar um ambiente virtual ( venv
) e instalar algumas dependências.
No diretório principal do projeto, crie um ambiente virtual:
python3 -m venv .venv
Em seguida, ative o ambiente virtual:
source .venv/bin/activate
No diretório Lambda/sam-get-news/get-news
, instale todas as dependências:
pip install -r requirements.txt
Defina a variável de ambiente usada pela função Lambda:
export RSS_LINK=https://aws.amazon.com/about-aws/whats-new/recent/feed/
export OUTPUT_BUCKET= < YOUR_BUCKET >
export OUTPUT_FILE=news.txt
Agora você pode executar a função localmente:
python app.py
Quando a função termina, você pode ver a saída no bucket S3 usando a AWS CLI:
aws s3 cp s3:// ${OUTPUT_BUCKET} / ${OUTPUT_FILE} - | more