생각하는뇌

니코니코 동화 코멘트 번역기 개발기 본문

컴퓨터

니코니코 동화 코멘트 번역기 개발기

뇌씨 2017. 12. 25. 05:31

번역기 다운로드


최근에 유튜브를 돌아다니다가, 포켓몬스터 신작이 나왔다고 해서 보고 있던 도중에 이런 동영상이 나오더라고요!

https://youtu.be/YlZ-qAlsOLU

상당히 오글거림 + 티비플 + 일본 코멘트 의 조합이니, 별로 보는걸 추천하지 않습니다.

찾아보니 한국에서도 비슷한 서비스를 제공하는 게 있더라고요. 한국에는 티비플이라는게 있는 모양이고, 일본에는 니코니코 동화라는 서비스가 존재하는 듯 보입니다.

그래서 관심이 생겨서 가입해보았는데, 저 동영상에서는 분명 한글로 번역되던 글이 번역되지 않고 더 찾아보았더니, 국내의 한 유저가 서버를 만들어서 msg.nicovideo.jp를 국내 서버를 거쳐 번역되어 표시되게 하는 서비스가 있었다는 것을 알게되었습니다. (현재는 종료한 상태입니다.)

지금은 서버주소가 nmsg.nicovideo.jp 로 바뀌어있는 상태였는데, 분석을 해보니 JSON형태로 API를 받아오는 모양이었습니다.

단순히 구글 번역을 거치는 서버를 자체적으로 실행시켜 놓는다면 쉽게 만들 수 있을 것 같아 만들어보게 되었습니다.

다행히도 헤더 부분을 보니 쿠키는 필요없어보입니다. 쿠키가 필요하게 되면 번역기에서 다시 로그인을 해야 하거든요.

하단의 박스 부분이 헤더의 양식입니다.

POST /api.json/ HTTP/1.1 Host: nmsg.nicovideo.jp Connection: keep-alive Content-Length: 555 Origin: http://www.nicovideo.jp User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36 Content-Type: text/plain;charset=UTF-8 Accept: */* Referer: http://www.nicovideo.jp/watch/비디오 고유번호 Accept-Encoding: gzip, deflate 

Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7

이에 대한 Response는 요약하자면 다음과 같았습니다.

생각보다 엄청나게 간단한 구조라서 놀랐습니다.

따라서 단순히 호스트번경을 해 80포트로 웹 서버를 실행시킨 다음에, nmsg 어쩌구를 받아와 구글번역을 경유하여 content 부분의 일본어만 한글로 번역해주면 되는 것이겠죠.

언어 선택은 서버사이드스크립트를 사용하여 API를 다시 만드는게 가장 편리한 방법일 수 있겠으나, 이 방법은 누군가가 항상 서버를 실행시켜 주어야 하기 때문에 불편합니다. 위에서 2013년까지 운영했다는 그 서비스도 서버를 감당할 수 없기 때문에 종료된 것으로 예상됩니다.

따라서 그냥 NUGET에 분명 누가 웹서버 관련 라이브러리를 만들어 놓았겠지! 라고 믿고 C#으로 노가다 만들어보기로 결정해보았습니다.

이렇게 만들어놓으면 한국 유저 뿐만 아니라 다른 나라 언어로도 번역이 가능하기 때문에, 전 세계 어디에서든 사용할 수 있을 것 같습니다.

근데 이런 서비스가 있을 법 한데, 왜 없을지 찾아보았더니 있더군요.

https://github.com/dahlia/nicovideo-translator

쓸때없이 시간낭비 했네요. 따라서 깔끔하게 포기합시다.


여기서 나가버리시면 월척이로구나! 아 취소선 극혐인데 쓰게되네 아 짜증나요















가 아니고, 대충 30초 정도 보니, 리눅스 기반에서 컴파일을 해야 쓸 수 있더라고요. 이건 아마 서버에서 사용하기 위한 서비스인 것 같습니다.

엉엉 리눅스라니 너무 슬프잖아요ㅠㅠ 한국에는 리눅스 따윈 에잇 해버리는 일반인들이 많습니다ㅠㅠ

따라서 그냥 간단하게 C#으로 exe로 만들어서 hosts파일을 패치시켜 127.0.0.1로 받아오게 해 버리는걸로... 네... 확정지었습니다.

일단 사용가능한 NuGet 패키지를 살펴보도록 하겠습니다.

일단 JSON을 사용해야 하는데, 마소가 일을 안하는지 닷넷에는 자체 라이브러리가 없더군요.

하긴... ZIP압축도 4.5되어서야 지원하기 시작했는데... 뭐 그래도 전 C#이 주 사용언어 이므로...

(하하 깔끔하게 C계열과 PHP등은 버렸습니다! 마소 만세! .net 만세! 에에헤헤헿ㅎ헤꿻뚫쒧뤡)

찾아볼필요도 없이 NuGet 패키지 관리를 들어만 가도 바로 최상위권에 1등으로 랭크되어 있더라고요.

당연히 추가해주도록 하겠습니다. 가 아니라 그냥 글 쓰다 생각한건데 어차피 코멘트만 Split으로 받아오면 되니까 걍 쓰지 말기로 해요. 전 외부 라이브러리 쓰는거 싫거든요 캬컄컄캬컄 정신 나갔지롱용ㅇ오오오 호로로롤

뭐... 웹서버 관련해서 찾아보니 

http://nowonbun.tistory.com/178

잘 정리되어 있으니 관심있으신 분은 읽어보시면 좋겠습니다.

