아반떼오우너의 개발블로그 ㅋㅋ

3번째 개인프로젝트! [먹튜브로드] 본문

개인 프로젝트

3번째 개인프로젝트! [먹튜브로드]

Avante 2022. 3. 17. 16:30

나는 개인적으로 음식점 리뷰 유튜버들을 많이 구독하고있다.

집근처에 없더라도 리뷰같은걸 보면서 나중에 어디 놀러가서 가보고싶기도하고, 집근처에 또 있기는 있나 싶기도하고

맛있겠다...라고 생각하면서 영상을 본다.

근데 실제로 어딘가 놀러가서 '분명히 어떤 유튜버가 이근처에서 식당을 리뷰했는데..'라고 생각하게 된 상황들이 많았다.

그럴때마다 나는 유튜브에 '[유튜버이름] 강원도', '[유튜버이름] 대전' 이런식의 키워드를 검색하면서 음식점을 찾았는데

이게 생각보다 귀찮기도하고, 실제 위치를 찾아보려면 영상을 키고, 설명란을 보고, 다시 지도에서 검색하는 등의

귀찮은점이 많았다.

그래서 생각난 내 개인프로젝트!

내가 보는 유튜버들의 정보를 한곳에 다 모으되, 그 정보를 지도에 시각적으로 뿌려주면 어떨까? 라는 식으로 바로 프로젝트를 시작하게 되었다.

나는 곧바로 다음주 퇴근후 작업을 시작하였고 무엇부터 시작해야할까? 라는 주제로 고민을 시작하였다.

 

여러고민을 하고 대략 10가지의 절차를 세웠으나 그중에서 가장 핵심이였고 가장 시간이 많이 걸렸던 부분만 한번 끄적여보자면

당연히 유튜버들이 리뷰한 음식점 정보를 모으는것이였다.

근데 이게 어딘가에 json형식으로 정리되어있는것도 없고, 그렇다고 Youtube API를 통해 매번 긁어오자니 Youtube API에는 할당량이라는게 있을뿐더러, 그 API에는 정제된 가게정보는 없는 경우가 99%라는것이다.

따라서 나는 우선 YoutubeAPI를 통해 정보를 가져오되, 나만의 방식으로 가게정보(위치, 상호명 등)을 정제할 방법을 찾아야했다.

다행이 내가 주로보는 대다수의 유튜버들은 상호명, 위치와 같은 정보들을 일정한 방식으로 설명에 적어놓아서 파싱로직을 세울 여지가 있었지만

몇몇 유튜버들은 가게정보가 설명란에 없거나, 댓글에도 없고, 영상안에서 위치정보를 보여주는바람에 이런 유튜버들은 제외시켰다.

내가 모든 영상을 다 보면서 위치를 가져올수는 없으니.. ㅠ

그래서 나는 수많은 삽질을 통해 Youtube정보 크롤러를 완성시켰고 나만의 방식으로 JSON형태로 뽑을수있게 되었다.

크롤러를 완성시키기 위한 수많은 Python파일들..

크롤링툴을 이용하여 파싱 모듈을 만들고, 파싱한 위치를 GoogleMap, NaverMap을 통해 위경도를 받아오는 등의 과정을 완성시켰다.

아무래도 제일 힘든점은 유튜버마다 위치정보를 표시하는 방법이 다 달랐기 때문에 유튜버들마다 각각 하나의 크롤링 관련 클래스를 가지게 되었다..

공통화할 부분이 도저히 보이지 않았다..ㅋㅋ

이후에 Oracle에서 제공해주는 VM서버에 해당 Data를 적재시켰고

Client(iOS, Android)에서는 해당 서버에 접근하여 Data를 사용하도록 하였다.

실제 Client의 개발은 오래걸리지는 않았다. 비교적 간단한 UI이기도하고, 로직이 아주 복잡한 앱은 아니였기 때문이다.

그렇기에 이번에 MVVM패턴을 적용하여 앱을 실제로 개발해 보았는데 여러모로 유지보수에 훌륭한 아키텍쳐임은 확실하다.

나는 회사에서 iOS를 개발하기때문에 Android는 상당히 생소했는데 Kotlin과 Swift가 닮은 부분이 많아 적응하는데 오래걸리지는 않았고

이전 신입사원시절 첫회사에서 Android를 개발한 경험도 있어(Java를 썼었지만..) 비교적 빠르게 개발할수있었던것 같다.

물론 구조적으로 보면 iOS에 비해 Android는 아주 막장구조를 가지고있다 ㅋㅋㅋ MVVM이고 뭐고 아무것도 없이 리니어하게 개발하였다..

 

그결과.. 아래와같은 앱이 완성되었다!

하단에 하얀영역이 나오는거는 광고를 넣었는데.. 계정이 평가중이라고 광고가 정지된 상태라 그렇다 ㅠ

나중에 광고유무에 대해 하단 광고영역을 동적으로 변경되도록 수정해야겠다. ㅋㅋ

먹튜브로드(iOS)

 

어찌됬든 이번 개인프로젝트를 통해 Kotlin을 이용해 Android앱도 개발해보았고

Oracle VM서버를 이용해 스탠드얼론앱이 아닌 앱을 개발해보았으며

크롤러를 개발하기위해 Python도 사용해 보았고

FlexLayout, Then등 기존에 사용해보지 않았던 오픈소스도 사용해보았고

iOS에서는 처음부터 MVVM패턴을 적용해보는등 이것저것 꽤 괜찮은 성과가 있던 앱이였다.

개인프로젝트의 목적은 뭔가를 만들어서 성취감을 느끼는등 다양한것들이있겠지만

개인적으로 생각할땐 그것을 만들기위해 시도하는 여러 과정들이 가장큰 목적이 아닐까 싶다.

 

마지막으로 내가만든앱을 간단하게 광고만 하고 해당글을 마치도록 하겠따.

 

iOS)

https://apps.apple.com/tc/app/%EB%A8%B9%ED%8A%9C%EB%B8%8C%EB%A1%9C%EB%93%9C/id1610995698

 

‎먹튜브로드

‎'저번에 XXX가 리뷰했던 가게가보고 싶은데 위치가 어디지..?' 항상 이런 고민을 가지고 있었던분들의 고민을 해결해줄수있습니다! 음식점 리뷰 유튜버들이 리뷰한 가게 위치가 궁금하다면 이

apps.apple.com

 

Android)

https://play.google.com/store/apps/details?id=com.heogj.android.muktubemap 

 

먹튜브로드 - Google Play 앱

유튜버들이 리뷰한 음식점 위치를 한곳에!

play.google.com

 

 

*)그외에 다른 나의 개인프로젝트 앱들

 

섯다족보앱

https://apps.apple.com/tc/app/%EC%84%AF%EB%8B%A4%EC%A1%B1%EB%B3%B4%EC%B1%85/id1584498458

 

‎섯다족보책

‎한국의 전통(?)게임인 섯다 족보앱입니다. - 섯다를 하고싶지만 족보를 모르시는분 - 매번 친구에게 족보 물어보기 미안한분 - 족보좀 외우라고 혼나시는 분 더이상 어려움을 겪지 마시고 이

apps.apple.com

 

JJGram(카메라 필터앱)

https://apps.apple.com/tc/app/jjgram/id1573876170

 

‎JJGram

‎JJ Gram expresses what he wanted to say to his lover or precious person. It is a camera filter app that contains that emotion as a filter. If you see a nice view or something cool while walking on the street or looking out, Use JJGram to capture your ow

apps.apple.com