<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="../style.css" type="text/css" /> <title>Custom file handling</title> <script type="text/javascript"> function findLang(){ let href = location.href; for(let i=href.length-1;i>0;i--){ if('/'==href.charAt(i) && '/'==href.charAt(i-3)) return i; } return 0; } function nav2(page){ let i = findLang(); location.href = location.href.substring(0,i+1)+page; } function nav2Lang(lang){ let i = findLang(); let href = location.href; location.href = location.href.substring(0,i-2)+lang+location.href.substring(i); } </script> </head> <body> <header class='header'> <a class="logo" href="javascript:void(0)" onclick="return nav2('index.html')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html')">Tags</a> <a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a> <nav> </nav> </header> <br /> <div class="container"> <h1 class="title">Custom file handling <br> <span class="subtitle"></span> </h1> <ul class="tags"> <li><a href="../tags/termux">termux</a> </li> <li><a href="../tags/curl">curl</a> </li> </ul> <p>Long press the settings button, check the option "custom file handling" to enable the functionality.</p> <p>The custom file handling configuration file is "default.filecap", each line of it has the format as follows:<br> [file extension]:[mimetype]:[command line]</p> <p>The "[file extension]" part can have at most two-segment of extensions such as "txt.xz","html.gz".<br> "[mimetype]" indicates the type of "[command line]" output.<br> "[command line]" is same as the one in <a href="../cmds/index.html">default.cmds</a>. The most often used replacements are:<br> %u (url), %U (urlencoded url), %c (cookie), %p (site password, curl format).</p> <p>default.filecap example:</p> <pre><code>txt:text/html:curl %p "%u" mp3:text/html:echo '<audio controls width=100% height=100%><source src="%u"></audio>' m4b:text/html:echo '<audio controls width=100% height=100%><source src="%u"></audio>' m3u8:text/html:echo '<video controls width=100% height=100%><source src="%u"></video>' mp4:text/html:echo '<video controls width=100% height=100%><source src="%u"></video>' mkv:text/html:echo '<video controls width=100% height=100%><source src="%u"></video>' doc:uweb:echo http://docs.google.com/gview?embedded=true&url=%U xls:uweb:echo http://docs.google.com/gview?embedded=true&url=%U ppt:uweb:echo http://docs.google.com/gview?embedded=true&url=%U docx:uweb:echo http://docs.google.com/gview?embedded=true&url=%U xlsx:uweb:echo http://docs.google.com/gview?embedded=true&url=%U pptx:uweb:echo http://docs.google.com/gview?embedded=true&url=%U xz:text/plain:curl %p "%u"|xz -d --</code></pre> <p>Examples for <a href="../html5/index.html">html5 application</a>:</p> <pre><code>pdf:uweb:echo file:///data/data/info.torapp.uweb/files/app/pdf.js/web/viewer.html?file=%u djvu:uweb:echo file:///data/data/info.torapp.uweb/files/app/djvu.html?url=%u epub:uweb:echo file:///data/data/info.torapp.uweb/files/app/reader/index.html?bookPath==%u</code></pre> </div> <p>Last Modified: 24 September 2022<br> fix typos from torinfo.uweb to torapp.uweb<br> <pre></pre> </p> <script> if(location.href.indexOf("/zh/")>0){ var script = document.createElement("script"); script.type = "text/javascript"; script.src = "../../js/gissues.js"; script.setAttribute("repo","jamesfengcao/uweb"); script.setAttribute("issue-term","title"); script.setAttribute("theme","github-light"); script.async = true; document.body.appendChild(script); } </script> <script id='jsgiscus' src='https://giscus.app/client.js' data-repo="torappinfo/uweb" data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE=" data-category="Announcements" data-category-id="DIC_kwDOEgNLGc4CQjsh" data-mapping="title" data-strict="0" data-reactions-enabled="1" data-emit-metadata="0" data-input-position="top" data-theme="light" data-lang="en" data-loading="lazy" crossorigin="anonymous" async> </script> </body> </html>