Download Torrent via Github Action

Download Torrent via Github Action

Torrent merupakan salah satu cara berbagi file yang bersifat P2P (Peer to Peer), yang artinya ketika kita mendownload file melalui torrent kita membuka koneksi dengan komputer lain (peers) yang dalam hal ini cukup beresiko bagi komputer kita. Untuk menghindari resiko tersebut ada beberapa cara yang dapat kita lakukan seperti menggunakan VPN atau dengan menggunakan virtual komputer (cloud computer).

Nah, pada kesempatan ini saya akan bagikan cara download torrent melalui cloud computer dengan memanfaatkan fitur dari Github Action. Untuk sistem kerjanya kurang lebih akan seperti berikut:

Penjelasannya gini: Github action akan menjalankan docker container dari image subekti13/torrent-downloader yang mana didalamnya sudah terinstall transmission (torrent client) dan script untuk mendownload torrent ke dalam container lalu kemudian ketika proses download itu selesai, kita eksekusi script untuk mengunggahnya ke google drive dengan memanfaatkan API dari google drive. Jika teman2 penasaran dengan scriptnya bisa di cek di github saya (https://github.com/subekti404dev/torrent-downloader)

Oke tanpa basa-basi langsung saja kita persiapkan terlebih dahulu project di google console karena kita akan menggunakan API dari google drive.

Buat Google Drive Project

buka url berikut: https://console.cloud.google.com, kemudian buat project baru

masukkan nama project, lalu klik tombol CREATE.

Setelah itu pilih project yang sudah kita buat barusan, klik icon menu > API & Services > Enabled API & Services

Setelah itu akan muncul tampilan berikut:

Klik tombol + ENABLE APIS AND SERVICES, kemudian kita akan diarahkan ke halaman berikut:

ketikan drive di serach bar, lalu pilih Google Drive API. kemudian klik tombol Enable

Selanjutnya kita setting oauth screen-nya, ikuti seperti gambar berikut ya guys:

masukkan app name (terserah) dan email kalian ya.

tambahkan test users email, gunakan email yang google drive-nya mau dipakai ya.

selanjutnya kita buat credentials..

Pilih Web application , masukkan name (terserah), tambahkan redirect url ke  https://developers.google.com/oauthplayground lalu klik CREATE

Simpan Client ID dan Client Secret kalian ya guys. nanti akan kalian butuhkan.

Generate Token

Oke setelah kita buat project, langkah selanjutnya adalah generate token. silahkan buka https://developers.google.com/oauthplayground

Klik icon setting > centang Use your own OAuth credentials > masukkan Client ID & Client Secret kalian > klik close.

di bagian API, scroll dan pilih Drive API v3 > centang https://googleapis.com/auth/drive > klik tombol Authorize API.

Pilih email yang dimasukkan ke test users tadi ya

pilih email project kalian > klik Allow

klik tombol Exchange authorization code for tokens > lalu akan muncul refresh token. kemudian copy dan simpan refresh token anda karena akan kita butuhkan nanti.

Buat Github Repo Baru

langkah selanjutnya silahkan buat repository baru di github anda dengan settingan public aja ya guys (workflow untuk repo public itu unlimited free hehe suka yang gratisan kan?).

tambahkan satu file baru di repo tersebut dengan path .github/workflows/torrent.yml. Isi file tersebut dengan code berikut:

name: Docker Torrent Download
on:
  workflow_dispatch:
    inputs:
      url:
        description: 'Torrent file URL'
        required: true
jobs:
  download:
    runs-on: ubuntu-latest
    container: subekti13/torrent-downloader:latest
    steps:
       
        - name: Write .env File
          run: |
              echo '${{ secrets.DOTENV }}' >> .env
        
          
        - name: Dowload File
          run: node /app/download.js ${{ github.event.inputs.url }}
      
        - name: LS
          run: cd /data && ls -la
          
        - name: Upload to Drive
          run: node /app/upload.js

Setelah itu pergi ke tab Setting > pilih menu Secrets > Pilih sub menu Actions > klik tombol New Repository secret.

di field Name isikan DOTENV , lalu di field Value isikan variable berikut:

GA_DRIVE_CLIENT_ID=
GA_DRIVE_CLIENT_SECRET=
GA_DRIVE_REDIRECT_URL=https://developers.google.com/oauthplayground
GA_DRIVE_REFRESH_TOKEN=

isi Client ID, Client Secret, dan Refresh Token dengan punya kalian ya (yang didapat dari langkah sebelumnya).

kemudian klik Add Secret

Running Workflow (Download Torrent)

Untuk menjalankan workflow, masuk ke tab Actions > Pilih Docker Torrent Downloader > Klik Dropdown Run Workflow > masukkan Torrent file url yang mau temen2 download > lalu terakhir klik tombol Run workflow.

Tinggal pantau lognya ya guys

Jika sudah selesai, silahkan teman2 masuk ke google drive dan lihat filenya disana

Oke, segitu aja tutorial kali ini ya ...

See you :)

Video: