|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- fbmemget.lua: download Facebook structures like feeds and comments into memory.
-- Idea: It doesn't make sense to save these structures in the disk cache
-- without processing, because they contain ".paging.next" fields that become
-- invalid very quickly - so we load things into memory, and then glue their
-- parts.
--
-- This file:
-- http://angg.twu.net/fbcache/fbmemget.lua
-- http://angg.twu.net/fbcache/fbmemget.lua.html
-- (find-angg "fbcache/fbmemget.lua")
--
-- (find-es "facebook" "download-all-posts-in-group")
require "fbcurl" -- (find-fbcache "fbcurl.lua")
require "fbpp" -- (find-fbcache "fbpp.lua")
fbmem = {}
fbmemget0 = function (query)
local f = (query:match"^https?:") and fbcurl0 or fbcurl
local o = f(query)
fbmem[query] = o
return o
end
fbmemget = function (query)
if fbmem[query] then return fbmem[query] end
return fbmemget0(query)
end
fbmemgetn = function (query, n, gnxt)
local o = fbmemget(query)
local A = {o}
gnxt = gnxt or function (o) return o and o.paging and o.paging.next end
while true do
if #A == n then break end
local next = gnxt(o)
if next then
o = fbmemget(next)
table.insert(A, o)
else
break
end
end
return A
end
fbglue = function (A)
local B = {}
for i=1,#A do
for j=1,#(A[i].data) do
table.insert(B, A[i].data[j])
end
end
if B[#B] == "[]" then B[#B] = nil end
return B
end
fbmemget_feed = function (query, n)
return fbmemgetn(query, n)
end
fbmemget_feed_glued = function (query)
local A = fbmemget_feed(query)
local B = {}
for i=1,#A do
for j=1,#(A[i].data) do
table.insert(B, A[i].data[j])
end
end
if B[#B] == "[]" then B[#B] = nil end
return B
end
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "fbmemget.lua"
query = "672137799470276/feed"
n = 2
A = fbmemgetn(query, n)
B = fbglue(fbmemgetn(query, n))
require "fbcache3" -- (find-fbcache "fbcache3.lua")
pp(A)
pp(B)
for i,S in ipairs(B) do print(type(S)) end
for i,S in ipairs(B) do PP(keys(S)) end
for i,S in ipairs(B) do PP(sorted(keys(S))) end
for i,S in ipairs(B) do print(S.id) end
for i,S in ipairs(B) do print(S.id, S.updated_time); fbget(S.id) end
-- https://developers.facebook.com/docs/graph-api/reference/user
require "fbnameid" -- (find-fbcache "fbnameid.lua")
nameids_read()
= nameid "eduardo.ochs"
query = nameid "eduardo.ochs" .. "/feed"
query = "1523735650"
query = "1523735650/feed"
query = "1523735650_feed"
pp(fbmemget0(query))
https://graph.facebook.com/v2.5/1523735650
https://graph.facebook.com/v2.5/eduardo.ochs
pp(A)
fbget "672137799470276_672239192793470"
pp(fbget "672137799470276_672239192793470")
PP(keys(A[1]))
PP(keys(A[1].data))
PP(keys(A[2].data))
PP(keys(A[3].data))
PP(keys(A[4].data))
PP(keys(A[5].data))
PP(keys(A[6].data))
pp(A[1].data[1])
pp(A[1].data[1].updated_time)
pp(A[1].data[2].updated_time)
pp(A[1].data[3].updated_time)
local
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "fbmemget.lua"
query = "100002199205236/feed"
n = 2
A = fbmemgetn(query, n)
B = fbglue(fbmemgetn(query, n))
pp(fbcurl(query))
--]]
-- Local Variables:
-- coding: raw-text-unix
-- End: