Monday, June 12, 2017

Giải pháp get link google drive không bao giờ die

Giải pháp đường tăng xin link (https://duongtang.clgt.vn) bên dưới đây sẽ giúp anh em web phim có thể tự tin tiếp tục kinh doanh mà ko sợ google fix nữa, dịch vụ này có phí. Tuy nhiên mô hình của duongtang sẽ dc trình bày dưới đây một cách chi tiết không giấu nghề để anh em có thể tự làm nếu thích.

Đường tăng xin link


Giải pháp này tiếp tục coi google drive là storage với giá rẻ và là server convert video sang nhiều định dạng miễn phí.
Đầu tiên, các web phim phải gởi link drive đã set chế độ public về cho đường tăng.

Đường tăng như các anh em biết hoàn toàn ko đánh đấm gì, tất cả đều do đệ tử lo. Do đó chúng ta chỉ cần cho đường tăng hét lên: Nhậu không?!!
Khi đó worker aka đệ tử tôn ngộ không sẽ nhảy ra lấy link.
Tôn ngộ không sẽ cùng một lúc lấy 2 loại link:
  1. Gọi lên http://mail.google.com để lấy link VIP.
  2. Gọi lên http://drive.google.com để lấy link phụ, kèm cookie để playback.
// ngộ không
const fetchDriveEndpoint = (docId) => {
  return Promise.all([
    posiblePromise(fetchUseMailDomain(docId)),
    posiblePromise(fetchUseDrive(docId))
  ])
  .then(result => {
    const [resultFromMail, resultFromDrive] = result
    if (resultFromMail !== null) {
      return Promise.resolve(resultFromMail)
    }
    if (resultFromDrive !== null) {
      return Promise.resolve(resultFromDrive)
    }
    return Promise.resolve(null)
  })
}
Tuy thần thông đi mây về gió nhưng cốt khỉ chưa dứt, ngoài nhậu ra thì ngộ không chẳng biết làm gì. Chưa đọc dc chữ nên nó sẽ trộn 2 link kia lại thành 1 và gởi về cho đường tăng xem xét.
Lúc này, do IP khác với ngộ không ( 2 process này chạy trên 2 máy chủ khác nhau ) nên đường tăng sẽ thử mở link VIP lấy từ mail ra coi phim có HAY không.

Lúc này có 2 trường hợp:

Nếu đường tăng đạo hạnh cao thâm, coi dc link lấy từ mail thì ta trả về link này. Quá ngon.
Nếu không coi được, vậy trả về link phụ.
Đường tăng như anh em có thể đoán, là 1 API endpoint kiêm checker !
// đường tăng
const getVideos = async (id) => {
  let videos = await callWorker(id) // gọi ngộ không lấy link
  videos = await filter403Videos(videos) // lọc bỏ link bị 403

  // rút gọn link nếu thích (ko cần thiết)
  const urls = await getShortUrl(
    videos.map(video => video.src)
  )

  return videos.map((video, index) => {
    delete video.provider
    video.src = urls[index]
    return video
  })
}
Anh em lưu ý link phụ là do ngộ không lấy thì nó phải coi dc. Cùng 1 ip nên chả cần qua mặt google gì cả. Khi đó anh em có thể hình dung ngộ không sẽ coi phim rồi kể lại những gì nó thấy. ( aka: proxy streaming )

Ngộ không đôi khi cũng tới chậm vì lý do khách quan


Nếu ngộ không coi phim nhiều bị mệt và chậm, đường tăng có thể tạo thêm đệ tử khác để load balancing. Có rất nhiều cách, đoạn code minh hoạ bên dưới dùng round robin để loop qua các worker đang có trong pool.
// POOL implement round robin chứa toàn bộ đệ tử của đường tăng
const pool = new Pool()

// read stream đọc toàn bộ worker trong db
db.createReadStream({
  gt: ['worker', null],
  lt: ['worker', undefined],
  keys: false
})
.pipe(through2.obj((worker, enc, next) => {
  pool.add(worker, worker.score || 1000)
  next()
}))

// lấy worker trong pool ra dùng.
const worker = pool.next()
log.info('call worker', worker)

return got(`${worker.url}/${id}`, {
  json: true
})
.then(response => response.body)

Trang admin quản lý worker cực kì phức tạp


Anh em lưu ý là link phụ mà ngộ không lấy dc là link theo đường chính đạo, chừng nào google drive còn cho anh em chuột phải chọn preview để xem phim khi đó link phụ còn hoạt động tốt.
Chúng ta tiết kiệm dc rất nhiều tiền vì các cloud service bây giờ đều có api để provision và destroy từ xa, kèm với chính sách charge tiền theo thời gian sử dụng ko cần gói đầu nên giải pháp này phù hợp với web phim FREE kiếm tiền từ ads.
Web đường tăng xin link hiện có các tính năng:
  1. Cam kết web chạy suốt ngày đêm 24/7, uptime 99.99% do áp dụng highly available server với Floating IP.
  2. Phục vụ từ web phim nhỏ đến web phim to. Hệ thống worker0, worker1...worker24... với tổng cộng 25 con worker trần truồng đứng ngay cửa sẵn sàng chờ phục vụ quý khách. Tuy chưa thể nói nhiều nhưng đủ để đáp ứng lượng data transfer khủng lên từ vài ngàn GB đến vài chục ngàn GB mỗi ngày. Số lượng worker sẽ còn tăng nếu đường tăng xin link dc anh em ủng hộ nhiệt tình.
  3. Luôn có gói miễn phí cho web phim nào ko đặt quảng cáo, đơn giản nếu anh em up phim vì cộng đồng thì https://duongtang.clgt.vn sẽ hỗ trợ nhiệt tình ko thu xu nào. Gói này cũng ko mới, tương tự các dịch vụ nước ngoài có gói free cho open source.
  4. Có hệ thống chống chôm link. Link do đường tăng get ra có cơ chế bảo mật chỉ chạy dc trên một số domain nhất định, hỗ trợ anh em web phim ko lo bị trang khác chôm link.
Mời anh em dùng thử tại: https://duongtang.clgt.vn.

Phần anh em trông mong nhất, toàn bộ source code của https://duongtang.clgt.vn đây:

Bộ source code gồm 2 phần, đã dc đóng gói thành docker images sẳn sàng chinh chiến. Phải cài trên 2 con VPS có IP khác nhau hen.
  1. Code của đường tăng: docker pull quocnguyen/dt-api
  2. Code của tôn ngộ không : docker pull quocnguyen/dt-worker
Đừng mang code đi bán khi download miễn phí tại đây nhé. Bản beta sẽ luôn dc cung cấp miễn phí. Anh em nào ko rành code thì liên hệ mình để dùng api trực tiếp trên đường tăng xin link nhé. Khỏi quản lý server nhức đầu :smile:

Previous Post
Next Post

post written by:

0 comments: