Resolvendo problemas

Resolvi quebrar um pouco o hiato do blog e escrever sobre um dos meus projetos, o site onde listo erros da Crunchyroll. Não é a primeira postagem, mas vou escrever como se fosse, pois assim posso mostrar o meu ponto de vista que tenho desse projeto hoje.

Em primeiro lugar, qual o que me motivou a começar esse projeto? Cinco anos atrás eu estava vendo um anime e me deparei com esta cena onde o Subaru age de forma completamente estranha. Quando terminei de ver esse episódio fiquei pensando por que ele tomou aquela até que descobri que era um erro de tradução: quem traduziu confundiu "loot house" com “loot a house”.

Quando descobri isso fiquei desanimado e fiquei não querendo ver nenhum anime que não fosse traduzido por quem não soubesse japonês, até que descobri que praticamente ninguém traduz diretamente do japonês. Por exemplo: conheço a tradutora de Re:Zero de uma fansub, que estava traduzindo de uma fansub gringa, que por sua vez só editou a tradução da Crunchyroll (o que ela não sabia).

Passou um tempo e mudei de ideia: erros são inevitáveis, uma hora ou outra a gente acaba deixando passar um, mas isso não nos impede de corrigirmos, certo? Foi então que criei este projeto para corrigir erros nas legendas que encontrei. Só tem um problema nesse projeto: o alcance dele é desprezível. Por mais que eu corrija centenas de erros, não adianta nada se der trabalho para baixar a correção, ainda que esse trabalho seja tão pequeno quanto baixar as legendas e descompactar ou rodar um patcher, mesmo se for um online.

Por um bom tempo passei a ver apenas animes de grupos gringos e que diziam saber japonês. Se olharem o meu planejamento, essa é a época entre 2017 e abril de 2018. Kimi ni Todoke, se notarem, tem uma quebra logo no primeiro episódio: é que mudei de fansub. O primeiro episódio no grupo do que fica falando que sabe japonês tinha tantos erros que não aguentei e mudei para outra. A tradução era para ter sido revisada duas vezes, já que era Blu-ray, mas aparentemente não olharam nenhuma, estava terrível.

Nesse meio tempo aconteceu outra coisa: antigamente eu evitava ver animes da Crunchyroll por mero preconceito, mas como eu tinha visto os três primeiros episódios de Osomatsu-san e queria ver a próxima temporada, então resolvi dar uma chance. Também vi a segunda temporada de Owarimonogatari. Como disseram, a tradução era ruim, mas não era tão ruim quanto eu imaginava, então fui dando mais chances.

Chegou um momento em que pensei em corrigir os erros da mesma forma que eu fazia antigamente. Até cheguei a corrigir os erros que encontrei em Owarimonogatari e postar no repositório, mas depois de um tempo me avisaram que eu poderia simplesmente reportar para o suporte. No início eu consegui me comunicar bem com o suporte, mas depois de um tempo peguei o jeito e eles foram corrigindo os erros que eu reportava. Um dos primeiros e que ainda me lembro muito bem foi em One Room 2, este aqui. Bem, eu reportei ele duas vezes pois por mais que eles tenham corrigido no meio de 2018 aconteceu um bug no site e ele precisou ser corrigido de novo.

Em setembro eu resolvi ver Rinne, era um dos animes da minha lista que estavam no planejamento há anos e eu não sabia onde ver, então quando descobri que estava disponível na CR aproveitei a chance. Então aconteceu algo que eu não estava planejando: o anime tinha erros demais! Estava ficando enfadonho reportar tantos problemas para o suporte episódio por episódio, então mandei uma mensagem dizendo que eu iria mandar tudo assim que eu terminasse de ver o anime.

E assim o fiz: peguei um modelo de página simples, tirei um monte de screenshots, escrevi um relatório no Notepad + + e mandei para o suporte. Na época o player ainda era aquele velho em Flash! Não sei se o suporte recebeu a página ou não. Algumas coisas foram corrigidas, outras não e no fim das contas Rinne até saiu do serviço.

Como eu já tinha feio uma página, resolvi me organizar e fazer algo melhor: transformei a página estática em um site. Criei alguns limites para mim mesmo: tentar o site e a interface leves, simples, focando na funcionalidade, não na beleza. O sistema de templates é o velho EJS (nada de React ou Vue) e a formatação ficou sendo Markdown. Os códigos das imagens foram gerados usando esse código simples. Depois de um tempo acabei resolvendo melhorar um pouco a estilização, mas boa parte do estilo original se manteve.

Com um site eu tenho bem mais segurança que o suporte vai conseguir abrir meus relatórios, diferente do relatório original que talvez nem tenha sido recebido pelo suporte. Além disso, como criei uma interface para reportar os problemas, isso me auxiliou muito na minha organização: basta cadastrar cada anime uma vez só, cada episódio uma vez só e depois os erros. Com o tempo fui melhorando a interface aos poucos: hoje ela conta com geração automática de URLs com base no nome do anime, detecta automaticamente o número do episódio com base na URL e, ainda por cima, detecta o episódio e o tempo com base na screenshot usando OCR, entre várias outras funcionalidades!

