Super cool! I'd be interested to get something like that merged. Would you be up for submitting a patch (https://perkeep.org/code#contributing)? Even if you don't want to finish it up, it's a starting point. I'm pretty familiar with the fs module and would be happy to review.
I noticed there's support for persisted searches (namedSearch in https://github.com/perkeep/perkeep/blob/7f17c0483f2e86575ed87aac35fb75154b16b7f4/pkg/search/predicate.go#L695), would be cool to make them show up as search/name/ dirs, although there's no UI currently for creating them. On Tue, May 21, 2019 at 3:20 PM dx25 <[email protected]> wrote: > > Nice, now it seems to be working. > > On Tuesday, May 21, 2019 at 4:55:34 PM UTC-5, mathieu.lonjaret wrote: >> >> Probably because search queries have a default max number of returned >> results. You should be able to get an unlimited amount by specifying a >> Limit of -1 in your query. See >> https://perkeep.org/pkg/search#SearchQuery. >> >> On Tue, 21 May 2019 at 23:34, dx25 <[email protected]> wrote: >> > >> > I've been trying out Eric's magic directory idea, using the "recent" and >> > "at" implementations as a guide. I was able to get it working (sort of) >> > -- within the new "search" subfolder, I can do something like cd >> > "after:\"10-01-2017\" and is:image", and get a directory back with the >> > right results, except that it seems to max out at 201 results for some >> > reason. >> > >> > >> > >> > On Thursday, May 9, 2019 at 4:32:36 PM UTC-5, mathieu.lonjaret wrote: >> >> >> >> Hello, >> >> >> >> On Thu, 9 May 2019 at 00:26, Eric Drechsel <[email protected]> wrote: >> >> > >> >> > Hi Dave, >> >> > >> >> > On Wed, May 8, 2019 at 1:56 PM dx25 <[email protected]> wrote: >> >> >> >> >> >> I finally got around to looking at this video server idea again -- as >> >> >> Mathieu suggested, I created a folder in web UI and moved all video >> >> >> files to the folder. Now when pk-mounted, the new folder is not >> >> >> visible in "roots" unless I manually set the camliRoot attribute to >> >> >> it, and none of the videos are visible within unless I set, say, a >> >> >> camliPath:filename.mp4 attribute on the folder permanode. Mathieu, >> >> >> you mentioned adding a custom handler. As I look through the source, >> >> >> I see a number of other blobservers, but I have no clue how to use >> >> >> them or what they are for. I'm assuming that was how were suggesting >> >> >> I deal with this camliRoot/camliPath problem? >> >> >> >> >> >> The other idea I had was an approach similar to how <pkmount>/recent >> >> >> folder is working. Within that folder, I can see filenames for some >> >> >> recently added stuff, apparently without the need for these redundant >> >> >> camliPath: attributes (since the fileName is stored with the blob >> >> >> content for the videos). Was curious to see how this actually >> >> >> populates the /recent folder, but was unable to locate the >> >> >> implementation. >> >> >> >> As Eric said, if you want to see how the magic of pk mount works, it's >> >> all in pkg/fs. But honestly if you want things to show up as files in >> >> pk mount, I maintain that it's probably easier to do a bit of glueing >> >> and scripting on top of things, to add the relevant camliRoots and >> >> camliPaths to your permanodes, than to hack a new "magic directory" in >> >> pkg/fs. Dealing with fuse stuff isn't easy imho. >> >> >> >> > Mathieu, you mentioned adding a custom handler. As I look through the >> >> > source, I see a number of other blobservers, but I have no clue how to >> >> > use them or what they are for. I'm assuming that was how were >> >> > suggesting I deal with this camliRoot/camliPath problem? >> >> >> >> The other idea I had mentioned earlier is also harder than the very >> >> first option, but probably not as hard as inventing new things in >> >> pkg/fs. But it still requires you to understand what typically happens >> >> to a blob when Perkeep receives it, with regard to how the conditional >> >> blobserver only passes it to the indexer if it is a schema blob, then >> >> how the indexer treats it depending on what kind of mutation it is, >> >> etc. My very rough idea was that you could add your own custom piece >> >> in the middle that does the job of creating the camliPaths and >> >> camliRoots somewhere along the line, when e.g. the indexer sees it is >> >> a video file. But again, that is pretty involved too, and wouldn't be >> >> a very adaptable/reusable mechanism, so all in all, probably not a >> >> very good idea. >> >> >> >> > The mapping of nodes to filenames happens starting at >> >> > https://github.com/perkeep/perkeep/blob/7f17c0483f2e86575ed87aac35fb75154b16b7f4/pkg/fs/recent.go#L104 >> >> > >> >> >> Any idea where I should look for it? As I was saying in my original >> >> >> post, it seems like what I'd really want here is to write my own >> >> >> alternative implementation of /recent (called, e.g. /videos), that >> >> >> makes all uploaded videos available. I was able to successfully add a >> >> >> "is:video" search parameter that uses the mime type prefix, but that's >> >> >> as far as I've gotten. >> >> >> >> >> >> So, any ideas on what direction to go next? >> >> >> >> >> > fs.RecentDir is a good template for a search-backed directory. It seems >> >> > like it might be appropriate to make RecentDir just an instance of a >> >> > fs.SearchDir type. RecentDir doesn't have any tests but SearchDir >> >> > should. >> >> > >> >> > I'd want to see a new "/search" node that implements Lookup() to take a >> >> > filename-escaped search string and return a new SearchDir node similar >> >> > to how fs.root implements hash-based permanode lookup >> >> > here:https://github.com/perkeep/perkeep/blob/7f17c0483f2e86575ed87aac35fb75154b16b7f4/pkg/fs/root.go#L136) >> >> > since that would provide users with a way to perform searches through >> >> > the filesystem. >> >> > >> >> > I've also considered adding support for persisting searches as >> >> > permanodes, which would behave as directories. This would require >> >> > changes in a few modules but would take perkeep in the direction of >> >> > end-user programming which I think makes a lot of sense for >> >> > single-tenant self-hosted applications (tiddlywiki for example). >> >> > >> >> >> >> >> >> >> >> > >> >> >> >> >> >> >> >> >> On Thursday, December 20, 2018 at 9:11:21 AM UTC-6, mathieu.lonjaret >> >> >> wrote: >> >> >>> >> >> >>> It does not necessarily have to be manual though. The simplest (but >> >> >>> least efficient) way I can imagine to automatize it would be to make a >> >> >>> program monitoring new things being added to your Perkeep (a camtool >> >> >>> search call for recent items, being run regularly, for example), and >> >> >>> when detecting when one of these new items is a video, it would add it >> >> >>> to the mounted camliRoot. >> >> >>> You could also add a custom handler which does that within Perkeep. In >> >> >>> the same way the cond blobserver (pkg/blobserver/cond) is used to add >> >> >>> a blob to the index only if it is a schema blob. But that is a bit >> >> >>> more involved than the above. >> >> >>> >> >> >>> On Thu, 20 Dec 2018 at 15:55, dx25 <[email protected]> wrote: >> >> >>> > >> >> >>> > Sorry, that was worded poorly. My hope was to avoid creating a >> >> >>> > folder, and then every time phone uploads something, manually >> >> >>> > adding that to the folder. Sounds like for now that's the way to >> >> >>> > do it though. >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > On Wednesday, December 19, 2018 at 6:26:57 PM UTC-6, >> >> >>> > mathieu.lonjaret wrote: >> >> >>> >> >> >> >>> >> On Thu, 20 Dec 2018 at 00:51, dx25 <[email protected]> wrote: >> >> >>> >> > >> >> >>> >> > Hi, >> >> >>> >> >> >> >>> >> Hello, >> >> >>> >> >> >> >>> >> > I have been using the android app on Perkeep to upload photos >> >> >>> >> > and videos from my phone to a perkeepd instance I run locally. >> >> >>> >> > I'm also running Plex Media Server on that same machine, and >> >> >>> >> > would like it to serve up the videos I've added to Perkeep. My >> >> >>> >> > first thought was to run pk-mount as a service, pointing Plex >> >> >>> >> > there, and hopefully everything would just work. >> >> >>> >> >> >> >>> >> Yes, in theory that should work. >> >> >>> >> >> >> >>> >> > However, I can't figure out how to access content uploaded from >> >> >>> >> > the phone via pk-mount. >> >> >>> >> >> >> >>> >> Have you seen https://perkeep.org/cmd/pk-mount/ ? >> >> >>> >> What step are you blocked at exactly? >> >> >>> >> >> >> >>> >> > Ideally I would create a search that finds all videos (e.g. >> >> >>> >> > "format:mp4", although this appears not to be supported now), >> >> >>> >> > and then be able to mount that search directly in pk-mount. Is >> >> >>> >> > something like this possible? >> >> >>> >> >> >> >>> >> No, I don't think you can do that kind of thing for now. You can >> >> >>> >> only >> >> >>> >> control whether you want to only mount a subset via the second >> >> >>> >> argument of pk-mount. So what you can actually do pretty easily, >> >> >>> >> is to >> >> >>> >> gather (after you searched for them) all your videos under a common >> >> >>> >> root. Then you mount that very root with pk-mount. >> >> >>> >> >> >> >>> >> hth, >> >> >>> >> Mathieu >> >> >>> >> >> >> >>> >> > You received this message because you are subscribed to the >> >> >>> >> > Google Groups "Perkeep" group. >> >> >>> >> > To unsubscribe from this group and stop receiving emails from >> >> >>> >> > it, send an email to [email protected]. >> >> >>> >> > For more options, visit https://groups.google.com/d/optout. >> >> >>> > >> >> >>> > -- >> >> >>> > You received this message because you are subscribed to the Google >> >> >>> > Groups "Perkeep" group. >> >> >>> > To unsubscribe from this group and stop receiving emails from it, >> >> >>> > send an email to [email protected]. >> >> >>> > For more options, visit https://groups.google.com/d/optout. >> >> >> >> >> >> -- >> >> >> You received this message because you are subscribed to the Google >> >> >> Groups "Perkeep" group. >> >> >> To unsubscribe from this group and stop receiving emails from it, send >> >> >> an email to [email protected]. >> >> >> To view this discussion on the web visit >> >> >> https://groups.google.com/d/msgid/perkeep/1b38a8f6-d118-4951-9ae7-dbd87ffe1a07%40googlegroups.com. >> >> >> For more options, visit https://groups.google.com/d/optout. >> >> > >> >> > >> >> > >> >> > -- >> >> > best, Eric >> >> > eric.pdxhub.org >> >> > >> >> > -- >> >> > You received this message because you are subscribed to the Google >> >> > Groups "Perkeep" group. >> >> > To unsubscribe from this group and stop receiving emails from it, send >> >> > an email to [email protected]. >> >> > To view this discussion on the web visit >> >> > https://groups.google.com/d/msgid/perkeep/CAGTxtWiNUbSG_m4mLYqHsPfinxaVqUGB29G2J%2Bjr5VZuYrUTYA%40mail.gmail.com. >> >> > For more options, visit https://groups.google.com/d/optout. >> > >> > -- >> > You received this message because you are subscribed to the Google Groups >> > "Perkeep" group. >> > To unsubscribe from this group and stop receiving emails from it, send an >> > email to [email protected]. >> > To view this discussion on the web visit >> > https://groups.google.com/d/msgid/perkeep/3f330c68-61b2-48a3-9c80-0489a839d503%40googlegroups.com. >> > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "Perkeep" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/perkeep/3ffb2f72-8c98-4e8e-90f4-69e514009184%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- best, Eric eric.pdxhub.org -- You received this message because you are subscribed to the Google Groups "Perkeep" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/perkeep/CAGTxtWiragqCEh-c-yvF_N9TCefP1dzRig__x9fAJDRMm24UkA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
