How to add, extract, modify "tiddlers" from command line? To do IPFS media transfer

The FileUploads plugin uses a filter to determine what to tiddlers to upload, so is completely flexible in that regard.

Great !! Your help unlock my first wish :wink:
“Adding tiddler to an online IPFS Tiddlywiki”

My second wish then is “Copy internal/external media binaries from a tiddlywiki to IPFS to reduce index.html size and optimize my hosting”

Do you have an example of a command extracting some tiddlers.json from a specific field or tag values ?

After that, If I want to replace tiddler:

  • Do I need to remove old one, then add the new tiddler.
  • Or “update specific tiddler” command exists?

@saqimtiaz, maybe after I can understand how to use your method, before, I must learn how to manipulate tiddlers from command line

Continuing exploring commands
https://tiddlywiki.com/#FetchCommand
https://tiddlywiki.com/#SaveCommand

And found
http://tobibeer.github.io/tw/filters/#Filter%20Examples

Extending the command
tiddlywiki --verbose --load index.html --import ~/Bureau/Journal/youtube/Original_Atari_PONG-1972-arcade_machine_gameplay_video.dragdrop.json json
with

Result in the fact newindex.html and index.html are the same !?

I don’t know. Try this.

tiddlywiki --verbose --load index.html --load "~/Bureau/Journal/youtube/Original_Atari_PONG-1972-arcade_machine_gameplay_video.dragdrop.json" --output . --render "$:/core/save/all" "newindex.html" "text/plain"

How did you verify this? Are the files the same size? If the added tiddler does not contain a created field, it will not show up in the Recent tab, but it will show up in the All tab.

You’re right. My mistake was to put a trailing / in --output /tmp/ as file path

tiddlywiki  --verbose --load index.html \
            --import new_tiddler.json "application/json" \
            --output /tmp --render "$:/core/save/all" "newindex.html" "text/plain"

This is the working “import tiddler” command line.
I was missing "application/json" for import

PS: I get json template from “export tiddler as json” from GUI

About SaveCommand I am a bit lost with filters

I can save tiddler with certain tittle.

But some filtering expression examples are missing to me

Like

  • save to json format instead of .tid ?
  • knowing TW last modification date ?
  • “select & save tiddler” containing a tag, a field, with certain values ?
  • save tiddlers created after a certain date ?

Some examples would enhance my learning curve

I’m thinking you may actually want the render command. There is an example for saving to JSON, though I feel the example must be wrong (maybe a leftover from a prior command), because the elements are in the wrong order.

@Mark_S thanks.

Great, render is the command I was needing.

I could make a script

  • searching for tiddlers “tag=tube”,
  • find URL in “text”,
  • download it with yt-dlp,
  • add mp4 video file to IPFS,
  • create new tiddler removing first one
  • publish new version of TW to IPNS

I am using TW associated with a crypto key related with IPFS/IPNS key. So anyone can store its tiddlywiki in the “interplanetary file system” only through a “salt/pepper” NaCl key generator converted to ED25519 format

Btw, I still wonder how I could know TW last modification date ?

Unfortunately, there aren’t many built-in functions for handling dates. You could filter, say, all tiddlers modified in the last 3 days:

[days[-3]]

Or, if you make up your date like yyyymmdd you can compare it:

[tag[HelloThere]]:filter[get[modified]compare:date:gt[20200101]]
1 Like

Thanks again for your precious help !

I have a question about “encrypted tiddlers”, do you know if there is a way to manipulate them form command line?

Consider a created date it is stored in the form YYYYMMDDhhmmssxxx or the date format YYYY0MM0DD0hh0mm0ss0xxxsimple date comparisons is easy because any date before is a smaller number and any date after a larger number.

  • Just construct a date number for and compare it greater than or less than eg
    • [<now YYYY0MM0DD0hh0mm0ss0xxx>...
    • 20220902120000000 midday on 20220902
1 Like

@TW_Tones thanks for your good advice about date comparison

I found https://github.com/masonicGIT/sjcl-cli that is the same way tiddlers are encrypted… “Stanford JavaScript Crypto Library”

But import command is missing “crypto” encoding type…
Is the “encrypt widget” a way? Do you know what is PasswordVault ?

If you are trying to import from an encrypted wiki, try preceding the --import command with --password <mypassword>, replacing “” with your password.

See https://tiddlywiki.com/#PasswordCommand

This way, the encrypted tiddler is imported in clear or encrypted version?

I would like to import a clear tiddler, but encrypt it before or during --import for protecting data from being seen by anyone. Only TW owner knows the pass code and can decrypt it …

To import “outside data” by forging json, I think i need to encrypt “text” with sjcl-cli, before using --import new_tiddler.json "application/json"

good command to see if it extract…

now the “cyphering” pipe is broken, will need to bypass interactive CLI to have automation

sjcl encrypt coucou
Enter data: coucou
Enter password: ****
Confirm password: ****
Encrypted data:
		 {"iv":"00OPCx2cSDn7PZZF+gtEOQ==","v":1,"iter":10000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"buemB9E09Io=","ct":"NCbnX7tzTYIQh42nuEg="}

with sudo apt install expect

and understand what to copy in which json tiddler field

Hi @papiche how are you getting on with this? Let us know if you have more questions.

Hi,

Bypassing sjcl encrypt CLI prompt was abandoned.
And symmetric ciphering is not the best to share a secret :wink:
So.
We are going to use “public key” encryption (+ priv key signature) in tiddlers hidden fields.

We also work on TW templates too.
Tiddlywiki and the IPFS “Video Wall” Experiment

We hope to be soon ready to welcome users in our beta testing groug…
‘PM’ if you wish to participate?

Good to hear, thanks @papiche

1 Like