Home Forums Plugins and API Tabbles API (V4): start here

Tagged: , ,

Viewing 8 reply threads
  • Author
    • Andrea
      Post count: 963
      we’re VERY excited we’ve just released a build with the first APIs for Tabbles (and Tabbles’ sister application, Confidential). 

       we have just uploaded a beta of Tabbles that has the API code built in, you can download it here. It’s not fully tested and misses a coupe of secondary features, but it should be solid enough for most users. 
      The good stuff:
      The API documentation and our test plugin source code:
      You can get the compiled Plugin here (with instruction on how to run it:  
      About Running Confidential:
      1) We recommend you back your Tabbles database (just in case), from Files > Tabbles’ Database > Export database to XML
      2) Download Confidential here: https://www.confidential.tech/downloads/  
      3) You’ll need to manually uninstall Tabbles (we’re figuring out a solution for that)
      4) About the Database:  
      • If you pick the “Local” option, be aware that Confidential will use a different database as Tabbles, so you’d find yourself with an empty db. We’d recommend you just press “GO” and then import your Tabbles xml database into it. This way you’ll also have a sandbox to play with while developing your plugin.
      • If you want to use your Tabbles localdb database, you can do that too from the “LAN” tab. You’ll need to upgrade your database first: in Confidential click on the “LAN” tab, select “Windows Authentication” and in the “server address” field, write “(localdb)\TabblesLocalDb4” and in “database name” write “tabbles4”.
      • If you have a LAN database and want to upgrade it, just punch in the login info (but we still recommend you create a new one).
      Note: Tabbles does currently save its config data in Documents\Tabbles\Config, while Confidential saves it into %appdata%\Confidential\Config      –  we’re also moving Tabbles config folder soon. 
      For any question, please post it here 🙂
      • This topic was modified 6 years, 9 months ago by Andrea.
      • This topic was modified 6 years, 9 months ago by Andrea.
      • This topic was modified 6 years, 9 months ago by Andrea.
      • This topic was modified 6 years, 9 months ago by Andrea.
    • Avatar photoTarekJor
      Post count: 7

      Hi, I don’t know if this is the proper place to post “feature requests” using API or for Tabbles itself

      About API, great work, I have some ideas as “feature requests“:

      autoTagging based on rules and patterns (filename, path, tabbles.containers)

      I am interested in some auto.tagging based on “path” or “filename” patterns for example.

      video.extensions => trigger (#video.tag) extensions (avi,flv,mp4,webm… etc)
      analog for “file.entities” like “images” “documents”

      There are databases on internet to mapping “MIME” types to “class.groups” so it is easy to implement

      Relational “Tabbles” => tabbles = tags so

      We could define tag.uris => video/mp4 (easily) => #video + #mp4
      another example => sports/football => #sports + #football

      uris could allow “nested Tabbles” with logic

      *I don’t have (yet) “deep knowledge” about Tabbles implementation of tags yet, but graph databases are great and are ready “functional programming” friendly to support more relations and ontologies of “words” and “concepts”

      For example, a last example of all this:

      – Tabbles path.uris to tags (path are URIs)

      Imagine you have a folder with personal photos from n sources in a folder-tree based
      folder, will be very useful (convert folder to tags) and
      process fileNames to “search” nGrams => keywords, words

      *This would be to start using “ontologies” “semantics” and controlled vocabularies
      *SemanticWeb and SemanticDesktop finally “one” to the masses (visionary desire xD)

      Hashing integration batch (unique IDs for files) (hash.generator at least MD5 or MD6 and SHA-1 based algorythms (to generate unique IDs and mapping across tagging beyond even relative.paths or Tabbles listener (I see Tabbles listen for moved files even using Windows default file manager, and cleverly manages offline disk volumes via UUID) but hashing create a more flexible way of collaboration and merge databases better with “strong.Linked” relations.

      Hashing will impact on database size or performance, you wonder?
      (i do some research)
      one of StackOverflow guys
      url: blog.codinghorror DOT com/primary-keys-ids-versus-guids/

      Hashing can be accomplished “manually” via commandline commands and importing “manually” to SQL database, but is not “UX friendly” and not “every user has that knowledge”

      RAMdisk and Tabbles (database, caching)

      Using ramDisk is very useful to load Tabbles cache and database ( “IOPS power” ) (but “ramDisk” are “that great great unknown” for many users), to some integration “to customize easily” “Tabbles to ramdisk” will be useful

      As a tip, for any users with 16GB of RAM DDR3|DDR4 or above (very common this days), I think this will be every useful “to desktop users”.

      Some users could be “server admins” or “master backend superusers” but the most common maybe is “desktop or laptop workstation PC users“.

      PD: I help because im a fan, yeah, but another reason is more pragmatical and practical, I could start a “file management” project by myself (ego thing, not useful), or help to improve brilliant work that exists now, and Tabbles is a software “state of art” to me, revolutionary (even too advanced to contemporary age hahaha), the thing is, here you will have a loyal entuthiast programmer and researcher with great ideas to help, and when I “get with .NET framework” even a contributor 😉

      And sorry if the text is too large or cryptic (the intention is being functional programming ready :D)

    • Andrea
      Post count: 963

      Hi there,

      thanks for the request 🙂 

      I’m not sure I understand it all… anyway, there are a couple of people willing to implemente a plugin to tag images and videos based on their metadata – I’ll point them to your post 🙂

    • Avatar photoTarekJor
      Post count: 7

      Hi Andrea 😉

      Sorry for my “not too clean English”, maybe I could explain my thoughs better sometimes :D… but is an abstract topic.

      That people “willing to implement”, maybe would be useful and interesting, speak with them… keep in touch.

      I have knowledge about functional programming, OOP.

      Thank you, for fast response

      PD: The spanish translation is almost cooked ;), today or tomorrow I post the resx file

      • This reply was modified 6 years, 9 months ago by Andrea.
      • Andrea
        Post count: 963

        Thank you @TarekJor 🙂 

        Are you willing to try writing a plugin yourself? 

        Also: why do you have the <p> in your post? Why don’t you simply use the “Visual” tab? 

    • Avatar photoTarekJor
      Post count: 7

      Visual tab is broken (it seems to me), last day, my first comment, show that, sorry for the inconvenience. (Im not a noob on WYSWYG or “posting” comments on blog :D)

      Now, this post comment is from “text” tab “plain text”.

      About writing plugin, I like the idea, but currently I have a lot of work, maybe in near future, I like Tabbles a lot, and in Spain or Italy, hen Law meets Confidential or Tabbles, maybe Law will be effective (this is important)

      As a suggestion, maybe a small period to edit, or preview.comments will be useful, to avoid this things.

      PD: Maybe copy from another “text source”like mail or “plain text” from SublimeText, Notepad, “add
      <p> tags (I dont know)


    • Dan Novak
      Post count: 3

      Hello @TarekJor & Co.,

      A couple ideas I’ve been playing with, based on imageboards like Danbooru/Moebooru (https://github.com/r888888888/danbooru).  There’s a test instance running at http://testbooru.donmai.us/ (CAUTION: may be NSFW depending on what’s posted there).  


      When entering a particular tag, a second tag is also added to the tagged resource.

      For example, you can setup “shirt” -> “clothing”.  Tagging anything with “shirt” will also add the “clothing” tag.

      I believe nested tags already do something like this, but I could not figure out how to make it work like I wanted.   


      Tags that get replaced with other tags, e.g.

      “Gordon Sumner” -> “Sting”.

      “gray” -> “grey”

      Both aliases and implications in Danbooru are apparently a performance hit, especially if there’s a lot of them – they run the processing as a background job or on adding an image/video.  I’m not sure what this means for something like Tabbles or if this can be done with a plugin.  I mean to try, however. 🙂

      It’s not a substitute for a controlled vocabulary, but these may be one way to implement something like it. The ability to disable adding new tags in the tagging interface would also help enforce a controlled vocabulary (it may already do this with permissions and multiuser and such, but I’ve only ever explored Tabbles as a solo user)

      Hashing: Might be useful to identify duplicate files – for example Danbooru uses this technique for uploaded media and it’s storage – files are stored with an MD5 hash of the content rather than the original filename.

      — Dan

      • This reply was modified 6 years, 8 months ago by Andrea.
    • Dan Novak
      Post count: 3

      @TarekJor I see what you mean about the visual tab in this comment thing – it seems to be using HTML instead of BBcode for highlighting (as you can see in my above comment – I don’t see a way to edit unfortunately)

      • Andrea
        Post count: 963

        @DanNovak: I edited it for you. You click “Edit”, when in visual you cut the post, click “Text”, paste, click back to “Visual” and that’s fixed 🙂 

        Thanks for the contribution so far, we’re super excited to see the first fan-built plugin come to life 🙂 


    • Avatar photoTarekJor
      Post count: 7

      @Dan-Novak thanks for your comment


      When entering a particular tag, a second tag is also added to the tagged resource.

      this is related with nested/tags => tag.uri => example tag:clothing/shirt (/ is “level.separator”)

      Aliases (aka tag.synonyms)
      Tags that get replaced with other tags (tag point another tag, maybe master.tag and slave.tags)

      Performance hit, on Danbooru(*1)

      Maybe is “bad database design” of indexes and queries (Tabbles could use graph or NoSQL database instead of SQL, if this performance is an issue)

      (*1) @Dan-Novak: Both aliases and implications in Danbooru are apparently a performance hit

      About “controlled vocabulary”, great idea, I agree with you

      About Hashing

      That is one feature, but imagine a “cross platform” “cross reference” always mapping “same file” with same “tags” or maybe a “massive collaboration” based o hash.tags

      The possibilities are infinite, and even mapping “urls” as hash not only files (this is other feature)

      Tabbles database could handle “item” as

      item.name (on filesystem for example) hash.MD5 or SHA-1(master.id) and then “tags.list” (any format)

      tags.list => (tag,tag,tag).ordered.AZ tag could be simple “string” or “string/string” “string:string”

      I don’t know “in deep” how Tabbles handle “SQL Database” but maybe (if lead developers, or Maurizio think it is useful), make tests for NoSQL (json or graph) databases (increase performance on relations.

      This is not “hard” to implement, because you no are using “F#” and “C#” (functional programming, hybrid) to “it is more semantic-friendly” than “other approach”

      BTW, Keep in touch @Dan-Novak, we could experiment with things 😉

      Best Regards

    • Andrea
      Post count: 963

      Hey @TarekJor and @DanNovak,

      how are those plugins coming along? 😉

Viewing 8 reply threads
  • You must be logged in to reply to this topic.