7 poin oleh GN⁺ 22 jam lalu | 2 komentar | Bagikan ke WhatsApp
  • Castor adalah alat terminal yang menemukan aliran video asli dari halaman web atau URL stream langsung, mengubahnya agar cocok untuk TV, lalu mengirimkannya secara real-time dengan kualitas asli tanpa screen mirroring
  • Dengan Chrome headless dan Chrome DevTools Protocol, Castor memantau lalu lintas jaringan untuk mengekstrak stream melalui klik halaman, masuk ke iframe terbesar, lalu klik ulang, tetapi mungkin tidak berfungsi pada halaman yang tidak mengizinkan autoplay
  • Dapat digunakan pada smart TV yang mendukung DLNA/UPnP serta Kodi, VLC, dan Plex; dukungan Chromecast sudah diimplementasikan tetapi masih eksperimental dan belum diuji
  • Video H.264 yang dapat diputar akan diteruskan tanpa re-encode; bila perlu, Castor mengubahnya dengan encoder perangkat keras atau libx264, dan juga dapat menyisipkan subtitle yang dibuat dengan whisper ke dalam video
  • Castor tidak menyediakan video, katalog, atau sumber, dan tidak melewati DRM; alat ini dirancang agar hanya mengirim halaman dan stream yang ditentukan langsung oleh pengguna dan memang berhak mereka gunakan

Mengirim video web sebagai stream asli

  • Castor mengirim stream video asli dengan kualitas penuh sebagai pengganti smart TV yang tidak bisa langsung memutar video web sembarang, serta sebagai alternatif screen mirroring yang memiliki latensi dan penurunan resolusi
  • Jika Anda memasukkan halaman web atau URL stream langsung, Castor akan menelusuri video, mengekstrak stream, lalu melakukan transcoding agar cocok untuk TV dan mengirimkannya secara real-time
  • Dapat mencari ID IMDB/TMDB dari sumber yang dikonfigurasi pengguna atau menyisipkan subtitle yang dibuat otomatis ke dalam video
  • Menjalankan castor cast akan membuka browser interaktif berbasis terminal untuk menelusuri karya dan mengirimkannya

Cara ekstraksi stream dan keterbatasannya

  • Menjalankan Chrome headless dan memantau lalu lintas jaringan dengan Chrome DevTools Protocol untuk menemukan stream
  • Menjalankan pipeline tindakan singkat untuk memulai pemutaran
    • klik halaman
    • pindah ke iframe terbesar
    • klik lagi sebagai tindakan cadangan
  • Berfungsi pada halaman yang mengizinkan autoplay, dan tidak mendukung semua situs

Instalasi dan syarat menjalankan

  • Cara yang direkomendasikan adalah binary native yang dijalankan pada jaringan yang sama dengan TV
  • Lingkungan eksekusi membutuhkan alat berikut di PATH
    • Chrome atau Chromium: ekstraksi stream headless
    • ffmpeg: transcoding
    • ffprobe: deteksi format media
  • Di macOS dapat diinstal dengan Homebrew
brew install --cask stupside/tap/castor
  • Build dari source memerlukan Go 1.26+ dan CMake
    • Binding whisper.cpp menggunakan cgo dan terhubung ke libwhisper.a yang dibangun secara lokal
    • Karena memerlukan replace lokal dan static library prabuild, go install tidak akan berfungsi
git clone --recurse-submodules https://github.com/stupside/castor.git
cd castor
make

Alur penggunaan dasar

  • Gunakan castor scan untuk menemukan nama TV lalu tetapkan nama yang tepat dan jenis perangkat di device dalam config.yaml
device:
  name: "Living Room TV"
  type: dlna
  • Halaman web atau URL stream langsung dikirim dengan cast player
castor cast player https://example.com/watch/some-video
  • Pencarian karya interaktif memerlukan TMDB API key dan sumber yang dikonfigurasi pengguna; perintah dan flag lengkap dapat dilihat di castor --help