Um dos desafios que achei mais interessantes nesse projeto foi lidar com os limites da hospedagem que escolhi, o Neocities: ela é gratuita, não tem propagandas, mas tem vários limites e um deles é que o servidor deixa de responder se uma página fazer várias conexões em pouco tempo – o que estava acontecendo frequentemente com tantas imagens sendo carregadas. Como eu tinha imposto um limite de deixar o site leve (e isso implica que eu não queria usar JavaScript o máximo que eu pudesse) resolvi usar uma das soluções mais tradicionais para esse problema: paginação.

Por outro lado, a paginação criou um outro problema: como eu poderia criar uma URL apontando diretamente para um erro em uma página se em uma atualização um erro pode estar em uma página e na outra estar na página seguinte? Resolvi usar outra solução tradicional: um sistema de links permanentes. Por isso que geralmente eu coloco links para erros usando o caminho “/p/”, já que “p” é de “permalink”. Essa é a única página pública do site que usei JavaScript, embora ela também funcione sem com um truque envolvendo :target.

No final de 2018 o site tinha cerca de 100 erros, hoje no início de 2021 ele tem mais de 3000. Não é surpresa se verem o meu planejamento: nesse período vi centenas de animes disponíveis na Crunchyroll. Já li muita gente falando que o site tem poucos erros e que daria para listar o dobro, outros dizem que tem muitos erros e listam vários erros pequenos, mas para mim o importante é que estou fazendo o melhor que posso para melhorar o serviço.

Também acho importante mostrar que até mesmo serviços de streaming que seguem o modelo de simulcast podem fazer um trabalho de qualidade, não perfeito, mas que pode ser melhorado com o tempo e ficar muito bom. É bom mostrar que podemos esperar que os animes melhorem, não que as traduções sempre vão ter erros e só nos resta ignorar e varrer os erros para debaixo do tapete. Não quero ver mais pessoas achando que o Subaru é um ladrão idiota só porque um tradutor tirou um “a” no meio da cabeça dele.

Por mais que o site liste vários erros que, realmente, são pequenos, como espaços duplos, se eu noto problemas assim, outras pessoas podem notar, e eu não quero que alguém pense que problemas como esses são aceitáveis. Para mim o maior benefício de um serviço de streaming, seguindo o modelo de simulcasts ou seguindo um modelo de catálogo, é a sua capacidade por sempre melhorar. Usuários não precisam visitar um site de patches para arrumar erros, só precisam atualizar a legenda no servidor. Dessa forma, se corrigir um erro é tão fácil assim, não há nenhum erro pequeno demais, só há erros que ninguém reportou ainda, ou, se já foram reportados, uma hora vão ser corrigidos. Mesmo quando um anime sai do serviço tenho fé que algum dia ele voltará corrigido!

De qualquer forma, as equipes da Crunchyroll sempre tem oportunidade de comunicar: podem comunicar se algum erro foi corrigido e podem comunicar se não vão corrigir algo e se explicar. Estou pensando em não tirar do site se não se explicarem pois não sei porque falaram que não vão corrigir um typesetting que estava em uma posição ruim sendo que no mesmo episódio fizeram um typeset bem melhor (um problema de inconsistência) e, para facilitar o trabalho deles, ainda deixei o código pronto, bastava copiar e colar. Bem, vou assumir que tivemos um problema de comunicação e esperar corrigirem o problema. Pode ser que as equipes estejam ocupadas demais e não querem mexer com isso agora, então vou parar de listar novos erros no site por um tempo para acalmarem.

(A propósito, já escrevi typesetting várias vezes nesta postagem mas sei que muita gente não entende isso. Na verdade não sei se esse é o termo usado no meio profissional, então nem sei se a equipe da CR entenderia. Me refiro a tradução de textos que aparecem nas imagens.)

Para terminar essa postagem, o que eu penso para o futuro: este projeto foca principalmente em corrigir problemas, mas não ajuda tanto em evitá-los – de certa forma ajuda, como as equipes precisam corrigir os erros elas acabam aprendendo a evitá-los, mas não é tão efetivo. Algo que eu espero que a Crunchyroll invista no futuro é melhorar os processos de QC deles usando ferramentas como a da Netflix ou a minha.

Nesta semana, por exemplo, encontrei uma legenda com “estanho” no lugar de “estanho”, uma palavra tão rara em animes (acho que só em Dr. Stone ela apareceria, já que envolve ciência), que fiz questão de fazer o meu linter detectar e avisar. Se eles usassem uma ferramenta como o meu linter eles evitariam esse problema. Outros problemas comuns nas legendas da CR é usarem fontes não suportadas pelos players oficiais ou caracteres especiais não suportados por essas fontes, problemas que poderiam ser detectados automaticamente. Problemas de espaços duplos, assim como pontos duplos ou quadruplos no lugar de reticências, poderiam ser corrigidos automaticamente. Além disso, como os problemas corrigidos são listados no site e não removidos, qualquer um pode usar os dados do site para desenvolver uma ferramenta como essa (pode ser até a própria equipe de desenvolvimento da Crunchyroll).

Esse é um grande projeto, gastei anos trabalhando nele e espero que ele tenha grandes resultados, não é atoa que essa postagem também ficou grande! Provavelmente o hiato vai continuar, estou sem muitos assuntos para postar no momento (e não quero escrever uma sobre como pedir assuntos de postagens ao GPT-3). De qualquer forma, até a próxima postagem!