/FBMediaDownloader

NodeJs Tool for auto Download media from facebook.

Primary LanguageJavaScript

FB Media Downloader

Donate? Muốn hỗ trợ mình 1 ly cafe <3 Donate here

THÔNG BÁO: ĐÃ CÓ PHIÊN BẢN WEB TỐT HƠN XEM NGAY

Công cụ tải ảnh facebook hiện tại đã có phiên bản web (extension)

Không cần cài đặt rườm rà

preview

QUAN TRỌNG - NÊN ĐỌC

Hiện tại mình đang trong quá trình tích hợp FBMediaDownlader vào Extension Useful-script

  • Mình sẽ không code thêm chức năng mới cho tool này nữa.

  • Các chức năng đã có, và chức năng mới sẽ được cập nhật bên Extension nhé.

  • Sử dụng extension sẽ nhanh hơn, tiện hơn, không yêu cầu cài đặt phức tạp.

  • Sử dụng extension sẽ tải về file chứa các link ảnh. Các bạn chỉ cần đưa danh sách link đó vào các trình tải xuống như IDM hoặc FDM là có thể tải hết ảnh về rồi.

  • Extension còn có rất nhiều chức năng khác (>100 chức năng) đợi mọi người trải nghiệm.

  • Tải extension ngay Tại đây

Giới thiệu

Bài post giới thiệu tool: Post

Video hướng dẫn

1 Tool nhỏ viết bằng Nodejs (kèm theo Bookmark hỗ trợ) (Cập nhật: Bookmarks được di chuyển tới Đây). Giúp:

  • Tải nhanh 1 album ảnh bất kì trên facebook, bạn chỉ cần có id của album ảnh đó là được.
  • Tải nhanh toàn bộ ảnh/video trên tường của 1 đối tượng (user/group/page).
  • Tải về đường link của các ảnh/video trên.
  • (MỚI) Tải về toàn bộ hình ảnh/video của người dùng instagram đăng trên tường của họ.
  • (MỚI) Đa ngôn ngữ (Tiếng anh/Tiếng việt) - Multilanguage (English/Vietnamese)
  • (MỚI) Không cần mất thời gian tự tạo bookmarks nữa, đã có Extension mới giúp lấy id user/page/group, access token, ... nhanh hơn
LỊCH SỬ CẬP NHẬT
  • UPDATE (15/11/2022)

    • Tất cả Bookmarks hỗ trợ đã được tổng hợp tai extension mới Useful-scripts, từ giờ mọi người sử dụng extension cho tiện hơn, không cần tự tạo bookmarks nữa nhé.
  • UPDATE (26/10/2022)

    • Thêm ngôn ngữ Tiếng anh
  • UPDATE (20/8/2022)

    • Cách lấy token mới, dùng web bên thứ 3 (nên dùng nick clone thôi, mình không đảm bảo cookie của bạn được an toàn đâu :)
    • Link web: https://ffb.vn/get-token
  • UPDATE (17/04/2022)

    • Bài Post: J2Team Community
    • Video demo: Youtube
    • Thêm bookmark mới cho instagram: Lấy toàn bộ link ảnh/video của người dùng instagram.
    • Thêm chức năng mới:
      • Tải từ file chứa links. (Chức năng số 6).
      • Chức năng này hỗ trợ cho bookmark instagram
  • UPDATE (27/03/2022)

    • Thêm chức năng mới:
      • Tải toàn bộ/một phần ảnh/video từ user. (Chức năng số 5).
      • Chức năng này dành cho bạn nào muốn tải ảnh/video từ user. Chưa hỗ trợ group, page.
      • Hỗ trợ tải từ vị trí ảnh bất kỳ (Nếu có lỗi thì tải tiếp, ko cần tải lại từ đầu).
    • Fix vài lỗi nhỏ.
  • UPDATE (01/03/2022)

    • Đã tìm được cách lấy token full quyền. Các bạn vào file bookmarks.js để lấy nhé, ngay đầu file luôn. Mong fb sẽ không fix :)
    • Nếu bị fix thì có những cách khác các bạn có thể thử:
      • Mua acc clone => sẽ có token full quyền
      • Tool log giả lập android
  • FIX (12/11/2021)

    • Đã tìm được cách lấy token (hầu như) full quyền (UPDATE: Không còn full quyền)
    • Mọi người làm theo hướng dẫn trong link Này nhé
    • Cách này khó làm bookmark quá nên mọi người chịu khó làm bằng tay nhé :))
    • Lấy token cũng làm 1 lần rồi là xong mà :)) khi nào không dùng được nữa mới phải lấy lại.
  • FIX (08/11/2021)

    • Sau khi fb cập nhật thì bookmark lấy accesstoken đã không còn dùng được nữa, do fb đã giấu mất accesstoken.
    • Do đó mình đã tạo 1 bookmark mới "Lấy access token (có thời hạn. app token)"
    • Cách lấy này chỉ lấy được token dạng app token, không full quyền như user token cũ
    • Nên có thể vài chức năng sẽ không hoạt động được (chức năng tải ảnh/video trên tường đối tượng)
    • Mình sẽ tìm cách để fix lỗi này và cập nhật nhanh nhất có thể
  • Update (20/10/2021):

    • Chức năng tải ảnh với độ phân giải GỐC:
    • Ưu điểm:
      • Tải ảnh gốc chắc chắn là sướng hơn ảnh bị nén rồi :)))))))
    • Nhược điểm:
      • Tốc độ tải chậm hơn tải ảnh chất lượng thường (Do với mỗi ảnh phải gọi thêm 1 API để lấy link tải ảnh gốc)
      • Tỷ lệ bị ban (FB không cho tải nữa và tự đăng xuất}) cao hơn, do gọi API liên tục.
        • => Các bạn chỉ cần login lại và lấy access token mới là tải được tiếp
      • Để giảm tỷ lệ bị ban, hãy tăng thời gian chờ ở biến WAIT_BEFORE_NEXT_FETCH_LARGEST_PHOTO trong file config.js nhé
  • Update (03/10/2021):

    • Giao diện tiếng việt có dấu.
    • Tải từng hình/video. Tải liên tiếp chứ ko tải song song như cũ
      • Tốc độ tải chậm hơn (do chỉ tải bằng 1 luồng)
      • Nhưng tỉ lệ lỗi sẽ thấp hơn đáng kể, tải file nào xong file đó.
    • Thu gọn README
  • Update (21/09/2021):

    • Có thêm chức năng tải album tại vị trí bất kỳ (không nhất thiết là từ đầu album tới cuối album). Dành cho trường hợp bạn tải được 1 nửa album rồi mà bị rớt mạng hoặc lỗi. Thì chỉ cần mở lại rồi tải từ vị trí ảnh tải được gần nhất là xong.
    • Giao diện tiếng việt (không dấu)
    • UI
  • Update (19/09/2021):

    • Tool có thêm chức năng tải tất cả ảnh/video trên tường của 1 đối tượng (user/group/page)

Album with 30k photos

Ưu Điểm

Có 4 chức năng chính
  1. Xem thông tin album (tên, số lượng ảnh, link, ...)
  2. Tải timeline album của 1 page fb: đây là album ẩn, chứa tất cả ảnh từ trước tới giờ trong page fb đó. Ví dụ như hình phía trên (link).
  3. Tải album bất kì: album của user, của group, hay của page đều chơi được tất.
  4. Tải tất cả ảnh/video trên tường (wall) của 1 đối tượng (user/group/page).

Để có thể tải những thứ trên thì bạn chỉ cần truyền vào album_id / user_id / group_id / page_id. Để có thể dễ dàng lấy được những id này mình cũng đã viết sẵn các bookmark scripts cho các bạn sử dụng. Xem trong file scripts/bookmarks.js. Cập nhật, sử dụng extension mới dễ dàng hơn không cần tạo bookmarks Extension tại đây

  • bookmarks
