5 changed files with 200 additions and 15 deletions
@ -0,0 +1,4 @@
|
||||
module.exports = { |
||||
singleQuote: true, |
||||
trailingComma: 'none' |
||||
}; |
||||
@ -0,0 +1,179 @@
|
||||
import { hasPath, pathOr, props, last } from 'ramda'; |
||||
import { do_request } from './facebook-request.mjs'; |
||||
const sleep = (s) => new Promise((res) => setTimeout(res, s * 1000)); |
||||
|
||||
const doPageEventsTabPastEventsCardRendererQuery = async ({ pageID }) => { |
||||
const doc_id = '4421910857857782'; |
||||
const renderer_query_result = await do_request(doc_id, { pageID }); |
||||
const page = pathOr( |
||||
null, |
||||
['data', 'page', 'past_events'], |
||||
renderer_query_result |
||||
); |
||||
|
||||
if (page === null) { |
||||
console.error('doPageEventsTabPastEventsCardRendererQuery returned null.'); |
||||
} |
||||
|
||||
return page; |
||||
}; |
||||
|
||||
const doPageEventsTabUpcomingEventsCardRendererQuery = async ({ pageID }) => { |
||||
const doc_id = '5182274978466320'; |
||||
const renderer_query_result = await do_request(doc_id, { pageID }); |
||||
const page = pathOr( |
||||
null, |
||||
['data', 'page', 'upcoming_events'], |
||||
renderer_query_result |
||||
); |
||||
|
||||
if (page === null) { |
||||
console.error( |
||||
'doPageEventsTabUpcomingEventsCardRendererQuery returned null.' |
||||
); |
||||
} |
||||
|
||||
return page; |
||||
}; |
||||
|
||||
const doPageEventsTabPastEventsCardPaginationQuery = async ({ |
||||
pageID, |
||||
cursor |
||||
}) => { |
||||
const doc_id = '6953034388071359'; |
||||
let count = 9; |
||||
const renderer_query_result = await do_request(doc_id, { |
||||
pageID, |
||||
cursor, |
||||
count |
||||
}); |
||||
const page = pathOr( |
||||
null, |
||||
['data', 'page', 'past_events'], |
||||
renderer_query_result |
||||
); |
||||
|
||||
if (page === null) { |
||||
console.error( |
||||
'doPageEventsTabPastEventsCardPaginationQuery returned null.' |
||||
); |
||||
} |
||||
|
||||
return page; |
||||
}; |
||||
|
||||
const doPageEventsTabUpcomingEventsCardPaginationQuery = async ({ |
||||
pageID, |
||||
cursor |
||||
}) => { |
||||
const doc_id = '6985622308176123'; |
||||
let count = 9; |
||||
const renderer_query_result = await do_request(doc_id, { |
||||
pageID, |
||||
cursor, |
||||
count |
||||
}); |
||||
const page = pathOr( |
||||
null, |
||||
['data', 'page', 'upcoming_events'], |
||||
renderer_query_result |
||||
); |
||||
|
||||
if (page === null) { |
||||
console.error( |
||||
'doPageEventsTabUpcomingEventsCardPaginationQuery returned null.' |
||||
); |
||||
} |
||||
|
||||
return page; |
||||
}; |
||||
|
||||
// doPageEventsTabPastEventsCardPaginationQuery
|
||||
const get_page_events = async ({ |
||||
pageID, |
||||
get_past_events, |
||||
get_upcoming_events |
||||
}) => { |
||||
let past_events = []; |
||||
|
||||
if (get_past_events) { |
||||
const result = await doPageEventsTabPastEventsCardRendererQuery({ pageID }); |
||||
|
||||
if (result !== null) { |
||||
let { has_next_page, end_cursor: cursor } = result.page_info; |
||||
|
||||
let { edges } = result; |
||||
while (has_next_page) { |
||||
sleep(2); |
||||
const paginationResult = |
||||
await doPageEventsTabPastEventsCardPaginationQuery({ |
||||
cursor, |
||||
pageID |
||||
}); |
||||
if (paginationResult === null) { |
||||
break; |
||||
} |
||||
edges = [...edges, ...paginationResult.edges]; |
||||
has_next_page = paginationResult.page_info.has_next_page; |
||||
cursor = paginationResult.page_info.end_cursor; |
||||
} |
||||
past_events = [...edges]; |
||||
} |
||||
} |
||||
|
||||
let upcoming_events = []; |
||||
|
||||
if (get_upcoming_events) { |
||||
const result = await doPageEventsTabUpcomingEventsCardRendererQuery({ |
||||
pageID |
||||
}); |
||||
if (result !== null) { |
||||
upcoming_events = []; |
||||
let { has_next_page, end_cursor: cursor } = result.page_info; |
||||
let { edges } = result; |
||||
while (has_next_page) { |
||||
sleep(2); |
||||
const paginationResult = |
||||
await doPageEventsTabUpcomingEventsCardPaginationQuery({ |
||||
cursor, |
||||
pageID |
||||
}); |
||||
if (paginationResult === null) { |
||||
break; |
||||
} |
||||
edges = [...edges, ...paginationResult.edges]; |
||||
|
||||
has_next_page = paginationResult.page_info.has_next_page; |
||||
cursor = paginationResult.page_info.end_cursor; |
||||
} |
||||
upcoming_events = [...edges]; |
||||
} |
||||
} |
||||
|
||||
return [...upcoming_events, ...past_events].map(({ node }) => node); |
||||
}; |
||||
|
||||
/// const events = {
|
||||
/// edges: [
|
||||
/// {
|
||||
/// node: {
|
||||
/// __typename: "Event",
|
||||
/// },
|
||||
/// cursor:
|
||||
/// "AQHRC7ZNKEqDS75jWJfLUWromnLVgAOGzVAZE7c7CcKfoEaLCcXFSvhMvoxN8yk_Yq6fFMTWjuHjitD5sE1IzW68sw",
|
||||
/// },
|
||||
/// ],
|
||||
/// page_info: {
|
||||
/// has_next_page: true,
|
||||
/// end_cursor:
|
||||
/// "AQHRAh7tKZowf3mdyxtYISP1LNVo45rFI8HJ4nT5SuVgl0NBUfZFslx5qy1eba3YXhdjJ-S2vfojcTGF4ygnt_DQiQ",
|
||||
/// },
|
||||
/// };
|
||||
|
||||
(async () => { |
||||
const res = await get_page_events({ |
||||
pageID: '149127815110411', |
||||
get_upcoming_events: true |
||||
}); |
||||
console.log(res); |
||||
})(); |
||||
Loading…
Reference in new issue