Skip to content

Commit

Permalink
[Feature] download timeline album of fb page
Browse files Browse the repository at this point in the history
  • Loading branch information
HoangTran0410 committed Sep 15, 2021
1 parent f6771e7 commit d9049eb
Show file tree
Hide file tree
Showing 5 changed files with 347 additions and 5 deletions.
4 changes: 4 additions & 0 deletions config.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
// do not modify this
export const FB_API_HOST = "https://graph.facebook.com";

// you can modify all the variables below
export const ACCESS_TOKEN = "YOUR_ACCESS_TOKEN";
export const WAIT_BEFORE_NEXT_FETCH = 0;
export const ID_LINK_SEPERATOR = ";";
Expand Down
6 changes: 2 additions & 4 deletions dowload_album.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import fetch from "node-fetch";
import {
ACCESS_TOKEN,
FB_API_HOST,
WAIT_BEFORE_NEXT_FETCH,
ID_LINK_SEPERATOR,
FOLDER_TO_SAVE_LINKS,
Expand All @@ -9,17 +10,14 @@ import {
import {
createIfNotExistDir,
deleteFile,
downloadFile,
downloadFileSync,
saveToFile,
sleep,
} from "./utils.js";

const HOST = "https://graph.facebook.com";

const fetchAlbumDataFromCursor = async ({ albumId, cursor, limit = 100 }) => {
// create link to fetch
let url = `${HOST}/${albumId}/photos?fields=largest_image&limit=${limit}&access_token=${ACCESS_TOKEN}`;
let url = `${FB_API_HOST}/${albumId}/photos?fields=largest_image&limit=${limit}&access_token=${ACCESS_TOKEN}`;
if (cursor) {
url += `&after=${cursor}`;
}
Expand Down
46 changes: 46 additions & 0 deletions download_timeline_album.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// TimeLine Album là 1 album chứa tất cả hình ảnh có trong page
// Thường thì chỉ có page mới có timeline album
// album này sẽ không hiện trên trang web facebook (hoặc có mà mình ko biết cách tìm ở đâu), cần dùng tool để lấy

import fetch from "node-fetch";
import { ACCESS_TOKEN, FB_API_HOST } from "./config";
import { saveAlbumPhoto, saveAlbumPhotoLinks } from "./dowload_album";

export const getTimeLineAlbumId = async (page_id) => {
// create link to fetch all albums of page
let url = `${FB_API_HOST}/${page_id}/albums?fields=name,id&limit=100&access_token=${ACCESS_TOKEN}`;

try {
// fetch data
const response = await fetch(url);
const json = await response.json();

// find timeline album
const timeLineAlbum = json.data.find((_) => _.name == "Timeline Photos");

// return id (or null if not found timeline album)
return timeLineAlbum?.id;
} catch (e) {
console.error("ERROR", e.toString());
}
};

export const saveTimeLineAlbumPhotoLinks_FBPage = async (page_id) => {
const album_id = await getTimeLineAlbumId(page_id);
if (album_id) {
console.log("Tìm thấy timeline album: ", album_id);
saveAlbumPhotoLinks(album_id);
} else {
console.error("! Page facebook này không có timeline album.");
}
};

export const saveTimeLineAlbum_FBPage = async (page_id) => {
const album_id = await getTimeLineAlbumId(page_id);
if (album_id) {
console.log("Tìm thấy timeline album: ", album_id);
saveAlbumPhoto(album_id);
} else {
console.error("! Page facebook này không có timeline album.");
}
};
28 changes: 27 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,26 @@
import { saveAlbumPhoto, saveAlbumPhotoLinks } from "./dowload_album.js";
import {
getTimeLineAlbumId,
saveTimeLineAlbum_FBPage,
saveTimeLineAlbumPhotoLinks_FBPage,
} from "./download_timeline_album.js";

// Lưu tất cả hình trong timeline album của 1 page fb
saveTimeLineAlbum_FBPage("BoxGirlVn");

// Lưu tất cả id ảnh và link ảnh trong timeline album của 1 page fb
// saveTimeLineAlbumPhotoLinks_FBPage("BoxGirlVn");

// Lưu tất cả hình trong 1 album bất kỳ (nếu biết trước id của album)
// saveAlbumPhoto("245004546697321");

// Lưu tất cả id ảnh và link ảnh trong 1 album bất kỳ (nếu biết trước id của album)
// saveAlbumPhotoLinks("245004546697321");

// ================================ EXAMPLES =================================
// ColourfulSpace: https://www.facebook.com/media/set/?vanity=ColourfulSpace&set=a.945632905514659
// saveAlbumPhotoLinks("945632905514659");
saveAlbumPhoto("945632905514659"); // CẨN THẬN: hơn 30 nghìn ảnh lận đó, lưu vào máy là hơi bị LÂU và NẶNG luôn :))
// saveAlbumPhoto("945632905514659"); // CẨN THẬN: hơn 30 nghìn ảnh lận đó, lưu vào máy là hơi bị LÂU và NẶNG luôn :))

// J2Team-Girl: https://www.facebook.com/media/set/?set=oa.245004546697321&type=3
// saveAlbumPhotoLinks("245004546697321");
Expand All @@ -11,3 +29,11 @@ saveAlbumPhoto("945632905514659"); // CẨN THẬN: hơn 30 nghìn ảnh lận
// J2Team-Girl: https://www.facebook.com/media/set/?set=oa.628769808043090&type=3
// saveAlbumPhotoLinks("628769808043090");
// saveAlbumPhoto("628769808043090");

// AnhGirlXinh: https://www.facebook.com/media/set/?vanity=anhgirlxinh.net&set=a.568433099885020
// saveAlbumPhotoLinks("568433099885020");
// saveAlbumPhoto("568433099885020");

// NgamGaiDep: https://www.facebook.com/media/set/?vanity=ngamgaidep.plus&set=a.1885102325148609
// saveAlbumPhotoLinks("1885102325148609");
// saveAlbumPhoto("1885102325148609");
Loading

0 comments on commit d9049eb

Please sign in to comment.