Có 2 chế độ
  • Bạn có thể tải FILE:
    • Tất cả FILE ẢNH trong album
    • Tất cả FILE ẢNH/VIDEO trên tường của đối tượng (user/group/page).
  • Hoặc có thể tải URL:
    • Tất cả ĐƯỜNG DẪN URL của những ảnh/video trong album/trên tường.
    • Tool sẽ lưu danh sách url đó vào 1 file. (Rồi sau này muốn làm gì đống link đó thì tùy bạn).
Tốc độ tải cực nhanh
  • Tại sao viết tool bằng NodeJs chứ không phải chrome extension, vì theo mình thấy những việc liên quan tới tải file vậy thì dùng NodeJs sẽ nhanh hơn rất nhiều so với extension (phải thông qua trình duyệt để tải file).
  • Tốc độ tải file sẽ phụ thuộc vào đường truyền mạng của bạn. Có khi ngốn hết băng thông luôn đấy, MAX NHANH NHÉ.
  • VÍ DỤ Tải album 30 NGHÌN ảnh trong chưa đầy 15p (intel core i5, gen 8, 12GB RAM)
Khả năng tải cực nhiều
  • Tool có thể tải và lưu cả Timeline Album - 1 dạng album ẨN, chứa TẤT CẢ các hình ảnh có trong 1 PAGE FACEBOOK. Ví dụ: Post này (Mình tải thử thì được 7GB ảnh)
  • Tool có thể tải TẤT CẢ ảnh/video trên wall 1 đối tượng (user/group/page). Chẳng hạn bạn muốn tải hết ảnh/video từng được đăng lên J2team Girl? Chuyện đó giờ dễ như trở bàn tay!!
Không bị checkpoint
  • Tool dùng acccess token của bạn để fetch dữ liệu từ Facebook (Các API mình tham khảo từ Đây).
  • Việc Fetch dữ liệu thì không ảnh hưởng tới checkpoint nhé. Fetch sẽ trả về link ảnh/video.
  • Việc tải ảnh/video từ link thì cũng không ảnh hưởng luôn.
  • Mình đã thử ở album Này. Trên 30 NGHÌN ảnh, tải rất mượt và không vấn đề gì nhé.
  • Nếu có vấn đề thật thì các bạn chỉ cần lấy access token khác là xong :))
Cung cấp sẵn các bookmark hỗ trợ Extension giúp lấy id nhanh hơn

Mình viết sẵn những bookmark sau (trong file bookmarks.js) Extension mới Tại đây, sẽ giúp các bạn dùng tool được dễ dàng hơn:

  • Bookmark lấy Access Token
  • Bookmark lấy Album ID - khi đang xem 1 album bất kỳ
  • Bookmark lấy Group ID - trường hợp url của group hiển thị tên chứ ko hiển thị id
  • Bookmark lấy User ID - khi đang xem profile của 1 user
  • Bookmark lấy Page ID - khi đang xem trang chủ của 1 page fb
  • Bookmark lấy Timeline Album ID của Page FB - khi đang xem trang Home của 1 Page FB (script này ko ổn định, tùy page)
  • Bonus:
    • Bookmark lấy Tất cả album id có trong trang web - khi đang xem danh sách album của user/group/page
    • Bookmark lấy Tất cả video id có trong trang web - khi đang trong tab xem video của youtube
    • Bookmark Tải video bằng video id - nhập vào id của video là tool sẽ mở trang tải video đó (chất lượng SD)
    • Bookmark Tải video đang xem - trường hợp đang trong trang xem video - tool sẽ tự tìm video id ở trên url và mở trang tải video cho bạn (chất lượng SD)

Demo

Video hướng dẫn + demo

Lưu ý: Trong video thì mình đã cài sẵn nodejs rồi, nên sẽ không huớng dẫn cách cài nữa nhé.

CÀI ĐẶT VÀ SỬ DỤNG

Để có thể chạy tool thì bạn làm các bước sau:

