Cari dan filter acara dan film di Netflix menggunakan ReelGood API
Dibuat dengan:
Aplikasi ini saat ini rusak - ReelGood bermigrasi menggunakan API V3 di situs mereka dan API V2 tidak lagi berfungsi. Jika Anda ingin mengetahui bagaimana titik akhir API baru dapat digunakan dan menyumbangkan PR, silakan lakukan.
Lihat edisi #5.
Sejauh ini proyek ini hanya mewakili satu halaman hasil API sebagai teks dan gambar, menggunakan templating.
Tidak ada pelaporan atau pemfilteran yang mewah.
Saya juga mungkin membangunnya kembali di Vue, bukan di Moustache.
ReelGood adalah layanan yang menyediakan daftar acara TV dan film di banyak layanan online, termasuk Netflix.
ReelGood memiliki GUI hebat di situs web mereka yang mudah dinavigasi untuk pencarian dan pemfilteran. Mereka juga menggunakan API sebagai bagiannya. Saya ingin membuat laporan panduan acara dan daftar rekomendasi saya sendiri, jadi saya mengambil data dari API mereka dengan JS sisi klien dan merendernya di situs web.
Lihat situsnya:
Jika Anda baru mengenal Fungsi Netlify / Lambda, lihat Buku Masakan saya.
Uji titik akhir API JSON secara langsung:
Kloning repo:
$ git clone [email protected]:MichaelCurrin/netflix-assistant.git
$ cd netflix-assistant
Tidak ada langkah membangun atau menginstal!
Lanjutkan di bawah.
Menggunakan Tanpa Server untuk permintaan API
Aplikasi ini tidak dapat melakukan permintaan browser secara langsung ReelGood API (secara lokal tidak apa-apa tetapi di situs yang diterapkan Anda mendapatkan kesalahan). API berubah jadi ada kesalahan CORS.
Jadi aplikasi ini didesain ulang untuk menggunakan fitur Fungsi gratis Netlify (dibangun di AWS Lambda).
Suatu Fungsi didefinisikan menggunakan skrip JS pendek dan ini dihosting di Netlify. Ketika permintaan dilakukan ke titik akhir Fungsi ini, permintaan dilakukan ke ReelGood API dan hasilnya dikembalikan sebagai respons JSON yang di-cache.
Ini jauh lebih sederhana daripada membuat Python atau Node API, karena memerlukan lebih banyak kode dan tidak dapat dihosting di Netlify.
Kelemahannya adalah Fungsi ini hanya berfungsi di cloud dan tidak di server lokal.
Ada beberapa cara untuk mengatasi hal ini:
http
dan cukup menambahkan baris tambahan untuk memanggil skrip JS pada titik akhir tertentu - ini berarti Anda hanya memerlukan satu server dan satu port.Perhatikan bahwa penggunaan lokal terbatas - lihat bagian di atas.
Mulai server web di direktori root.
Lihat pendekatan dalam inti ini atau gunakan pendekatan di bawah.
$ python3 -m http.server
Buka di peramban. misalnya
Ada skrip shell dasar dalam proyek ini yang menggunakan Bash dan cURL untuk mendapatkan data dari ReelGood API.
Daripada menggunakan Fungsi sesuai permintaan seperti yang dibahas di atas, pendekatan ini adalah dengan mengambil data dari API dan menyimpannya sebagai data JSON, yang dapat ditinggalkan di aplikasi yang diterapkan atau dimasukkan ke kontrol versi jika Anda peduli dengan hal tersebut. Kemudian frontend dapat menggunakan data tersebut - yang akan jauh lebih cepat karena semua paging sudah ditangani. Dengan mengorbankan data yang sedikit basi dan menanyakan file JSON statis yang besar. Beberapa pembersihan dapat dilakukan agar file JSON hanya berisi bidang yang diminati.
Skrip ini mendapatkan dua halaman pertama tayangan dari API, dengan skor IMDB dan ReelGood di atas 50%. Penanganan lebih lanjut dengan Python atau sejenisnya disarankan jika Anda ingin membuat halaman dengan cerdas - yaitu mengganti nilai skip
yang lebih tinggi, hingga tidak ada lagi halaman.
Jalankan sebagai:
$ cd scrape
$ ./get_shows.sh
Kemudian lihat file JSON yang dibuat di subdirektori out
Pengaturan jarak jauh
Repo ini dapat diterapkan di Netlify secara gratis - sebagai situs web statis ditambah Fungsi Netlify untuk panggilan backend tanpa server ke API eksternal.
Header CORS harus disetel untuk permintaan API dan ini tidak mungkin disetel di Halaman Github. Selain itu, ini menggunakan Fungsi di Netlify, yang tidak didukung oleh Halaman GitHub.
Di situs web ReelGood terdapat tampilan acara TV dan film yang tersedia untuk streaming di Netflix.
Halaman ini mendukung parameter filter, opsi pemesanan, dan opsi format tampilan.
Data acara diambil dari ReelGood API.
Hal ini dilakukan saat halaman pertama dimuat, saat Anda menerapkan pemfilteran/penyortiran, dan juga saat Anda mengklik Muat Lebih Banyak di bagian bawah halaman.
API ini gratis untuk digunakan dan di halaman FAQ mereka menyediakan detail untuk meminta akses API. Saya menemukan bahwa tanpa harus mengirim email kepada mereka, API tersebut mudah diakses. Saya belum menemukan dokumentasinya, jadi saya membandingkan pilihan GUI yang saya buat dengan permintaan API yang dibuat dan menyimpulkan cara kerja bidang permintaan API dan apa arti bidang respons.
$.getJSON
(frontend) dan axios
(Fungsi) untuk menyederhanakan proyek.Untuk menghindari kesalahan CORS, proyek ini menggunakan Fungsi alias Lambda di Netlify untuk meminta data di sisi server dan kemudian membuat data tersebut tersedia di domain yang sama dengan permintaan browser.
Lihat Fungsi Netlify.
Lihat juga postingan blog.
Penyiapan lokal dapat menggunakan perpustakaan Netlify atau hanya cadangan untuk menggunakan URL asli (yang untungnya tidak memberikan kesalahan CORS di localhost meskipun terjadi di Netlify) berdasarkan tanda seperti ENV=dev
atau lokal/jarak jauh.
Dirilis di bawah MIT oleh @MichaelCurrin.