Konfigurasi dan sumber yang disediakan pengguna

  • config.yaml dibaca dari direktori saat ini atau dari path yang ditentukan dengan --config, dan satu-satunya item wajib adalah konfigurasi perangkat tujuan pengiriman
  • Nilai bawaan disediakan untuk batas waktu, penelusuran, pengambilan, transcoding, antarmuka jaringan, dan penelusuran Chrome
  • Nilai rahasia dapat ditimpa dengan config.local.yaml yang dikecualikan dari Git atau ditetapkan lewat environment variable dalam format CASTOR_SECTION__FIELD
  • cast movie, cast episode, dan browser interaktif memasukkan ID karya ke sumber yang dikonfigurasi pengguna
    • Castor sendiri tidak menyertakan sumber, katalog, atau fungsi pencarian
    • Castor memasukkan ID ke templates buatan pengguna, menambahkan setiap proxies di depannya untuk membuka halaman, lalu mengekstrak stream dengan cara yang sama seperti cast player
    • Beberapa proxy dicoba sesuai urutan yang ditentukan
sources:
  - proxies: ["https://your-source.example";]
    templates:
      movie: "/embed/movie/{itemID}"
      episode: "/embed/tv/{itemID}/{season}-{episode}"

Pencarian TMDB dan subtitle otomatis

  • Browser interaktif menggunakan TMDB API key untuk pencarian karya
    • Kunci dapat diperoleh di themoviedb.org
    • Perintah langsung seperti cast movie <id> tidak memerlukan kunci TMDB
  • Subtitle otomatis mentranskripsikan audio dengan whisper lalu menyisipkannya ke dalam video, dan secara bawaan dinonaktifkan
    • Bahasa bawaan adalah Inggris
    • Model bawaan adalah ggml-tiny.en berukuran sekitar 75MB dan akan diunduh otomatis

Perangkat yang didukung

  • Mendukung TV yang mengimplementasikan profil DLNA/UPnP MediaRenderer:1
    • Samsung telah diuji, dan LG, Sony Bravia, Panasonic Viera, Philips, Hisense, TCL, VIZIO, serta Sharp termasuk target dukungan
    • Pemutar jaringan seperti Kodi, VLC, dan Plex juga dapat digunakan
  • Gunakan castor scan untuk melihat perangkat pada jaringan yang sama
  • Dukungan Chromecast sudah diimplementasikan tetapi masih eksperimental dan belum diuji

Batasan Docker dan konfigurasi jaringan

  • Image Docker khusus Linux menyertakan Chrome, ffmpeg, dan ffprobe
  • Di Docker, diperlukan host Linux pada LAN yang sama dengan TV, dan --network host harus digunakan untuk pencarian multicast SSDP serta koneksi ke server pemutaran Castor
  • Di Docker Desktop untuk macOS dan Windows, --network host tidak terhubung ke LAN
    • Kontainer ditempatkan di subnet VM internal Docker Desktop sehingga scan tidak dapat menemukan perangkat dan pengiriman juga gagal
    • Di macOS dan Windows, gunakan binary native atau bridge Linux VM ke LAN
  • Mount /config.yaml untuk menyediakan konfigurasi, dan model whisper yang diunduh otomatis dapat dipertahankan di volume
  • Menggunakan tag rilis alih-alih latest memungkinkan versi dikunci

Media passthrough dan encoding

  • Jika TV sudah dapat memutar video H.264 dengan profil dan level yang diizinkan, Castor menggunakan stream copy sehingga penggunaan CPU nyaris 0
  • Jika TV menolak codec atau subtitle perlu disisipkan, Castor akan melakukan re-encode
    • Castor memprioritaskan encoder H.264 perangkat keras yang benar-benar berfungsi, seperti VA-API di Linux atau VideoToolbox pada binary native macOS
    • Jika tidak tersedia, Castor menggunakan libx264 perangkat lunak sebagai pengganti
  • Untuk menggunakan VA-API GPU Intel di dalam kontainer Docker, diperlukan --device /dev/dri; --network host saja tidak mengekspos GPU

