කවුරුහරි: "ඉතින් යකෝ ඔච්චර නටන්නේ නැතුව YouTube Premium එකක් ගනින්කෝ."
මම: "එහෙනම් යකෝ කොහෙන්ද මට මෙච්චර ආතල් එකක්??"
මට ඕන වුණා කිසිම කරදරයක්, ads මුකුත් නැතුව, කෝච්චියේ බස් එකේ යද්දි ෆෝන් එකේ ඩේටා කැපෙන්නෙත් නැතුව සිංදු අහන්න පුළුවන් මගේම Offline Music Player එකක් හදාගන්න. හරියට YouTube Music වගේ, හැබැයි සම්පූර්ණයෙන්ම offline වැඩ කරන එකක්.
මුලින් මම හිතුවේ මේක ලේසි වැඩක් කියලා. Frontend UI එකයි, offline storage එකයි සති අන්තයකින් හදලා ඉවර කළා. හැබැයි YouTube එකෙන් සිංදු download කරන එක තමා ලොකුම යුද්ධේ වුණේ. YouTube එකේ තියෙන anti-bot security හිතුවට වඩා ගොඩක් දරුණුයි!
මම yt-dlp කියන tool එක පාවිච්චි කරලා මගේ server එක හරහා මුල්ම සින්දුව බාන්න හැදුවා විතරයි, ප්රශ්න පෝලිමක මුල පටන් ගත්තා.
පළවෙනි බාධකය: JavaScript Challenge එක
මුලින්ම ආවේ "Format not available" කියලා error එකක්. මම හිතුවෙම සින්දුවේ අවුලක් කියලා. ඒත් ඇත්තම හේතුව වුණේ අලුත් YouTube security ක්රමයට අනුව, සිංදු ගන්න නම් එයාලගේ JavaScript challenge එකක් solve කරන්න ඕනේ. ඒකට සාමාන්ය Node.js මදි. ඉතින් ඒක විසඳන්න මට Server එක (Docker container එක) ඇතුළට Deno කියන JS runtime එක දාන්න සිද්ධ වුණා.
දෙවෙනි බාධකය: "ඔයා Bot කෙනෙක් නෙවෙයි නේද?" -- "නෑ නේද?
Deno දාලා ආයේ try කරද්දි, ඊළඟ ප්රශ්නේ ආවා. "Sign in to confirm you're not a bot". මගේ server එකේ IP address එක YouTube එකෙන් block කරලා! Data center IPs කොහොමත් එයාලා අඳුරගෙන block කරනවා. ඉතින් මේකට විසඳුමක් විදියට මම Cloudflare WARP පාවිච්චි කරලා මගේ server එකේ traffic එක (SOCKS5 proxy එකක් හරහා) වෙනස්ම IP එකකින් යැව්වා. අන්න ඒකෙන් bot අවුලත් විසඳුණා.
තුන්වෙනි බාධකය: DRM උගුල (403 Errors)
ඔක්කොම හරි කියලා හිතාගෙන ඉද්දි සමහර වීඩියෝ වලට 403 Forbidden error එකක් එනවා. හොයලා බලද්දි මම app එකේ setting හදලා තිබුණේ මගේ app එක 'Smart TV' එකක් විදියට YouTube එකට පෙනී ඉන්න. හැබැයි YouTube එකෙන් සමහර සිංදු TV වලට දෙන්නෙ නෑ DRM (Digital Rights Management) restrictions නිසා. ඉතින් මම ඒ TV client කියන එක අයින් කරලා, ඕනම විදියකින් ගැලපෙන, DRM ප්රශ්න නැති client කෙනෙක් තෝරගන්න yt-dlp එකටම බාර දුන්නා.
අන්තිමට මේ ඔක්කොම කෑලි - Deno runtime එක, WARP proxy එක, PO-token provider එක - හරියටම එකට සෙට් කළාට පස්සේ වැඩේ නියමෙටම ගොඩ ගියා!
දැන් මට ඕනම සින්දුවක්, නැත්තම් සම්පූර්ණ playlist එකක්ම ලේසියෙන්ම මගේම app එකට බාගෙන, ෆෝන් එක lock කරලත් කිසිම කරදරයක් නැතුව offline අහන්න පුළුවන්. අමතර වාසියක් විදියට, මගේ server එකේ මේ හැම සින්දුවකම backup එකක් හැදෙන නිසා, ෆෝන් එකේ data මැකුණත් ආයේ YouTube එකෙන් download කර කර ඉන්න ඕනෙත් නෑ.
ඉතින් මම හිතාගෙන ඉන්නවා ඉස්සරහට මේ App එක තවත් ටිකක් ලස්සන කරලා, තව අලුත් පොඩි features ටිකක් එහෙමත් එකතු කරලා හැමෝටම පාවිච්චි කරන්න පුළුවන් වෙන්න Open Source Repo එකක් විදියට public කරන්න. හැබැයි ඉතින් හිමීට තමයි ඒ වැඩේ කරන්නේ.
මේ project එකට පාවිච්චි කරපු අනිත් Technical දේවල් ගැනයි, ඒ දේවල් වල ඇතුලාන්තය ගැනයි විස්තර ඇතුව අපි ආයෙත් දවසක කතා කරමු!