Bấm vào đây để mở rộng
  1. Cài NodeJS (version 14 trở lên).

  2. Cài đặt các bookmark script mình đã cung cấp trong file scripts/bookmarks.js.

  3. Tải source code về (nhấn nút Clone > Download zip) và Giải Nén (hoặc dùng git clone).

  4. Mở cmd trong folder code và chạy câu lệnh npm install để cài đặt tool.

  5. Lấy AccessToken của bạn Cách lấy (Hoặc dùng bookmark của mình để lấy). Sau đó bỏ access token vào file config.js

  • access token config.js
  1. Chạy câu lệnh node index.js trong cmd. Giao diện menu sẽ hiện ra và bạn có thể sử dụng ngay.
  • menu
  1. Khi sử dụng tool tùy từng chức năng nó sẽ yêu cầu bạn cung cấp id (album_id/user_id/group_id/page_id). Bạn chỉ cần dùng bookmark đã tạo để lấy id rồi truyền vào là xong.
  • get group id
  1. Các file mà tool tải sẽ được lưu trong folder downloads/ (các bạn có thể thay đổi vị trí lưu bằng cách chỉnh sửa trong file config.js)
  • downloads folder

LINK NGON

LỖI ĐÃ BIẾT

LỖI Tìm thấy 0 hình ảnh
  • => LÝ DO: Có thể do accessToken của bạn chưa full quyền. Nên sẽ không lấy được dữ liệu hình ảnh/video.

  • => XỬ LÝ: Hãy sử dụng bookmark mới nhất (01/03/2022) để lấy được token full quyền và thử lại nhé

LỖI dừng tải ảnh do đường truyền bị ngắt
  • error 1

  • error 2

  • => LÝ DO: Do tool tải quá nhanh và nhiều ảnh cùng lúc, nên sẽ ngốn hết băng thông. Do đó nếu bạn vừa tải vừa mở trình duyệt hay ứng dụng nào sử dụng internet, thì sẽ gây ra hiện tượng nghẽn băng thông, gây lỗi.

  • => XỬ LÝ: Trước khi dùng chức năng tải album về thì bạn tạm thời tắt hết những ứng dụng khác đi, đợi nó tải xong rồi hẵng mở lại nhé.

NẾU đang tải album mà BỊ LỖI như trên thì **tôi phải TẢI LẠI TỪ ĐẦU à**?
  • Vào bản cập nhật sáng ngày 21/09/2021 (ai cài tool từ trước thời gian này thì bạn vui lòng tải và cài lại tool nhé)
  • Mình đã thêm chức năng tải album ảnh từ vị trí photo_id bất kì, không nhất thiết phải tải từ đầu album lại nữa
  • Nếu đang tải mà bị lỗi, bạn chỉ cần lấy id của ảnh gần nhất đã lưu được, rồi mở lại chức năng Download album, truyền id đó vào "from photo id", là tool sẽ tải từ vị trí đó cho bạn.
  • Ví dụ bạn gặp lỗi dừng tải như hình bên dưới:
  • from photo id
  • Copy id trên và tải lại tại vị trí id đó:
  • from photo id
LỖI *Unexpected token '.'* khi chạy câu lệnh *node index.js*
  • unexpected token .
  • => LÝ DO: phiên bản nodejs của bạn quá thấp, tool cần phiên bản nodejs 14 trở lên để có thể chạy được.
  • => XỬ LÝ:
    • Cách 1: Cập nhật nodejs lên phiên bản cao hơn (>=14).
    • Cách 2: Nếu bạn dùng win 7 (hoặc thấp hơn) và cài không được nodejs 14 trở lên thì bạn tải và cài bản .zip thay vì bản .msi nhé. Chi tiết xem trong Đây
LỖI có chữ *OAuthException* gì đó khi tải ảnh/video
  • Lý do: Có thể do token của bạn chưa đủ quyền, bạn nên thử các cách lấy token khác (hiện mình có 3 bookmarks, bạn cứ thử hết)
  • Hoặc dùng vài trang web lấy token trên mạng: https://ffb.vn/get-token
  • (Lưu ý: mình không đảm bảo trang web này có bảo mật thông tin/cookies/token của các bạn hay không, nên hãy sử dụng cẩn trọng nhé, dùng cookie của nick clone thôi, đừng dùng nick chính)