Kegunaan dan batasan

  • Castor adalah alat pengiriman serbaguna, bukan layanan yang terhubung ke situs tertentu
  • Castor tidak meng-host atau membundel video, katalog, maupun sumber, dan hanya memproses halaman, stream, dan sumber yang ditentukan pengguna serta memang berhak mereka gunakan
  • Castor tidak mendekripsi atau melewati DRM, dan layanan yang dilindungi DRM tidak dapat dikirim
  • Pengguna bertanggung jawab mematuhi syarat layanan situs dan hukum setempat, dan Castor disediakan apa adanya untuk penggunaan pribadi dan pendidikan yang sah

2 komentar

 
xguru 21 jam lalu

Wah, tautan di komentar bawah ini sangat praktis: https://tvexplorer.live/channel/EBS1TV.kr.SD/country/KR. Haha
Sepertinya diblokir di Korea, tapi apakah bisa langsung ditonton dari luar negeri?

 
GN⁺ 22 jam lalu
Komentar Hacker News
  • Membuat TV Explorer, yang langsung memutar stream HLS yang dipublikasikan kanal di browser tanpa trik bypass terpisah. Memanfaatkan daftar GitHub publik berisi lebih dari 10 ribu kanal gratis
    https://tvexplorer.live

    • Sangat mulus dan ringan, responsnya nyaris seketika, dan tombol kembali juga berfungsi dengan benar. Popup subtitle memang menimpa beberapa elemen layar, tetapi bahkan di desktop biasa pun perpindahan kanalnya cepat, seperti saat mengganti kanal di era analog NTSC
      Jadi penasaran apa yang dilakukan layanan TV lain yang tidak dilakukan di sini
    • Khusus untuk kanal Jepang, sepertinya jumlah kanal lebih banyak di https://tv.garden/
    • Di mobile juga memuat sangat cepat dan bisa menonton kanal dari berbagai belahan dunia, jadi layak diperkenalkan dalam tulisan terpisah
    • Akan bagus kalau hadir sebagai plugin Jellyfin
    • Sejauh ini ini terlihat sebagai situs IPTV paling matang yang pernah saya lihat
  • Situasi di mana bot harus menjalankan browser headless dengan profil baru setiap saat itu konyol. Cloudflare tidak bisa menghentikan bot, hanya membuang sumber daya kedua pihak, dan pada dasarnya menyerahkan riwayat akses dan kata sandi ke NSA, jadi rasanya ingin kembali ke internet lama

  • Penjelasannya adalah “dibuat karena tidak ada Chromecast atau AirPlay sehingga tidak bisa mengirim video web dari laptop ke TV”, tetapi terlihat seperti dibuat oleh Claude

    • Memang benar dibantu Claude, dan saya juga bukan ahli DLNA atau FFMPEG, tetapi yang penting adalah ini menyelesaikan masalah yang saya alami. Akan lebih baik lagi kalau juga menyelesaikan masalah orang lain
    • Bisa juga dibilang compiler dibuat dengan memanfaatkan library dari Google dan lain-lain. Sampai Claude bisa langsung menghasilkan kode mesin siap rilis, ia hanyalah satu lapisan perantara lagi antara niat manusia dan hasil akhirnya
  • Saya kira inti Turnstile adalah mendeteksi browser headless agar sulit dibypass, jadi saya ragu apakah benar bisa lolos hanya dengan meniru klik tanda centang

    • Turnstile lebih mirip alat yang menjual rasa aman semu kepada operator situs, memblokir pengguna Tor yang mematikan JavaScript, dan mendorong mereka memberikan salinan seluruh trafik ke Cloudflare
      Dibanding keamanan nyata, yang tampaknya lebih penting adalah keamanan palsu yang dipakai Cloudflare untuk pemasaran lewat jumlah pengguna yang diblokir yang dihitung tanpa membedakan manusia dan bot
    • Jika event yang tepat ditiru, tanpa deteksi platform akan sulit membedakan browser headless dari browser sungguhan. Namun mendeteksi software renderer Linux tidak sulit, jadi jika bypass seperti ini terus berlanjut, ada kemungkinan pengguna Linux akan dipaksa menjalani satu atau lebih verifikasi tambahan
      Kotak centang itu hanya sebagian; sebelum itu mereka mengamati semua perilaku browser dan respons terhadap event untuk menentukan perlunya verifikasi tambahan berdasarkan kemungkinan sebagai bot
    • Bukan cuma meniru klik centang, tapi juga memalsukan berbagai properti browser. Kalau browser headless biasa, kemungkinan besar akan terdeteksi
    • Bahkan dengan sistem pertahanan bernilai jutaan dolar, orang-orang sudah lama mengotomatisasi WoW dengan cara seperti menempelkan periferal ke kipas angin yang bergetar. Otomatisasi browser headless juga seperti cheat FPS, di mana pihak penyerang memegang inisiatif, dan jika punya cukup waktu serta uang, pada akhirnya mereka bisa menang
    • Jika bisa membuat browser yang lolos semua pemeriksaan lain yang dijalankan di background, yang tersisa di akhir hanyalah klik tanda centang
  • Biasanya alat pembajakan setidaknya menyisakan kemungkinan penyangkalan yang masuk akal, tetapi di sini malah terang-terangan membantu streaming film blockbuster beranggaran 250 juta dolar yang tayang akhir pekan ini

    • Saya kira strukturnya mencari film di sumber yang sudah diatur lalu mengembalikan “tidak ditemukan” jika tidak ada. Stremio juga aplikasi legal, tetapi jika ditambah plugin Torrentio yang ilegal, media bisa dibajak otomatis, jadi pengembangan intinya bisa dilakukan secara terbuka
      Emulator Azahar dan fork ilegal Azahar Plus yang otomatis mendekripsi game juga mirip, tetapi setelah saya lihat lagi, proyek ini memang menanamkan situs streaming ilegal
    • Antarmukanya menampilkan film yang sedang populer dari https://www.themoviedb.org/
    • Awalnya terlihat seperti alat untuk mengirim video dari situs web yang memang sudah bisa diakses dari laptop ke TV. Namun penjelasan seperti hasil AI tentang “situs web acak” dan opsi API key TVDB membuat fokus sebenarnya jadi membingungkan
    • Bisa jadi yang diputar bukan film aslinya, melainkan hanya trailer
  • Langsung berjalan di Samsung TV biasa yang usianya sudah lebih dari 15 tahun. Saya penasaran apakah menulis fitur pencarian sendiri untuk menganalisis semua halaman JSON seperti https://vsembed.ru/movies/latest/page-1.json memang pendekatan terbaik

  • Penjelasannya kurang konteks, sehingga sulit tahu ini alat untuk apa, dan apakah untuk pembajakan

    • Ini adalah alat baris perintah yang saat memilih film akan mencari video yang cocok di situs streaming, melakukan transcoding, menempelkan subtitle secara real-time, lalu memberi instruksi ke TV untuk memutarnya
    • Hanya memutar stream yang memang sudah bisa diakses dan tidak membobol enkripsi, jadi tidak jelas bagaimana ini membantu pembajakan
    • Ini adalah cara transmisi alternatif yang mengekstrak video streaming dari situs web atau layanan lalu mengirimkannya ke TV
    • Layanan besar yang ada sekarang sudah mendukung cast layar, jadi saya jadi bertanya-tanya apakah penggunaan nyatanya pada akhirnya untuk stream olahraga ilegal dan semacamnya
  • Upayanya kurang lebih sama repotnya dengan memakai torrent, jadi saya tidak melihat alasan kuat untuk memakainya

  • Pada Docker versi macOS, TV mungkin tidak ditemukan

    • Untuk menggunakan UPnP melalui VM yang dibutuhkan Docker di macOS, kemungkinan jaringan terkait perlu diatur agar terekspos ke luar
  • Bagian “menjalankan Chrome headless yang menyembunyikan otomatisasi dengan fingerprint acak dan stealth script” membuat saya kehilangan kepercayaan

    • Saya bekerja di bidang browser fingerprinting dan setelah melihat repositorinya, sepertinya hanya memodifikasi navigator, Audio API, dan Canvas API. Ini sangat dasar, jadi kemungkinan besar mudah terdeteksi