Start with fbchatfiles-ETL.sh DIRECTORY where DIRECTORY is the location where you want
to save files sent you as attachments in Facebook Messenger.
It stores some state in ~/.local/share/fbchatfiles directory.
It steals cookies from Vivaldi browser to login to your Messenger account,
if first login attempt fails.
Then it runs fbchatfiles.js to save references to the the attachments in each
conversation thread.
At last fbchatfiles.sh downloads the files to the DIRECTORY you have given.
You may run fbchatfiles-ETL.sh twice. if the first part (fbchatfiles.js) runs too long,
then the downloader part (fbchatfiles.sh) might get 403 errors due to the expired access
period. Running the whole ETL again likely will run faster so you less likely will get
access denied errors more.
A file .fbchatfiles indicates that this directory is managed by fbchatfiles.
In download directory dot-directories are created for each conversation, conversation-wise files are saved in them. Symlinks are also made to the "dot id number" directories whiches name indicates the conversation's friendly name.
example:
John Doe (164566767522792) -> .164566767522792
John Doe, Mary Smith, Jack Doe (162862575657673) -> .162862575657673
named thread heeeyy (191458793565494) -> .191458793565494
In each conversation directory there is a file called .files which contains the
attachment IDs and the file names under which name they were saved.
You can delete downloaded files and they won't be downloaded again.
You can remove the line from .files corresponding to the deleted file so fbchatfiles
will try to download it again (since it does not know about it).
Shared URLs are saved in .url files with the page's title in filename and the URL in the content.
Linked video pages are passed to youtube-dl to download.