Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
####### # # E-scripts on Facebook (mainly on the Graph API) # # Note 1: use the eev command (defined in eev.el) and the # ee alias (in my .zshrc) to execute parts of this file. # Executing this file as a whole makes no sense. # An introduction to eev can be found here: # # (find-eev-quick-intro) # http://angg.twu.net/eev-intros/find-eev-quick-intro.html # # Note 2: be VERY careful and make sure you understand what # you're doing. # # Note 3: If you use a shell other than zsh things like |& # and the for loops may not work. # # Note 4: I always run as root. # # Note 5: some parts are too old and don't work anymore. Some # never worked. # # Note 6: the definitions for the find-xxxfile commands are on my # .emacs. # # Note 7: if you see a strange command check my .zshrc -- it may # be defined there as a function or an alias. # # Note 8: the sections without dates are always older than the # sections with dates. # # This file is at <http://angg.twu.net/e/facebook.e> # or at <http://angg.twu.net/e/facebook.e.html>. # See also <http://angg.twu.net/emacs.html>, # <http://angg.twu.net/.emacs[.html]>, # <http://angg.twu.net/.zshrc[.html]>, # <http://angg.twu.net/escripts.html>, # and <http://angg.twu.net/>. # ####### # «.download-video» (to "download-video") # «.facebook-api» (to "facebook-api") # «.fb-page-id» (to "fb-page-id") # «.fb-user-id» (to "fb-user-id") # «.fb-group-id» (to "fb-group-id") # «.list-my-groups-1» (to "list-my-groups-1") # «.me-metadata-1» (to "me-metadata-1") # «.good-fbkinds» (to "good-fbkinds") # «.eventnpn» (to "eventnpn") # «.eventnn» (to "eventnn") # «.eventn» (to "eventn") # «.groupnpn» (to "groupnpn") # «.groupwpn» (to "groupwpn") # «.groupnn» (to "groupnn") # «.groupwn» (to "groupwn") # «.groupn» (to "groupn") # «.groupw» (to "groupw") # «.mediawannn» (to "mediawannn") # «.mediawnnn» (to "mediawnnn") # «.mediawn» (to "mediawn") # «.noteswwn» (to "noteswwn") # «.notesn» (to "notesn") # «.pageswn» (to "pageswn") # «.storynn» (to "storynn") # «.photonn» (to "photonn") # «.photonnnn» (to "photonnnn") # «.photono» (to "photono") # «.photot» (to "photot") # «.photogm» (to "photogm") # «.photona» (to "photona") # «.photowa» (to "photowa") # «.photovs» (to "photovs") # «.photov» (to "photov") # «.postwn» (to "postwn") # «.videon» (to "videon") # «.php» (to "php") # «.python» (to "python") # «.telnet» (to "telnet") # «.http» (to "http") # «.explorer» (to "explorer") # «.javascript» (to "javascript") # «.edrxcache-app» (to "edrxcache-app") # «.facepy» (to "facepy") # «.get_object» (to "get_object") # «.album» (to "album") # «.stackoverflow» (to "stackoverflow") # «.rss» (to "rss") # «.trackers» (to "trackers") # «.kill-it-now» (to "kill-it-now") # «.rushkoff» (to "rushkoff") # «.lpeg-bug» (to "lpeg-bug") # «.nassim» (to "nassim") # «.download-all-posts-in-group» (to "download-all-posts-in-group") # «.user-feed» (to "user-feed") # «.onthisday» (to "onthisday") # «.apps-and-their-permissions» (to "apps-and-their-permissions") ##### # # download-video # 2023mar03 # ##### # «download-video» (to ".download-video") replace www by mbasic ##### # # The new facebook api # 2014aug08 # ##### # «facebook-api» (to ".facebook-api") # https://developers.facebook.com/docs/applinks/index-api # https://developers.facebook.com/docs/apps/changelog # https://developers.facebook.com/docs/facebook-login/ # https://developers.facebook.com/docs/facebook-login/access-tokens # https://developers.facebook.com/docs/graph-api # https://developers.facebook.com/docs/graph-api/quickstart/v2.1 # https://developers.facebook.com/docs/graph-api/reference/v2.1/url # https://developers.facebook.com/docs/graph-api/using-graph-api/v2.1 # https://developers.facebook.com/docs/opengraph/using-objects # https://developers.facebook.com/tools/explorer *** https://developers.facebook.com/docs/opengraph/using-objects https://graph.facebook.com/10150799272451063 2015oct11: https://developers.facebook.com/blog/post/2015/07/08/graph-api-v2.4/ https://developers.facebook.com/docs/graph-api/reference/ https://developers.facebook.com/docs/graph-api/reference/album https://developers.facebook.com/docs/graph-api/reference/comment https://developers.facebook.com/docs/graph-api/reference/event https://developers.facebook.com/docs/graph-api/reference/friend-list https://developers.facebook.com/docs/graph-api/reference/friendlist https://developers.facebook.com/docs/graph-api/reference/group https://developers.facebook.com/docs/graph-api/reference/groupdoc https://developers.facebook.com/docs/graph-api/reference/object/comments https://developers.facebook.com/docs/graph-api/reference/object/sharedposts https://developers.facebook.com/docs/graph-api/reference/photo https://developers.facebook.com/docs/graph-api/reference/page https://developers.facebook.com/docs/graph-api/reference/post https://developers.facebook.com/docs/graph-api/reference/profile https://developers.facebook.com/docs/graph-api/reference/status https://developers.facebook.com/docs/graph-api/reference/thread https://developers.facebook.com/docs/graph-api/reference/url https://developers.facebook.com/docs/graph-api/reference/user https://developers.facebook.com/docs/graph-api/reference/user-context https://developers.facebook.com/docs/graph-api/reference/video ##### # # Getting the id of a Facebook page (trivial) # 2015oct12 # ##### # «fb-page-id» (to ".fb-page-id") # https://developers.facebook.com/docs/graph-api/reference/page # https://www.facebook.com/CopBlock * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) loadfbcache2() -- (find-fbcache "fbcache2.lua") o = fbcurlparse("CopBlock"); pp(o) --> { name = "Cop Block", id = "281961363188" } ##### # # Getting the id for a Facebook user (solution: wget and grep) # 2015oct12 # ##### # «fb-user-id» (to ".fb-user-id") # https://developers.facebook.com/docs/graph-api/reference/user # https://www.facebook.com/thadeu.penna # http://stackoverflow.com/questions/30886468/facebook-cannot-query-users-by-their-username-solution # http://findmyfbid.com/ # http://www.tekgazet.com/how-do-i-find-my-facebook-id-number/soft/2849.html # We are writing on behalf of our domain <Findmyfacebookid.com>, which # has currently transferred to <randomtools.io> * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) loadfbcache2() -- (find-fbcache "fbcache2.lua") o = fbcurlparse("thadeu.penna"); pp(o) --> { error = { message = "(#803) Cannot query users by their username (thadeu.penna)", ...} } -- http://findmyfbid.com/ -- https://www.facebook.com/thadeu.penna o = fbcurlparse("1419700496"); pp(o) --> { name = "Thadeu Penna", id = "1419700496" } -- https://www.facebook.com/1419700496 redirects to: -- https://www.facebook.com/thadeu.penna * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) cd /tmp/ wget https://www.facebook.com/thadeu.penna wget -nc -U $MOZILLA_USER_AGENT https://www.facebook.com/thadeu.penna # (find-fline "/tmp/thadeu.penna") cat thadeu.penna | tr ' "' "\n\n" | grep photo.php cat thadeu.penna | tr ' "' "\n\n" | grep fb://profile/ # (find-fbcache "fbcache2.lua" "user-id") # (find-fbcache "fbcache2.lua" "user-id-test") ##### # # Getting the ID for a group (hard, unsolved) # 2015oct13 # ##### # «fb-group-id» (to ".fb-group-id") # https://developers.facebook.com/docs/graph-api/reference/v2.5/group # https://developers.facebook.com/docs/graph-api/reference/v2.5/post # http://stackoverflow.com/questions/8957340/how-do-i-find-my-facebook-group-id # https://www.facebook.com/help/community/question/?id=540175206014385 # http://stackoverflow.com/questions/14919731/how-to-get-all-posts-of-a-group-via-facebook-graph-api # http://stackoverflow.com/questions/30859523/get-all-facebook-group-post-using-fb-graph-api # http://stackoverflow.com/questions/22868139/how-to-get-all-content-posted-by-a-facebook-group-using-graph-api # I don't have an automated way of getting a group id yet. I am using # this (closed) group and this post in it for tests and examples: # https://www.facebook.com/groups/CronicasDoEstadoDeExcecao # https://www.facebook.com/groups/CronicasDoEstadoDeExcecao/permalink/628421860631619/ # Here are the two ways I know of for getting the group id: # # 1) Use wallflux.com/facebook_id: # http://wallflux.com/facebook_id/ -> # https://www.wallflux.com/feed/543333892473750 # # 2) Open the group page *in the browser, and when I am logged in with # my facebook user*. The saved html contains this: # fb://group/543333892473750 * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) loadfbcache2() o = fbcurlparse("543333892473750"); pp(o) --> { -- privacy = "CLOSED", -- name = "Crônicas do estado de exceção", -- id = "543333892473750" -- } -- Equivalent URLs: -- https://www.facebook.com/groups/CronicasDoEstadoDeExcecao -- https://www.facebook.com/groups/543333892473750 -- https://www.facebook.com/groups/CronicasDoEstadoDeExcecao/permalink/628421860631619/ -- https://www.facebook.com/groups/543333892473750/permalink/628421860631619/ f = function (id) o = fbcurlparse(id); pp(o) end f = function (id) o = fbcurlparse(id); pp(o) end f("206265326100419") -- ForumIndependenteProfessoresFederais f("591978827583087") -- TransparenteNaoBinaria f("120731477994736") -- Universidadenomade f("366281126840335") -- assexuadostambemamam f("1658574514355739") -- cismiterio f("162450337121400") -- contatimprovbra f("127362287317647") -- encontrossutis f("101644769912671") -- enuds f("176415242429847") -- gvinte f("1394594754107124") -- igrejaerisiana f("265790916954374") -- judithbutler -- The rest are messy notes on things that I tried to do, and failed, -- on that group. o = fbcurlparse("CronicasDoEstadoDeExcecao"); pp(o) --> "(#803) Some of the aliases you requested do not exist: CronicasDoEstadoDeExcecao" -- https://www.facebook.com/groups/CronicasDoEstadoDeExcecao/permalink/628421860631619/ -- https://www.facebook.com/photo.php?fbid=916282231772900&set=gm.621209278019544&type=3 o = fbcurlparse("916282231772900"); pp(o) --> unsupported get request o = fbcurlparse("621209278019544"); pp(o) --> no mode specified o = fbcurlparse("628421860631619"); pp(o) --> no mode specified o = fbcurlparse("543333892473750_628421860631619"); pp(o) --> err o = fbcurlparse("543333892473750/feed"); pp(o) --> err fbwget2("groups/CronicasDoEstadoDeExcecao") -- (find-fline "/tmp/fb/" "CronicasDoEstadoDeExcecao") -- (find-fline "/tmp/fb/CronicasDoEstadoDeExcecao") -- (find-fline "/tmp/fb/CronicasDoEstadoDeExcecao" "543333892473750") -- file:///tmp/fb/CronicasDoEstadoDeExcecao ##### # # An attempt to list my groups with me/groups and paging.next # 2015oct15 # ##### # «list-my-groups-1» (to ".list-my-groups-1") # https://developers.facebook.com/docs/graph-api/using-graph-api/v2.5 # https://developers.facebook.com/docs/graph-api/reference/user/ # https://developers.facebook.com/docs/graph-api/reference/user/groups/ # https://developers.facebook.com/docs/graph-api/reference/v2.5/group * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) loadfbcache2() og = { fbcurlparse("me/groups") } while true do o = og[#og] next = o.paging.next pp(o.data) if next then table.insert(og, fbcurl0parse(next)) else break end end = #og for i=1,#og do print(#og[i].data) end for i=1,#og do pp(og[i].data) end -- Why only 7 groups? -- Here are their ids: f = function (id) o = fbcurlparse(id); pp(o) end f("393636287458328") -- Ecossol e Tribo (secret) f("535050606577879") -- GA PURO 2013.2 (open) f("672137799470276") -- Espaço físico PURO (open) f("135562746646001") -- Linux Rio das Ostras (open) f("476283599102008") -- Horta do Anfiteatro (open) f("177303619016282") -- Ensaios para Véu e Uivos (open) f("233580036659959") -- Chapa 1 PURO (open) -- Here is a way to convert the group ID to a URL: -- https://www.facebook.com/groups/177303619016282/ -- The 7 groups above are only the ones I "manage". Full listing: -- https://www.facebook.com/groups/?category=membership -- Espaço físico PURO -- https://www.facebook.com/groups/672137799470276/ ##### # # Using "me?metadata=1" # 2015oct15 # ##### # «me-metadata-1» (to ".me-metadata-1") # https://developers.facebook.com/docs/graph-api/using-graph-api/v2.5 * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) loadfbcache2() o = fbcurlparse("me?metadata=1") pp(o) pp(o.metadata.connections) pp(table.concat(sorted(keys(o.metadata.connections)), "\n")) ##### # # good fbkinds: all the kinds of Facebook URLs that I know how to convert # 2015nov20 # ##### # «good-fbkinds» (to ".good-fbkinds") # (find-fbcache "fbcache2.lua" "fbkinds") # (find-fbcache "fbcache2.lua" "fbkinds-tests") # (setq last-kbd-macro (kbd "C-a # SPC (find-fbcurl SPC \" C-e \") C-a <down>")) # «eventnpn» (to ".eventnpn") # (find-fburlsofkind "eventnpn") # (find-fbcache "fbcache2.lua" "fbkinds" "eventnpn" "/events/N/permalink/N/R") # Example: https://www.facebook.com/events/1397247553878845/permalink/1412951502308450/ # Text of the event: (find-fbcurl "1397247553878845") # Text of the post: (find-fbcurl "1412951502308450") # also: (find-fbcurl "1397247553878845_1412951502308450") # «eventnn» (to ".eventnn") # (find-fburlsofkind "eventnn") # (find-fbcache "fbcache2.lua" "fbkinds" "eventnn" "/events/N/N/R") # Example: https://www.facebook.com/events/1553809231523002/1563468630557062/ # Text of the event: (find-fbcurl "1553809231523002") # Text of the post: (find-fbcurl "1563468630557062") # also: (find-fbcurl "1553809231523002_1563468630557062") # «eventn» (to ".eventn") # (find-fburlsofkind "eventn") # (find-fbcache "fbcache2.lua" "fbkinds" "eventn" "/events/N/R") # Example: https://www.facebook.com/events/1006218776073768/ # Text of the event: (find-fbcurl "1006218776073768") # «groupnpn» (to ".groupnpn") # (find-fburlsofkind "groupnpn") # (find-fbcache "fbcache2.lua" "fbkinds" "groupnpn" "/groups/N/permalink/N/R") # Example: https://www.facebook.com/groups/249360678448319/permalink/621939097857140/ # Group: (find-fbcurl "249360678448319" "Ocupa Rio - Grupo de Discussão") # Post (incomplete): (find-fbcurl "621939097857140") # also: (find-fbcurl "249360678448319_621939097857140") # «groupwpn» (to ".groupwpn") # (find-fburlsofkind "groupwpn") # (find-fbcache "fbcache2.lua" "fbkinds" "groupwpn" "/groups/W/permalink/N/R") # Example: https://www.facebook.com/groups/contatimprovbra/permalink/947586865274406/ # Group id: (find-fbcurl "162450337121400" "Contatimprov Brasil") # Text of the post: (find-fbcurl "947586865274406") # also: (find-fbcurl "162450337121400_947586865274406") # «groupnn» (to ".groupnn") # (find-fburlsofkind "groupnn") # (find-fbcache "fbcache2.lua" "fbkinds" "groupnn" "/groups/N/NR") # Example: https://www.facebook.com/groups/105487286280461/240851649410690/ # Group: (find-fbcurl "105487286280461" "Alunos do Prof. Reginaldo Demarque") # Post: (find-fbcurl "240851649410690") # also: (find-fbcurl "105487286280461_240851649410690") # «groupwn» (to ".groupwn") # (find-fburlsofkind "groupwn") # (find-fbcache "fbcache2.lua" "fbkinds" "groupwn" "/groups/W/NR") # Example: https://www.facebook.com/groups/transgente/639092892836474/ # Group: (find-fbcurl "487680691311029" "TRANSGENTE") # Post: (find-fbcurl "639092892836474") # also: (find-fbcurl "487680691311029_639092892836474") # «groupn» (to ".groupn") # (find-fburlsofkind "groupn") # (find-fbcache "fbcache2.lua" "fbkinds" "groupn" "/groups/NR") # Example: https://www.facebook.com/groups/1398505100440487/ # Group: (find-fbcurl "1398505100440487") # «groupw» (to ".groupw") # (find-fburlsofkind "groupw") # (find-fbcache "fbcache2.lua" "fbkinds" "groupw" "/groups/WR") # Example: https://www.facebook.com/groups/transgente # Group: (find-fbcurl "487680691311029" "TRANSGENTE") # «mediawannn» (to ".mediawannn") # (find-fburlsofkind "mediawannn") # (find-fbcache "fbcache2.lua" "fbkinds" "mediawannn" "/W/media_set?set=a.N.N.NR") # Example: https://www.facebook.com/paulakossatz/media_set?set=a.10202222226170686.1073741844.1040842293&type=1 # User: (find-fbcurl "1040842293") # *** I don't know how to get the album ID # «mediawnnn» (to ".mediawnnn") # (find-fburlsofkind "mediawnnn") # (find-fbcache "fbcache2.lua" "fbkinds" "mediawnnn" "/media/set/?set=W.N.N.NR") # *** I don't have urls of this kind # «mediawn» (to ".mediawn") # (find-fburlsofkind "mediawn") # (find-fbcache "fbcache2.lua" "fbkinds" "mediawn" "/media/set/?set=W.NR") # *** I don't have urls of this kind # «noteswwn» (to ".noteswwn") # (find-fburlsofkind "noteswwn") # (find-fbcache "fbcache2.lua" "fbkinds" "noteswwn" "/notes/W/W/NR") # *** I don't have urls of this kind # «notesn» (to ".notesn") # (find-fburlsofkind "notesn") # (find-fbcache "fbcache2.lua" "fbkinds" "notesn" "/notes/N/R") # https://www.facebook.com/notes/320469381448610/ # (find-fbcurl "320469381448610") # *** "(#12) notes API is deprecated for versions v2.0 and higher" # «pageswn» (to ".pageswn") # (find-fburlsofkind "pageswn") # (find-fbcache "fbcache2.lua" "fbkinds" "pageswn" "/pages/W/NR") # Example: https://www.facebook.com/pages/Viomundo/109725279084911 # Redirects to: https://www.facebook.com/Viomundo-109725279084911/ # Page: (find-fbcurl "109725279084911") # «storynn» (to ".storynn") # (find-fburlsofkind "storynn") # (find-fbcache "fbcache2.lua" "fbkinds" "storynn" "/permalink.php?story_fbid=N&id=NR") # https://www.facebook.com/permalink.php?story_fbid=10152640860900894&id=696685893&fref=nf # Deprecated: (find-fbcurl "10152640860900894") # User: (find-fbcurl "696685893") # *** "(#12) singular statuses API is deprecated for versions v2.4 and higher" # «photonn» (to ".photonn") # (find-fburlsofkind "photonn") # (find-fbcache "fbcache2.lua" "fbkinds" "photonn" "/photo.php?fbid=N&set=t.NR") # https://www.facebook.com/photo.php?fbid=10151256245188625&set=t.100002233344951 # (find-fbcurl "10151256245188625") # User: (find-fbcurl "100002233344951") # *** I don't know how to retrieve the photo # «photonnnn» (to ".photonnnn") # (find-fburlsofkind "photonnnn") # (find-fbcache "fbcache2.lua" "fbkinds" "photonnnn" "/photo.php?fbid=N&set=a.N.N.NR") # Example: https://www.facebook.com/photo.php?fbid=10201336092313990&set=a.1569106477271.73917.1523735650&type=1&permPage=1 # User: (find-fbcurl "1523735650") # Photo: (find-fbcurl "10201336092313990") # More: (find-fbcurl "10201336092313990/comments") # «photono» (to ".photono") # (find-fburlsofkind "photono") # (find-fbcache "fbcache2.lua" "fbkinds" "photono" "/photo.php?fbid=N&set=OR") # *** I don't have urls of this kind # «photot» (to ".photot") # (find-fburlsofkind "photot") # (find-fbcache "fbcache2.lua" "fbkinds" "photot" "/N/photos/t.N/N/R") # Example: https://www.facebook.com/102015223300293/photos/t.100000842030889/317158085119338/ # Community: (find-fbcurl "102015223300293") # With (user): (find-fbcurl "100000842030889") # Photo: (find-fbcurl "317158085119338") # (find-fbcurl "317158085119338/likes") # «photogm» (to ".photogm") # (find-fburlsofkind "photogm") # (find-fbcache "fbcache2.lua" "fbkinds" "photogm" "/N/photos/gm.N/N/R") # Example: https://www.facebook.com/1442002182737691/photos/gm.1466213243643988/1471817019756207/?type=1 # Community: (find-fbcurl "1442002182737691") # Event: (find-fbcurl "1466213243643988") # Photo: (find-fbcurl "1471817019756207") # «photona» (to ".photona") # (find-fburlsofkind "photona") # (find-fbcache "fbcache2.lua" "fbkinds" "photona" "/N/photos/a.N.N.N/N/R") # Example: https://www.facebook.com/21038112178/photos/a.441569537178.245171.21038112178/10152790891782179/?type=1&fref=nf # Place (college): (find-fbcurl "21038112178") # Album: (find-fbcurl "441569537178") # Photo: (find-fbcurl "10152790891782179") # «photowa» (to ".photowa") # (find-fburlsofkind "photowa") # (find-fbcache "fbcache2.lua" "fbkinds" "photowa" "/W/photos/a.N.N.N/N/R") # Example: https://www.facebook.com/AKPress/photos/a.215376115248.261941.205965845248/10154741098510249/?type=1 # Album: (find-fbcurl "215376115248") # Page (AK Press): (find-fbcurl "205965845248") # Photo: (find-fbcurl "10154741098510249") # «photovs» (to ".photovs") # (find-fburlsofkind "photovs") # (find-fbcache "fbcache2.lua" "fbkinds" "photovs" "/photo.php?v=N&set=OR") # *** I don't have urls of this kind # «photov» (to ".photov") # (find-fburlsofkind "photov") # (find-fbcache "fbcache2.lua" "fbkinds" "photov" "/photo.php?v=NR") # Example: https://www.facebook.com/photo.php?v=10152413352959175 # Video: (find-fbcurl "10152413352959175") # «postwn» (to ".postwn") # (find-fburlsofkind "postwn") # (find-fbcache "fbcache2.lua" "fbkinds" "postwn" "/W/posts/NR") # Example: https://www.facebook.com/CopBlock/posts/10152706679833189 # CopBlock id: (find-fbcurl "281961363188") # Post: (find-fbcurl "281961363188_10152706679833189") # «videon» (to ".videon") # (find-fburlsofkind "videon") # (find-fbcache "fbcache2.lua" "fbkinds" "videon" "/video.php?v=NR") # Example: https://www.facebook.com/video.php?v=823660551012161 # Video: (find-fbcurl "823660551012161") # (find-fbcache "fbcache2.lua" "fbkinds") * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) loadfbcache2() for fbk,url in allfbksk("eventnpn") do print(url) end allfbks = function () return fbkinds_in_file("~/fbcache/all-fb-urls.lst") end for fbk,url in allfbks() do if fbk.kind == "eventnpn" then print(url) end end for fbk in allfbks() do if fbk.kind:match("^group") then print(fbk[1]) end end for fbk,url in allfbks() do if fbk.kind == "eventnpn" then PP(fbk) end end for fbk,url in allfbks() do if fbk.kind == "eventnpn" then print(url) end end fbcurlparse * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "fbcache2.lua" ##### # # The Facebook SDKs for PHP and Python # 2014aug18 / 2014aug25 # ##### # «php» (to ".php") # «python» (to ".python") # Moved to: (find-es "php" "facebook-sdk") # Moved to: (find-es "python" "facebook-sdk") ##### # # The HTTP API # 2014aug16 # ##### # «telnet» (to ".telnet") # «http» (to ".http") # https://developers.facebook.com/docs/graph-api/quickstart/v2.2 # http://graph.facebook.com/facebook/picture?redirect=false * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) telnet graph.facebook.com 80 GET /facebook/picture?redirect=false HTTP/1.1 GET graph.facebook.com/facebook/picture?redirect=false * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) telnet graph.facebook.com 80 GET /v2.1/me?fields=id,name HTTP/1.1 token = "CAACEdEose0cBACC52cYZACEBhaZB5ADoYkdoUO0O4fPGJkUfdF1CePpMaZCjTlx7Np7PWpCPbjkEBQeNVLG17N6j85spMPAKbsInxb9wa5nKIVcjeoE45vWKxyU7xvVDKAWsJKegwh6wPUw9z3tHTa5Co8B9BZBILg7kG0Dp2ASmFtFj5ylsJHFzbp5O8hpQDxuMHYRRSTvl93T5zXZCmpZA4tqZBVKpswZD" &access_token=blau or ?access_token=blau ##### # # The Graph API explorer # 2014aug16 # ##### # «explorer» (to ".explorer") # https://developers.facebook.com/tools/explorer *** /v2.1/ me?fields=id,name ?id=https://www.facebook.com/vera.rodrigues.944023/posts/605622119554057 https://graph.facebook.com/754664537913868 ##### # # The Facebook SDK for JavaScript # 2014aug16 # ##### # «javascript» (to ".javascript") # https://developers.facebook.com/docs/javascript # https://developers.facebook.com/docs/javascript/quickstart # https://developers.facebook.com/docs/javascript/reference # https://developers.facebook.com/docs/reference/javascript/ # https://developers.facebook.com/tools/javascript-console/ # https://developers.facebook.com/docs/reference/plugins/like # http://connect.facebook.net/en_US/sdk/debug.js ##### # # The EdrxCache app # 2014aug21 # ##### # «edrxcache-app» (to ".edrxcache-app") # https://developers.facebook.com/apps/576144309174951/dashboard/ # App Name EdrxCache # App Id 576144309174951 # App Secret ??? # (find-fline "~/ORG/index.org" "EdrxCache") # https://developers.facebook.com/apps/ # http://stackoverflow.com/questions/6173303/is-it-possible-to-access-users-wall-info-without-passing-his-her-access-token # http://stackoverflow.com/questions/1059640/facebook-offline-access-step-by-step?lq=1 # (find-fbcmdfile "fbcmd.php" "offline_access") http://wishtemple.meteor.com/ ##### # # facepy # 2014sep06 # ##### # «facepy» (to ".facepy") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) rm -Rfv ~/usrc/facepy/ cd ~/usrc git clone --depth 1 https://github.com/jgorset/facepy cd ~/usrc/facepy/ git pull # (code-c-d "facepy" "~/usrc/facepy/") # (find-facepyfile "") # (find-gitk "~/usrc/facepy/") sudo pip install -v facepy * (eepitch-python) * (eepitch-kill) * (eepitch-python) # (find-facepyfile "") # (find-facepyfile "README.rst") from facepy import GraphAPI print token graph = GraphAPI(token) o = graph.get('me/posts') type(o) def pk (o): for k in o.iterkeys(): print k pk(o) pk(o['data'][1]) pp(o['data'][1]) pp(o['paging']) def fb_get_from_id (id): return graph.get("/v2.1/%s" % (id)) pp(fb_get_from_id("10205246891281520")) file:///usr/share/doc/python2.7/html/library/stdtypes.html#index-31 (dict) https://www.facebook.com/eduardo.ochs/posts/10205246891281520 pprint.pformat(o) # (find-facepyfile "facepy/graph_api.py" "def get(") # (find-faceutilsfile "quick.esc") * (eepitch-python) * (eepitch-kill) * (eepitch-python) import facebook graph = facebook.GraphAPI(token) profile = graph.get_object("me") # (setq line-move-visual nil) print(profile) o = graph.get_object("107972689230862") o[:1024] type(o) import pprint def pp(o): pprint.pprint(o) def po(o): pp(graph.get_object(o)) def ggo(o): return graph.get_object(o) po("me") po("me/friendlists") po("117449854938676") # Needles side tattoo po("10204211133108213") # Me po("10201720471403227") # Fluminense Federal University * (eepitch-python) * (eepitch-kill) * (eepitch-python) # https://developers.facebook.com/docs/graph-api/reference/v2.1/user # https://developers.facebook.com/docs/graph-api/reference/user/albums/ po("me/albums") po("10201617919679498") # Album: casa o = ggo("me/albums") pp(o["data"]) pp(type(o["data"])) pp(o["data"][1]) pp(o["data"][1]["description"]) pp(o["data"][1]["name"]) print(o["data"][1]["link"]) pp(o["data"][0]["name"]) pp(o["data"][0]["description"]) for oo in o["data"]: print # pp(oo) pp(oo["name"]) print(oo["id"]) print(oo["link"]) # pp(oo["description"]) pp(oo["name"]) ggo("me/albums")["paging"] pp(ggo("me/albums")["data"]) pp(ggo("me/albums")["data"][1]) pp(ggo("me/albums")["data"][1]["description"]) O = 92 po("816409655078710") pp(ggo("816409655078710")["name"]) # https://developers.facebook.com/docs/graph-api/reference/user/groups/ po("me/groups") po("me/books") po("me/status") # https://developers.facebook.com/docs/graph-api/reference/v2.1/post # https://developers.facebook.com/docs/graph-api/reference/v2.1 po("feed") po("487608268040099") po("102013360923139910") pp(o) ggo("me") o = ggo("me") pp(o) o["username"] ggo("me")["username"] pprint.pprint(o) post = graph.get_object("487608268040099") post = graph.get_object("/487608268040099") post = graph.get_object("v2.1/487608268040099") post = graph.get_object("/v2.1/487608268040099") post = graph.get_object("/v2.1/102013360923139910") post['namee'] print post['message'].encode('utf-8') post['comments']['data'][0]['from'] post['comments']['data'][0]['message'] post['comments']['data'][1] quit() python get_txt "token access " "https://www.facebook.com/iury.gomes.figueiredo/posts/352826564875907" ##### # # get_object (Iury's way of dealing with fb urls) # 2014sep06 # ##### # «get_object» (to ".get_object") * (eepitch-python) * (eepitch-kill) * (eepitch-python) from faceutils import * graph = facebook.GraphAPI(token) url = "https://www.facebook.com/vera.rodrigues.944023/posts/605622119554057" url = "https://www.facebook.com/ortelladopablo/posts/754607624604813" url = "https://www.facebook.com/jean.wyllys/photos/a.201340996580582.48122.163566147024734/715780751803268/" o = get_object(graph, url) pp(o) po("605622119554057") # Unsupported get request po("754607624604813") # Unsupported get request po("201340996580582") # album (Jean Wyllys) po("163566147024734") # https://www.facebook.com/jean.wyllys po("715780751803268") # the photo itself url = "https://www.facebook.com/jean.wyllys" o = graph.get_object(url) o['id'] # u'163566147024734' url = "https://www.facebook.com/vera.rodrigues.944023/posts/632792706836998" o = graph.get_object(url) o['id'] # u'566337536805038' po(o["id"]) url = "https://www.facebook.com/vera.rodrigues.944023/posts/632792706836998" o = graph.get_object(url) o['id'] # u'566337536805038' po(o["id"]) url = "http://angg.twu.net/linkdasruas.html" o = graph.get_object(url) o['id'] po(o["id"]) # 105 shares # (find-faceutilsfile "") # (find-faceutilsfile "faceutils.py") # (find-faceutilsfile "faceutils.py" "def get_object(") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) cd ~/usrc/faceutils-code/ python get_txt -t foo -u https://www.facebook.com/FIPRJ/posts/487608268040090 python get_txt -u https://www.facebook.com/617121238319221/photos/a.617156974982314.1073741828.617121238319221/791252907572719/ ##### # # Albums # 2014oct25 # ##### # «album» (to ".album") # https://developers.facebook.com/docs/graph-api/reference/v2.1/album # (find-angg "fbcache/p.py") # (find-fline "~/fbcache/urls-by-kind.txt") # (find-fline "~/fbcache/urls-by-kind.txt" "/alexsander.lepletier/") # https://www.facebook.com/alexsander.lepletier/media_set?set=a.10151933894649198.1073741851.531549197&type=3 * (eepitch-python) * (eepitch-kill) * (eepitch-python) # (find-angg ".pythonrc.py") # https://www.facebook.com/events/1397247553878845/permalink/1412951502308450/ pfi("1397247553878845") pfi("1412951502308450") pfi("") https://www.facebook.com/profile.php?id= # http://stackoverflow.com/questions/26677571/retrieving-photo-likes-through-facebooks-graph-api # https://graph.facebook.com/328548953909061/albums?fields=count,id,name,cover_photo,type,photos # http://stackoverflow.com/questions/25299116/why-does-facebook-graph-api-return-error-on-some-photos?rq=1 # http://stackoverflow.com/questions/5926790/why-do-i-get-this-error-when-i-try-to-access-a-certain-type-of-object-via-the-fa?rq=1 # https://developers.facebook.com/bugs/1569724479914127/ # https://developers.facebook.com/bugs/1558407907724578/ ##### # # StackOverflow # 2014oct31 # ##### # «stackoverflow» (to ".stackoverflow") # http://stackoverflow.com/questions/26685170/fetching-facebook-api-objects-from-their-public-url # http://stackoverflow.com/questions/tagged/facebook-graph-api # http://stackoverflow.com/questions/tagged/facebook-graph-api?sort=newest&pagesize=50 ##### # # Facebook RSS aggregator # 2014dec07 # ##### # «rss» (to ".rss") # http://www.google.com/search?q=Facebook+RSS+aggregator # http://www.wprssaggregator.com/docs/facebook-page-feeds/ # http://www.google.com/search?q=php+facebook+rss # https://gist.github.com/banago/3864515 fb-parse-feed-curl.php # http://stackoverflow.com/questions/9709016/facebook-killed-public-rss-feeds-how-to-obtain-a-facebook-page-rss-with-the-new *** # http://ahrengot.com/tutorials/facebook-rss-feed/ *** # http://fbrss.com/ # http://stackoverflow.com/questions/9714020/how-to-pull-in-facebook-page-posts-as-blog-posts-to-wordpress?lq=1 # https://mail.google.com/mail/ca/u/0/#inbox/14a1cc3fc8ed518d eh soh colocar o id da pagina no final deste link http://www.facebook.com/feeds/page.php?format=atom10&id= vc pode descobrir o id das paginas do FB usando o graph 2) algum link pra onde voc½ aprender a usar essas coisas, tem varios links explicando , este eh um deles: # http://www.green-umbrella.biz/2013/11/add-facebook-page-rss-feed-reader/ # First attempt (failed): # (find-fbcachefile "all-fb-urls.lst") # (find-fbcache "huge.txt" "630751537055561") # http://www.facebook.com/feeds/page.php?format=atom10&id=630751537055561 # # Second attempt, with a user page (failed): # http://findmyfacebookid.com/ # https://www.facebook.com/eduardo.sterzi # http://www.facebook.com/feeds/page.php?format=atom10&id=100003552524446 # # Third attempt (green umbrella): # http://www.facebook.com/feeds/page.php?format=atom10&id=168990361234 ##### # # trackers # 2015feb28 # ##### # «trackers» (to ".trackers") # http://www.businessinsider.com/this-is-how-facebook-is-tracking-your-internet-activity-2012-9?op=1 # http://iuri.tem.blog.br/posts/feissebuqui/ (Seção: Hipocrisia) Eu sei o que tu está fazendo. Está lendo isto enquanto no teu navegador, em alguma aba à esquerda, consta www.facebook.com. Por consequência disto, o javascript daquele site já cadastrou iuri.tem.blog.br/feissebuqui como parte dos teus interesses, porque o site fica monitorando tudo o que tu acessa. Não tem nenhuma forma de apagar isto, está registrado para sempre. Tu acha que tu vai pro céu por causa disto? ##### # # Facebook: kill it now # 2015mar04 # ##### # «kill-it-now» (to ".kill-it-now") http://thread.gmane.org/gmane.culture.media.activism.estudiolivre/15139/focus=18865 edrx http://thread.gmane.org/gmane.culture.media.activism.estudiolivre/15139/focus=18865 iuri http://thread.gmane.org/gmane.culture.media.activism.estudiolivre/15139/focus=18916 arlekino https://mail.google.com/mail/ca/u/0/#search/iuri/14a34d5d4c86f5fd http://www1.folha.uol.com.br/colunas/luliradfahrer/2015/01/1577199-o-dominio-do-facebookistao.shtml https://pt-br.facebook.com/pages/Luli-Radfahrer/346866968791847 Gente, tem funcionado pra vocês isso de explicar pras pessoas como o Facebook é podre e dizer pra elas migrarem pra outras redes? Eu tentei dar um jeito da gente poder usar o Facebook cada vez menos, fazendo com o que conteúdo do FB que a gente e os nossos amigos achamos importante ficasse acessível sem a gente precisar logar no FB... e essa minha abordagem também não funcionou =(... Aliás, quando eu quero postar em 2 minutos algum link pros meus amigos não-techies verem eu ainda tou usando o FB pra isso. Aliás 2: as outras redes sociais também idiotizam a gente e fazem a gente achar depois que acorda do transe que perdeu horas? Me contem, pfavor, porque eu ainda não tentei usar as outras... aliás tenho usado computador cada vez menos. Bjs, E. http://iuri.tem.blog.br/posts/feissebuqui/ *** https://gnu.io/social https://gitorious.org/lorea https://social.hi.ato.br/ http://blog.gmane.org/gmane.culture.media.activism.estudiolivre http://news.gmane.org/gmane.culture.media.activism.estudiolivre http://article.gmane.org/gmane.culture.media.activism.estudiolivre http://suicidemachine.org/#faq https://en.wikipedia.org/wiki/Echo_chamber_%28media%29 http://iuri.tem.blog.br/posts/pos-masculinismo/#more ##### # # Douglas Rushkoff # 2015apr03 # ##### # «rushkoff» (to ".rushkoff") # http://www.youtube.com/watch?v=ib6H8jg-f2w#t=6m30s Douglas Rushkoff: Present Shock: Everything is Now # http://www.hierophant.com.br/arcano/posts/view/X_Parser/143 "Program or be Programmed", um livro de Douglas Rushkoff # (find-fline "~/books/" "rushkoff") # https://lists.riseup.net/www/arc/metareciclagem/2015-04/msg00027.html # (find-youtubedl-links "/sda5/videos/" "Douglas_Rushkoff_-_Present_Shock_-_Everything_is_Now" "ib6H8jg-f2w" ".mp4" "rushkoff") # (code-video "rushkoffvideo" "/sda5/videos/Douglas_Rushkoff_-_Present_Shock_-_Everything_is_Now-ib6H8jg-f2w.mp4") # (code-audio "rushkoffvideo" "/sda5/videos/Douglas_Rushkoff_-_Present_Shock_-_Everything_is_Now-ib6H8jg-f2w.mp4") # (find-rushkoffvideo) # (find-rushkoffvideo "0:00") # (find-rushkoffvideo t) # (eev-avadj-mode 1) 6:30 ...the way you conversed in an online bulletin board was you would turn on your computer, you would log, you would plug on this thing called a modem ... old-school ... you had a modem, you would dial into a server 6:42 you would download a cconversation, you would disconnect from the net, then you'd read the conversation in our own time. 6:48 And (there could be someone ..., right) so you would take your time before you respond, 6:56 you'd take an hour, two hours, or all night, and you would craft this perfect paragraph, because you would be participating with GREAT MINDS 7:04 and you wanted to put your best foot forward. Then you would log back in and you would upload your paragraph or two of response, perfectly edited, zingers in there, and then you would wait a day or two to see what people had to say about it. It was like chess by mail. 7:20 An everybody sounded really smart on there, because they did all that time-shifting and time compression, because they used the net in an asynchronous, stepped way that the net actually works, it's an asynchronous technology, it lives outside time, e-mail sits and waits for you, it's not like a phone that you have to answer in the moment or that now we have voice-mail, 7:44 so the internet was a place where people sounded smarter than they do in real life, imagine that... and that's why people like me looked into the net and thought "wow, this is going to enhance humanity, this is going to augment what we can do, I can be smarter there than in real life", because of my time compression. I can interact with smarter brains than I get to in real life, because I can connect to the other nodes 8:13 But what would we do, when the technology story moved from a culture of human enhancements, from the kind of psychedelic, magical, Mondo 2000 world, to the much more market-driven pages of Wired magazine? All the suddent the internet was no longer a place that we were going to expand what it meant to be human, it was a place where we were going to save the NASDAQ stock exchange, which had been suffering since the (?)-tech crash in 1987. 8:44 So now these devices, this technology, these applications, had to somehow find a way to mine us for value - to extract value. We couldn't go to the countries of little brown people and enslave them anymore, that colonization thing it stopped, and the expansion of the economy seem doomed... 9:08 But we found a new territory in human attention - in human time. So we started to commodify, to mine human time for its value, and the word that started to describe net development were things like stickiness, and eyeball hours, and Wired magazine announced that we were 9:23 living in an attention economy, me might have infinite real estate online, but there are only so many eyeball hours in a day. 9:32 So the object of the game was to extract those eyeball-hours from people in terms of their attention. 9:38 So we end up taking an asynchronous device like the internet, and turning it into an always-on device like an iPhone, we strapped the interned to our bodies, and have the internet interrupt us all the time everytime someone does a facebook update 9:52 or tweet us ... e-mail ... or once our attention ... an app wants to tell us that something new is going on, and we live in a state of perpetual emergency interruption, that the only people who endured that before this was 911 operators, or air traffic controllers - and they did it for only four hours at a time, and they got drugs for it. 10:18 And along with this... # https://polytropy.wordpress.com/2015/03/17/the-facebook-algorithm/#more-1483 A tally of Facebook "likes" then is not a vote, any more than a public opinion poll is a vote. The poll _corrupts_ the vote. It causes the candidate to try to say what people want to hear, not what the candidate believes in. Candidates may always have tried to say what voters want to hear, as we can understand from reading Plato; but the public opinion poll makes things worse, if only by making it easier for candidates to _care_ about what people want to hear. One ought rather to be oneself, and let others take that as they will. ##### # # lpeg bug - workarounds # 2015oct09 # ##### # «lpeg-bug» (to ".lpeg-bug") # (find-blogme3grep "grep --color -nH -e huge.txt anggmake.lua") # (find-blogme3 "anggmake.lua" "anggtranslate") # (find-blogme3 "anggmake.lua" "anggdonttranslate") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) cd ~/fbcache/ cp huge.txt-orig huge.txt touch huge.txt cp -v ~/TH/L/fbcache/huge.txt.html ~/fbcache/ laf ~/fbcache/ makeL # (find-twusfile "fbcache/") # (find-twupfile "fbcache/") ##### # # Stanislav Yurin's index of Nassim Nicholas Taleb's posts # 2015oct09 # ##### # «nassim» (to ".nassim") # http://nassim.link/ # https://www.facebook.com/groups/CronicasDoEstadoDeExcecao/permalink/626950160778789/ # https://mail.google.com/mail/ca/u/0/#sent/1504b86b2d404f7c # Subj: Tecnhical question about nassim.link (or maybe about the Graph API) Hi Nassim, after the protests of 2013 in Brazil - which had scenes like these, <http://www.youtube.com/watch?v=Pap4N7G2rPM> - I started working on tools for keeping archives of the things that people were posting on Facebook... I was able to build an archive of videos - http://angg.twu.net/linkdasruas.html and also something similar for textual posts on Facebook... my prototype downloaded local copies in JSON of posts from a list of URLs like this http://angg.twu.net/fbcache/all-fb-urls.lst.html using the Graph API, and then produces an output like this (its a prototype, remember!): http://angg.twu.net/fbcache/huge.txt.html But I stumbled on a problem that was incredibly frustrating. For some kinds of Facebook URLs I can extract an ID from them and use the Graph API to retrieve its contents, but for some other kinds of URLs no sequence of digits in them works as an ID... there are _some_ details here: http://angg.twu.net/fbcache/fbcache.lua.html#fbkinds How are you retrieving the contents that are indexed in <http://nassim.link/>? Are you using the Graph API, the RSS feed, or what? Thanks in advance! =) Cheers, Eduardo Ochs [email protected] http://angg.twu.net/ ##### # # Download all posts from a group # 2016jan24 # ##### # «download-all-posts-in-group» (to ".download-all-posts-in-group") # https://www.facebook.com/help/community/question/?id=10201290977937615 # https://www.facebook.com/help/community/question/?id=560590287326922 # https://apps.facebook.com/group_feed_printer/ # http://stackoverflow.com/questions/21424935/facebook-graph-api-download-all-posts-for-group-i-have-admin-rights-to ##### # # Accessing a user's feed # 2016jan25 # ##### # «user-feed» (to ".user-feed") # (find-google-links "how to download my facebook feed using the graph api") # http://www.google.com/search?q=how+to+download+my+facebook+feed+using+the+graph+api # http://www.phpgang.com/how-to-get-your-facebook-feed-with-graph-api-using-php_614.html # // change "me" to your friend Facebook id # $graph_url = "https://graph.facebook.com/me/feed?access_token=".$params['access_token']; * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) chdir "~/fbcache/" dofile "fbmemget.lua" -- (find-fbcache "fbmemget.lua") f = function (qry) query = qry; pp(fbmemgetn(query, 1)) end query = "me/feed" -- works n = 2 A = fbmemgetn(query, n) B = fbglue(fbmemgetn(query, n)) pp(A) pp(B) -- (find-fbcache "nameids") f "me" -- works: gives my name and id f "me/feed" -- works: gives my feed f "eduardo.ochs" -- fails: (#803) Cannot query users by their username f "eduardo.ochs/feed" -- fails: (#803) Cannot query users by their username f "1523735650" -- works: gives my name and id, same as query = "me" f "1523735650/feed" -- fails: data = { "[]" } f "caiohora/feed" -- fails: (#803) Cannot query users by their username f "100000984263854/feed" -- fails: data = { "[]" } f "100000984263854/home" -- fails: You can only access the "home" connection for the current user. f "280853248721200" -- works: name = "Mariachi" f "coletivomariachi" -- works: name = "Mariachi" f "280853248721200/feed" -- works: feed f "coletivomariachi/feed" -- works: feed f "10204211133108213_10208690106359745" f "10204211133108213_10208690106359745?fields=link" -- https://developers.facebook.com/docs/graph-api/reference/v2.5/post ##### # # On This Day # 2018fev12 # ##### # «onthisday» (to ".onthisday") # https://www.facebook.com/onthisday/?source=promotion_feed_story&story_id=10212323087742009 ##### # # apps and websites with FB permissions # 2018abr18 # ##### # «apps-and-their-permissions» (to ".apps-and-their-permissions") # https://www.facebook.com/settings?tab=applications&apps_only # https://www.facebook.com/settings?tab=applications§ion=inactive https://www.facebook.com/LeocadiaGregoria/posts/1115329012213776 Mô Ribeiro comentou, na página dela, que não estava conseguindo encontrar a função procurar publicações, no facebook, por datas, antigamente posicionada no alto do lado esquerdo da tela, no campo "pesquisa no facebook". várias pessoas, na publicação, disseram que também não conseguiam mais fazer buscas por datas. #ficaadica : na atual versão do fb, essa função agora tá disponível logo abaixo da caixa de publicação (o tal "no que você está pensando"). basta você clicar em "filtro" e fazer a busca por datas (mês, dia, ano), tanto em suas próprias publicações quanto de fulanos, beltranos e sicranos. por exemplo, se eu quero buscar uma publicação na página da beltrana Lumaria Chan, de 07 junho de 2020, nem preciso "bater na porta dela", posso fazer isso desde meu próprio perfil, usando esse sistema de filtros. ficou até melhor que antes. https://www.facebook.com/help/community/question/?id=10208939290706073 To find your join date: 1. Go to your "intro section" 2. Click the "pencil icon" 3. Scroll to the bottom of the checklist 4. Select "join date" Your join date should now appear in your intro section. https://www.businessinsider.com/how-to-find-your-facebook-id-number-and-sign-up-date-2014-2 http://www.techtudo.com.br/dicas-e-tutoriais/noticia/2014/01/como-ver-todas-atividades-e-posts-antigos-do-seu-perfil-no-facebook.html https://logicmag.io/06-the-antisocial-network/ Facebook claims to bring people closer together. In fact, it's helping derail and destroy some of the few remaining places that actually do. https://news.ycombinator.com/item?id=34367036 I deleted all my social media 3 yrs ago and I hardcore regret it everyday (reddit.com) https://news.ycombinator.com/item?id=35477160 Reverse Engineering the Facebook Messenger API (intuitiveexplanations.com) https://m.facebook.com/friends/center/requests/outgoing H4o5 # Local Variables: # coding: utf-8-unix # End: