Friday, November 27, 2015

Sử dụng MySQL để đồng bộ Library Phim và Nhạc của KODI (XBMC)

Giới thiệu:
Các bạn có nhiều thiết bị chạy KODI(XBMC) trong mạng nhà bạn, chúng ta sử dụng MySQL để đồng bộ dữ liệu phim và nhạc (database) để chia sẻ giữa các thiết bị. Mysql cho phép lưu trữ tất cả dữ liệu phim và nhạc của bạn trên MYSQL Server, các bạn có thể truy cập và đồng bộ giữa các thiết bị với nhau. Ví dụ đang xem dở phim ở phòng khách, lên phòng ngủ bật tiếp chỗ đang xem dở. 
Nguyên lý thế này: chúng ta dùng Mysql server chạy trên 1 thiết bị online 24/24 của bạn, Mysql server sẽ lưu toàn bộ dữ liệu về KODI database, các thiết bị chạy KODI mỗi khi bật lên sẽ kết nối vào đó và đồng bộ dữ liệu thông qua MYSQL Client có sẵn của KODI.
Các tính năng cơ bản:
- Các phim đã xem và chưa xem, thời gian xem được đồng bộ cho tất cả các thiết bị
- Tạm dừng xem ở thiết bị này, xem tiếp ở thiết bị khác như nói ở trên
- 1 cơ sở dữ liệu chung cho tất cả thiết bị.
- Các bạn có cài lại KODI thì thư viện MEDIA của bạn cũng sẽ không bị mất.
- Mysql tương đối nhẹ, hỗ trợ nhiều OS.
Có nhiều cách để đồng bộ database KODI giữa các thiết bị cùng 1 mạng gia đình: Share qua UPNP, PLEX server, mình đã thử qua và thấy MYSQL vẫn là chuyên nghiệp nhất.
Cài đặt MYSQL:
MYSQL server có thể cài ở bất kỳ thiết bị nào hỗ trợ:
- Có thể cài trên ROUTER của bạn chạy Openwrt (nếu Router có hỗ trợ USB để mở rộng bộ nhớ lưu)
- Có thể cài trên Các loại NAS, nếu bạn dùng NAS để tải và lưu phim sẽ rất tiện. NAS nên để chế độ StaticIP để sử dụng MYSQL Server và dễ quản lý hơn.
- Nếu bạn dùng thiết bị chạy Openelec để chạy KODI, có thể cài luôn MYSQL Server trên thiết bị đó luôn.
Cách cài đặt MYSQL Server tham khảo: (Hướng dẫn cụ thể cài Mysql và Samba Server)
Tham khảo thêm: MySQL on all OS.

Config KODI để kết nối với MYSQL Server:
- Nếu phim các bạn lưu trên NAS, xem phim qua Samba server của NAS
- Dùng Notepad tạo file advancedsettings.xml với nội dung:
Code:
<advancedsettings>
  <videodatabase>
    <type>mysql</type>
    <host>192.168.1.1</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>kodi</pass>
  </videodatabase> 
  <musicdatabase>
    <type>mysql</type>
    <host>192.168.1.1</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>kodi</pass>
  </musicdatabase>
  <videolibrary>
    <importwatchedstate>true</importwatchedstate>
    <importresumepoint>true</importresumepoint>
  </videolibrary>
</advancedsettings>

Trong đó: 192.168.1.1 là địa chỉ IP của thiết bị chạy MYSQL Server
Lưu lại, copy file advancedsettings.xml vừa tào  vào thư mục userdata, trên tất cả các thiết bị chạy KODI. Khởi động lại thiết bị chạy KODI.
Lưu ý là tất cả các thiết bị chạy KODI phải cùng version KODI thì mới đồng bộ được nhé. Không quan trọng bạn chạy KODI trên WIN, MAC, ANDORID hay OPENELEC, miễn là cùng phiên bản KODI là đồng bộ được.
Tiến hành đồng bộ thử KODI database vào Mysql Server:
Trên 1 thiết bị vừa khời động lại, các bác tiến hành quét phim vào thư viện như bình thường, KODI sẽ quét cả thư viện phim của bạn. Về quản lý phim các bạn tham khảo bài Hướng dẫn tự động hóa việc tải phim qua Torrent bằng CouchPotato và transmission. Mình dùng để tải và quản lý phim, nên khi KODI quét sẽ có đầy đủ tất cả thông tin phim.
Khi KODI quét và IMPORT phim lên server thì, đồng thời ở các thiết bị khác sẽ đểu được đồng bộ theo.
Xong phần Share database thông qua MYSQL Server

Share thư mục userdata:
thư mục userdata của kodi lưu trữ những thông tin sau có thể share giữa các thiết bị:
- sources.xml - các đường dẫn đến server hệ thống của bạn (NAS) của bạn
- mediasources.xml - các đường dẫn đến nguồn phim, nhạc của bạn
- folder playlists
- favourites.xml

Share thư mục này dùng chung thì bạn chỉ cần cài đặt ở 1 thiết bị các thiết bị khác cũng sẽ được đồng bộ, ví dụ các bạn dùng tính năng "add to favourite" ở 1 thiết bị, thiết bị khác cũng sẽ luu đường dẫn đó, quá tiện phải ko
Thường thì thư mục share userdata nên đặt chung với thiết bị cài MYSQL Server và có thiết bị này cũng cài Samba server để chia sẻ thư mục dùng chung. 
Các bạn tạo 1 thư mục tên userdata, sau đó truy cập vào thư mục userdata của 1 thiết bị KODI của bạn, copy thành phần ở trên (file sources.xml, mediasources.xml,folder playlists và avourites.xml) đã có vào folder userdata vừa tạo. 
Edit file advancedsettings.xml thêm các dòng sau: (dưới đây tham khảo nhé, các bạn edit theo của bạn)
Code:
<advancedsettings>
<pathsubstitution>
 <substitute>
    <from>special://profile/mediasources.xml</from>
    <to>smb://root:root@192.168.1.1/USB/userdata/mediasources.xml</to>
  </substitute>
<substitute>
    <from>special://profile/sources.xml</from>
    <to>smb://root:root@192.168.1.1/USB/userdata/sources.xml</to>
  </substitute>
 <substitute>
    <from>special://profile/playlists/</from>
    <to>smb://root:root@192.168.1.1/USB/userdata/playlists/</to>
  </substitute>
<substitute>
    <from>special://profile/favourites.xml</from>
    <to>smb://root:root@192.168.1.1/USB/userdata/favourites.xml</to>
  </substitute>
</pathsubstitution>
<videodatabase>
    <type>mysql</type>
    <host>192.168.1.1</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>kodi</pass>
  </videodatabase> 
  <musicdatabase>
    <type>mysql</type>
    <host>192.168.1.1</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>kodi</pass>
  </musicdatabase>
  <videolibrary>
    <importwatchedstate>true</importwatchedstate>
    <importresumepoint>true</importresumepoint>
  </videolibrary>
</advancedsettings>

Giải thích đường dẫn : smb://root:root@192.168.1.1/USB/userdata/
smb --> là share SAMBA
root:root: là user và pass
192.168.1.1 : IP của samba server

Mình cài MYSQL và samba server trên ROUTER chạy Openwrt nên IP là 192.168.1.1, MYSQL và samba server tương đối nhẹ mà.
Một điểm mình rất thích ở cách share MYSQL và USERDATA folder là, khi cài lại KODI, các bạn chỉ cần copy file advancedsettings.xml (có thông tin MYSQL server và userdata đã tạo ở trên)đến thiết bị mới cài, thoát ra vào lại là mọi thứ lại trở lại như cũ, ko cần scan lại phim, tất cả các plist giữ nguyên, các nguồn phim đươc add sẵn. Thật tiện phải không!