물론 귀찮아보이므로 깔끔히 패스할게요ㅎㅎㅎㅎ

엉엉 근데 NuGet에서 찾아보니 Selenium.WebDriver라는게 있더군요.

이글 쓰던중에 갑자기 이상한 일본어가 들려서 봤더니 니코니코 비디오에서 자동 로그아웃 관련해서 나온 메세지인 것 같더라고요. 

근데 아니에요ㅠㅠ 단순히 웹 브라우저를 조종하는 것에 불과하더군요.

마지막으로 MyTested.HttpServer 라는 것이 있더라고요.

일단 예제를 다운받아 보기로 했습니다.

엉엉 근데 마이그레이션 후에 안열려요ㅋㅋㅋㅋㅋㅋㅋㅋ

C:\Users\Sunho\Downloads\MyTested.HttpServer-master\MyTested.HttpServer-master\samples\src\MyTested.HttpServer.Samples\MyTested.HttpServer.Samples.xproj : error  : 가져온 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\VisualStudio\v15.0\DNX\Microsoft.DNX.Props" 프로젝트를 찾을 수 없습니다. $(VSToolsPath) - "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0"에 대한 대체 검색 경로로 "DNX\Microsoft.DNX.Props"도 검색했습니다. 이 검색 경로는 "C:\Users\Sunho\AppData\Local\Microsoft\VisualStudio\15.0_36c16ad0\devenv.exe.config"(으)로 정의됩니다. <Import> 선언에 지정한 경로가 올바른지 그리고 파일이 검색 경로 중 하나의 디스크에 있는지 확인하세요.  C:\Users\Sunho\Downloads\MyTested.HttpServer-master\MyTested.HttpServer-master\samples\src\MyTested.HttpServer.Samples\MyTested.HttpServer.Samples.xproj

상콤한 가독성 떨어지는 오류들!

이제 이쯤되면 슬슬 때려치고 싶어집니다.

하지만 전 이걸 너무 만들고 싶으므로 일단 만들어보기로 해요! 꿻뚫쒧뤩!

띠용ㅇ오오오오오오오옹

음음... 이해가 가는군요. 단지 0.0.1버전 차이때문에 생긴 오류였습니다!

그래서 .NETStandard를 업데이트 해보려 NUGET에서 업데이트를 했는데..?

업데이트와 무관하게 설치가 안되더군요.

정말 욕이 나오지만 마지막 최후의 수단인... 걍 직접 구현하는걸 선택하기로 했습니다.

일단 명월님의 강좌를 참고해서 클래스 형태로 쉽게 서버 만들 수 있도록 해야겠습니다.

헤더는 아래와 같습니다.

    1. Access-Control-Allow-Headers:
      Content-Type
    2. Access-Control-Allow-Methods:
      POST,GET,OPTIONS,HEAD
    3. Access-Control-Allow-Origin:
      *
    4. Cache-Control:
      max-age=0
    5. Connection:
      Keep-Alive
    6. Content-Encoding:
      gzip
    7. Content-Length:
      1357
    8. Content-Type:
      text/json; charset=UTF-8
    9. Keep-Alive:
      timeout=15, max=100
    10. Vary:
      Accept-Encoding

갓크롬느님을 통해서 적당히 Keep-Alive와 같이 이상해보이는 부분만 빼고 그대로 넣으면 될 것 같습니다!

흠흠... 적당히 명월님의 코드를 이용해서 다음과 같이 바꾸어보았습니다.

다행히도 처리는 잘 되네요.

뭐... 나쁘지는 않은 것 같습니다.

이제 호스트를 변경해서 무엇이 오는지를 확인해보도록 하겠습니다.

C:\Windows\System32\drivers\etc\hosts를 메모장을 관리자권한으로 열어 수정해줍시다.

그럼 이제 nmsg.nicovideo.jp가 127.0.0.1로 오게 됩니다.

그 다음은 엄청난 노가다를... 실행했습니다.

드디어 번역을 제외한, 모든 걸 했는데 무료 API가 없습니다아아아아아앙ㅇㅇㅇㅇㅇ

네이버 API 한번에 초과해버리고오오오옹ㅇ

일단 무료 API 알려주시면 완성시켜보겠습니다아아아아앙

세벽 5시 반까지 매달리다가 결국 일단 나중으로 미루는걸로.


중간 완성

일본코멘트->한국코멘트 이런식인데

번역할 API를 못구했어ㅇ요ㅛㅛㅓㅓㅓ

그럼 이렇게 인터넷이 뙇 떠줍니다아아아.

자 오른쪽에 한글한글 보이시죠?

결국 크리스마스 새벽에 완전 그냥 헛짓했네요.

이제 안해먹어요ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

댓글로 API 알려주시면 감사하겠습니다!

PS. 단순이 한글이에영으로 치환했을때 생기는 한글이에영 들의 환상적인 조화를 보세요!

한글이에영!


GitHub의 Bing Translator API를 사용해서 완성시켰습니다!

(참고 : https://github.com/bmg0001/Bing-Translator-API)

WinHTTP를 .NET으로 컨버팅하는게 좀 귀찮긴 했지만, 덕분에 도움이 많이 되었네요.

나름 봐줄만한 수준입니다ㅎㅎ

배포는 요청하면 올려드리도록 하겠습니다!

아침에 일어나자마자 이거 했는데 너무 피곤하네요ㅋㅋㅋㅋ 이만 자러가겠습니다!

Comments