Need help: Offline and sync-only modes for AV-98
by Ploum on 2021-12-10
I managed to hack a basic offline mode for AV-98. When running AV-98, simply type "offline" and you should only use cached ressources and not access the network. What is cached ? Firstly, every gemini document you ever accessed is now stored in ~/.cache/av98/.
You can explore that directory, it’s a tree mimicking the gemini space.
But what about building the cache?
Simply launch AV-98 with --synconly parameter. AV-98 will automatically access all your bookmarks *and* every link in each of your bookmark. That should get you enough to read while offline.
With my 35 bookmarks, including Capcom and Antenna, it tooks me 16 minutes to download 13Mo of cache with 77 different hosts.
Be aware that only gemini:// links are cached. https:// and gopher:// are dropped when syncing. It also acts weirdly and that’s why I need help.
I need help because:
- Sometimes, XML files are opened in Gedit, in cat or even in Firefox. I have no idea what’s happening and I would like to make --synconly completely non-interactive.
- Same with certificate errors. How to just ignore them?
- More importantly: how to not access content which has not been modified since last caching. Any ideas of strategies I may use?
patches and bug reports welcome on:
What I plan to do, once those problems are solved, is to save in a file attempt to access non-cached ressources while offline. Those ressources would then be synced the next time.
In order to fully exploit that, I also plan to make a persistant "tour" feature which would be saved accross sessions. Newly cached content would automatically be added to that tour. This means that by symply syncing your favourite gemlogs, you will have an automatic tour accross all the unseen/unread posts. Sync in the morning, read during the day while offline.
If everything goes according to the plan, I may even try to implement offline search: save your searches done while offline, send them when online and sync the results (which would be cached).