O GitHub oferece uma API que permite gerenciar notificações e repositórios programaticamente. Combinando isso com um script em shell, você pode desativar notificações para repositórios favoritos diretamente pela CLI.
-
Gere um token de acesso pessoal (PAT) no GitHub com as permissões necessárias:
- Vá para Settings > Developer Settings > Personal Access Tokens no GitHub.
- Crie um token com escopos:
repo
enotifications
.
-
Use o script abaixo, substituindo
<YOUR_GITHUB_TOKEN>
pelo token gerado.
#!/bin/bash
# Configurações
GITHUB_USERNAME="<SEU_USUÁRIO_GITHUB>"
GITHUB_TOKEN="<SEU_TOKEN_DE_ACESSO>"
# URL base da API do GitHub
API_URL="https://api.github.com"
# Função para desativar notificações
disable_notifications() {
local repo="$1"
echo "Desativando notificações para o repositório: $repo"
curl -s -X PATCH \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
"${API_URL}/repos/${GITHUB_USERNAME}/${repo}/subscription" \
-d '{"ignored": true}'
}
# Obtendo repositórios favoritos
echo "Buscando repositórios favoritos..."
favorite_repos=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
"${API_URL}/users/${GITHUB_USERNAME}/starred" | jq -r '.[].full_name')
if [ -z "$favorite_repos" ]; then
echo "Nenhum repositório favorito encontrado."
exit 0
fi
# Desativando notificações para cada repositório favorito
for repo in $favorite_repos; do
disable_notifications "$repo"
done
echo "Notificações desativadas para todos os repositórios favoritos."
-
Instale o
jq
:- No Ubuntu/Debian:
sudo apt install jq
- No macOS:
brew install jq
- No Ubuntu/Debian:
-
Execute o Script: Salve o script como
disable_github_notifications.sh
e torne-o executável:chmod +x disable_github_notifications.sh ./disable_github_notifications.sh
-
Busca Repositórios Favoritos: O endpoint
/users/{username}/starred
da API do GitHub retorna os repositórios marcados como favoritos. -
Desativa Notificações: Para cada repositório favorito, o script envia uma requisição
PATCH
para o endpoint/repos/{owner}/{repo}/subscription
com o campo"ignored": true
. -
Resultado: As notificações para os repositórios favoritos são desativadas.
- Certifique-se de proteger o token (
GITHUB_TOKEN
), pois ele concede acesso à sua conta GitHub. - Se o número de repositórios for grande, o script pode precisar de paginação para listar todos (use parâmetros como
?per_page=100
na API).