Sáng nay ngồi cập nhật Vol 54 của Arirang cho ứng dụng Karaoke Vietnam mới phát hiện vậy là cũng gần tròn 4 năm (từ đầu năm 2011) mình theo dự án này. Đây quả là dự án huyền thoại vì chưa có dự án nào mình theo lâu như vậy mà kiếm tiền được từ nó. Sáng nay rảnh rỗi nên viết một bài chia sẻ quy trình mỗi lần cập nhật danh sách bài hát (Vol) mới cho ứng dụng này như thế nào để mọi người coi chơi.
Trước tiên, kể một chút về background android của mình. Hồi 2011, Karaoke Vietnam là một bài tập mình làm để tự học Android. Lúc đó là android 1.5 thôi, còn xài mấy con android cùi bắp của Trung Quốc. Thấy hay hay nên tính học cho biết bằng anh, bằng chị. Mình chọn làm app Karaoke Vietnam bởi vì đó là một ứng dụng không quá khó mà mình có thể dùng được liền, thế là khoảng cuối tháng 1/2011 là mình bắt đầu quất luôn, khoảng 1, 2 tuần gì đó là có thể đưa lên sàn.
Rồi cũng đua đòi đăng ký developer account của Android Market (Bây giờ là Google Play) để upload app cho mọi người xài miễn phí. Và đến thời điểm viết bài này thì trên Android đã có khoảng 2.120.000 install chính thức từ Google Play (active trên 500.000) và trên iOS cũng khoảng 650.000 install. Như vậy cho thấy, 1 bài tập đôi khi cũng rất thú vị. Đến bây giờ thì mình cũng không biết mình đã code cái gì, chỉ nhớ 1 vài chỗ để config mỗi khi cập nhật Vol mới.
Quay lại với ứng dụng, Karaoke Vietnam là một ứng dụng đặc thù khoảng 3, 4 tháng mới cập nhật một lần, mỗi lần khoảng 300 bài hát từ Arirang, cái danh sách 5 số 5xxxx mà mọi người hay đi hát ở các phòng Karaoke sau khi ăn nhậu đó. Mình thì lại không có nhiều thời gian nên các bước để cập nhật danh sách bài hát mới phải được nhanh nhất và dễ thực hiện nhất vì khó mà nhớ được sau 2, 3 tháng phải làm gì.
Bước 1: Danh sách bài hát
Làm sao biết được có danh sách bài hát (Vol) mới? Có một may mắn là trên đường đi làm hay đi ngang cái quán bán dàn karaoke nên khi có Vol mới người ta sẽ dán lên. Hoặc hiện tại thỉnh thoảng mình vào phần Review trong quản lý app để xem, thường khi có Vol mới là user sẽ hỏi đại khái mấy câu “Sao chưa thấy vol xx hả ad..”, như vậy là biết có vol mới rồi.
Lấy danh sách ở đâu? Thường user của mình là hay hát dàn Arirang nên cứ vào trang chủ của Arirang là có thể down danh sách về. Đây là danh sách cam cam mà mọi người hay thấy trong mấy cuốn sổ dày cộm, dành giựt mỗi khi đi hát đó. Kiếm vol mới down về là xong, danh sách này là public nên các bạn có thể down thoải mái, chỉ là chuyện đưa nó vào app thế nào thôi.
Bước 2: Import danh sách bài hát vào database
Lúc trước trên blog mình cũng có viết 1 bài giới thiệu cách parsing danh sách bài hát, nhưng bây giờ các bạn Arirang chặt lắm, dùng cơ chế word nhiều layer để chặn đọc bằng máy, nhưng họ cũng đâu biết là bên mình còn có tool rất xịn có thể vượt qua lớp bảo mật file này, là…nhập bằng tay.
Mỗi khi có vol mới, khoảng 300 bài thì mình (hoặc nhờ ai đó) nhập vào, cũng khoảng 3 tiếng là cao, vừa đơn giản mà danh sách lại rõ ràng, đảm bảo không bị gài lựu đạn khi import tự động.
Khi có file excel dữ liệu, mình tiến hành import file này vào database MySQL của mình để tiến hành tiền xử lý các cột thông tin còn thiếu (như tên viết tắt, tên không dấu, lyric không dấu, tên nhạc sĩ, ca sĩ không dấu…).
Sau khi chạy các tiền xử lý thì tiến hành import dữ liệu bài hát mới vào danh sách tổng để export vào ứng dụng. Có hẵn 2 script PHP và ghi chú để làm việc này luôn vì rất khó nhớ quy trình gộp danh sách này này sau 3 tháng.
Bước 3: Export danh sách bài hát để dùng cho các ứng dụng
Khi đã có danh sách bài hát mới nhất (đã cập nhật vol mới) thì mình tiến hành xuất dữ liệu để import vào các ứng dụng. Bên Android mình code cùi bắp nên phải import bằng XML, do android có giới hạn tối đa của 1 resource XML nên mình buộc phải cắt nhỏ dữ liệu này thành 20 phần. Tất nhiên, cũng chạy script PHP tự động để ra 20 file xml này.
Còn dữ liệu trên iOS thì dùng sqlite nên cũng có script PHP riêng để xuất 1 file sqlite cho iOS để import vào code app iOS.
Bước 4: Sửa code để nhận danh sách bài hát mới
Sau khi có 20 file xml, mình tiến hành kéo vào project app và replace các file xml cũ. Cập nhật lại database version trong code để buộc người dùng cài lại database mới khi cập nhật ứng dụng. Sửa một số chỗ để nhận mặc định là load Vol mới nhất khi vào phần danh mục bài hát.
Tiến hành cập nhật các hình ảnh liên quan cho vol mới như hình Help (Android, iOS), hình Splashscreen (cho iOS), hình Promotion Image (Google Play Listing).
Sau khi cập nhật đủ thông tin thì tiến hành build thử vào máy, nếu test thấy OK thì export apk cuối cùng để release.
Bước 5: Release app
Đối với Android thì mình sẽ dùng giao diện export thông thường, chọn release key cho production, rồi xuất ra apk để upload lên Google Play. Thời gian cập nhật trên Google Play khoảng vài tiếng là có kết quả.
Đối với iOS thì quy trình hơi rườm rà, phải lên itunesconnect, tạo version mới, trả lời vài câu hỏi, rồi vào xcode tạo archive, rồi submit. Thời gian của ông nội này phải chờ review này nọ, có thể nhanh trong 3 ngày hoặc cả tuần tùy app.
Đó là một số bước mà mình phải làm mỗi khi cập nhật danh sách bài hát cho ứng dụng Karaoke Vietnam. Mình đã làm việc này gần 4 năm và thường xuyên mỗi khi có vol mới nên số lượng thành viên sử dụng trung thành khá cao.
Chúc mọi người cũng có những ứng dụng thú vị.
Bạn ơi, cho mình hỏi về thuật toán để bạn tìm tên bài hát. Mình có nghe về thuật toán tìm từ điển nhưng chưa tìm được tài liệu. Cảm ơn bạn
Hay thật
Mình vừa bị bạn làm cho mở mang tầm mắt
app tưởng chừng đơn gian nhưng rất thú vị
Mình cũng đang dùng app karaoke VN nhưng không biết có phải của bạn không.
Toàn code là code. bạn viết code chắc giỏi. Mình mới học SQL mà đã thấy oải rồi.
Ứng dụng của bạn đơn giản nhưng giúp ích rất nhiều cho các bạn trẻ.
Mình có 1 góp ý là nếu bạn có định phát triển lâu dài thì nên move data lên server, rồi chỉ cần update lên đó thôi -> không cần phải release version mới và user ko cần phải update nó