如何批量导出文件为 .tid 或者 .json?
已解决
讨论
-
比如下方按钮的目的是批量导出 20 个后缀为 .tid 的文件:
\define exportButton(exportFilter) \whitespace trim <$button dragFilter=<<__exportFilter__>> class="tc-btn-invisible"> <$list filter="[subfilter<__exportFilter__>]" variable="listItem"> <$action-sendmessage $message="tm-download-file" $param="$:/core/templates/exporters/TidFile" exportFilter={{{ [<listItem>format:titlelist[]] }}} filename={{{ [<listItem>addsuffix[.tid]] }}} /> </$list> {{$:/core/images/export-button}} <span class="tc-btn-text"> <$text text="Batch export tiddlers (.tid)"/> </span> </$button> \end <<exportButton "[tag[People]limit[20]]">>
实际上,该按钮并未成功导出 20 个目标文件。你可以在 https://keatonlao.github.io/tiddlywiki-xp/ 里测试。
一个笨拙的方法是,新建一个空白版 server,然后将条目选集拖进去,从而实现批量导出。
我想知道是否能通过下载的方式,实现批量导出文件为 .tid 或者 .json?
解决办法
感谢 @机杼 提供的解决办法,使用插件 $:/plugins/tiddlywiki/jszip,可以批量导出文件为 .tid 或者 .json。
参考如下批量导出按钮:
\define zipTiddler() $:/temp/batchexport/_ZipTiddler \procedure batchExportButton(exportFilter) \procedure actions-render-tid-tiddler() <$action-sendmessage $message="tm-zip-create" $param=<<zipTiddler>>/> <$set name="tv-filter-export-link" value="[slugify[]addsuffix[.tid]]"> <$list filter=<<exportFilter>>> <$action-sendmessage $message="tm-zip-render-file" $param=<<zipTiddler>> filename={{{ [<currentTiddler>prefix[$:/]split[/]rest[1]slugify[]join[_]addprefix[$__]addsuffix[.tid]] ~[<currentTiddler>split[/]join[_]addsuffix[.tid]] }}} tiddler=<<currentTiddler>> template="$:/core/templates/tid-tiddler" /> </$list> </$set> <$action-sendmessage $message="tm-zip-download" $param=<<zipTiddler>> filename="tiddlers.zip"/> \end actions-render-tid-tiddler \procedure actions-render-json-tiddler() <$action-sendmessage $message="tm-zip-create" $param=<<zipTiddler>>/> <$set name="tv-filter-export-link" value="[slugify[]addsuffix[.json]]"> <$list filter=<<exportFilter>>> <$action-sendmessage $message="tm-zip-render-file" $param=<<zipTiddler>> filename={{{ [<currentTiddler>prefix[$:/]split[/]rest[1]join[_]addprefix[$__]addsuffix[.json]] ~[<currentTiddler>split[/]join[_]addsuffix[.json]] }}} tiddler=<<currentTiddler>> template="$:/core/templates/json-tiddler" /> </$list> </$set> <$action-sendmessage $message="tm-zip-download" $param=<<zipTiddler>> filename="jsontiddlers.zip"/> \end actions-render-json-tiddler <$vars hint={{$:/language/Buttons/ExportTiddlers/Hint}} caption={{$:/language/Buttons/ExportTiddlers/Caption}}> <span class="tc-popup-keep"><$button popup=<<qualify "$:/state/popup/batchexport">> dragFilter=<<exportFilter>> tooltip=<<hint>> aria-label=<<caption>> class=<<tv-config-toolbar-class>> selectedClass="tc-selected"> <$list filter="[<tv-config-toolbar-icons>match[yes]]"> {{$:/core/images/export-button}} </$list> <$list filter="[<tv-config-toolbar-text>match[yes]]"> <span class="tc-btn-text"><$text text=<<caption>>/></span> </$list> </$button></span></$vars><$reveal state=<<qualify "$:/state/popup/batchexport">> type="popup" position="below" animate="yes"> <div class="tc-drop-down"> <$button class="tc-btn-invisible"> <<actions-render-tid-tiddler>> {{$:/language/Exporters/TidFile}} </$button> <$button class="tc-btn-invisible"> <<actions-render-json-tiddler>> {{$:/language/Exporters/JsonFile}} </$button> </div> </$reveal> \end batchExportButton <<batchExportButton "[tag[People]limit[20]]">>
-
不是浏览器的限制
function downloadFiles(fileUrls) { for (let i = 0; i < fileUrls.length; i++) { let link = document.createElement('a'); link.href = fileUrls[i]; link.download = `文件${i + 1}.pdf`; // 设置文件名,这里用了一个简单的命名方式 link.style.display = 'none'; document.body.appendChild(link); link.click(); document.body.removeChild(link); } } // 调用该函数,传入文件的URL数组 const fileUrls = [ 'URL1', 'URL2', 'URL3', 'URL1', 'URL2', 'URL3', 'URL1', 'URL2', 'URL3', 'URL1', 'URL2', 'URL3', 'URL1', 'URL2', 'URL3', ]; downloadFiles(fileUrls);
-
-
-