This repository has been archived by the owner. It is now read-only.
đŸŽ„ Um "YouTube new video relayer" usando o Social Blade - DESATUALIZADO: Use o protocolo PubSubHubbub para receber notificaçÔes de vĂ­deos
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit

Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src/main/java/net/pocketdreams/youtubevideorelayclient
.gitignore
LICENSE
README.md
pom.xml

README.md

YouTubeVideoRelayClient

SerĂĄ que Ă© realmente "Client"? Ainda nĂŁo tenho certeza 😛.

YouTubeVideoRelayClient serve para verificar novos vĂ­deos de um (ou vĂĄrios) canais do YouTube, ele utiliza a API (nĂŁo pĂșblica 👀) do Social Blade para verificar novos vĂ­deos, criado para substituir o antigo sistema de verificaçÔes de novos vĂ­deos da Loritta Morenitta, mas pode ser usado para outros aplicativos tambĂ©m.

Porque a API do Social Blade em vez de usar a API do YouTube ou fazer scrapping da pĂĄgina do canal?

API do YouTube

  • Tem rate limit (isto Ă© possĂ­vel "burlar" criando um API key rotation)
  • Demora MUITO para atualizar, levando atĂ© 30 minutos para ela atualizar os novos vĂ­deos de canais grandes!

Scrapping da pĂĄgina do canal

  • Demora MUITO para atualizar e Ă© muito inconsistente, as vezes "desaparecendo" vĂ­deos que estavam postados a mais de 6 horas apenas para reaparecer depois!

Como funciona?

java -jar YouTubeVideoRelayClient-1.0-SNAPSHOT-jar-with-dependencies.jar -DserverPort=PortaDoSocketServer

Sendo a PortaDoSocketServer a porta do socket server interno do YouTubeVideoRelayClient

ApĂłs ele estar ativo e rodando, vocĂȘ pode enviar um JSON payload para o YouTubeVideoRelayClient com os IDs dos canais, exemplo:

fun sendToRelayShard(list: List<String>, port: Int) {
	val obj = JsonObject()
	obj["channelIds"] = GSON.toJsonTree(list)
	val s = Socket("127.0.0.1", port)
	val toServer = OutputStreamWriter(s.getOutputStream(), "UTF-8")
	val fromServer = BufferedReader(InputStreamReader(s.getInputStream(), "UTF-8"))

	toServer.write(obj.toString() + "\n")
	toServer.flush()

	val response = fromServer.readLine()
	s.close()
	fromServer.close()
}

Exemplo de Payload: { "channelIds": [ "UC-eeXSRZ8cO-i2NZYrWGDnQ" ] }

ApĂłs tudo estar certo, vocĂȘ irĂĄ ver no console do YouTubeVideoRelayClient que ele conseguiu identificar o canal e estarĂĄ mandando atualizaçÔes do canal. (dependendo do envio do Ășltimo vĂ­deo, ele irĂĄ ter um delay menor (ou maior! No mĂĄximo 15 minutos) para enviar novos vĂ­deos do canal para outro servidor socket (Atualmente para 127.0.0.1:10699)

[00:55:14.062] [ForkJoinPool.commonPool-worker-7/INFO] n.p.y.YouTubeVideoRelayClient: 6 dias | 528 | Canal adicionado: UCVV6mkF0hGjdV-wre_Hf4qA ~ Irei esperar 771478 ms (12 minutos)

Ao chegar um novo vídeo, ele irå enviar um payload com algumas informaçÔes do novo vídeo, junto com o ID do canal que causou a atualização.

Exemplo de Payload: { "channelId": "UC-eeXSRZ8cO-i2NZYrWGDnQ", "videoId": "cK9AWUvqD-I", "title": "CORE FALANDO đŸ…żïžUTARIA?!?!?! đŸ˜± [INÉDITO] [ATUALIZADO 2018]" }

E Ă© sĂł isto! Sim, ainda falta colocar bastante coisas para serem customizĂĄveis e melhorar o cĂłdigo, mas vocĂȘ estĂĄ livre para criar forks e modificaçÔes em cima do meu cĂłdigo. (desde que vocĂȘ deixe os crĂ©ditos 😊)