Skip to content

Instantly share code, notes, and snippets.

@chrippa
Created August 12, 2009 12:22
Show Gist options
  • Save chrippa/166474 to your computer and use it in GitHub Desktop.
Save chrippa/166474 to your computer and use it in GitHub Desktop.
// Pseudokod
/*
path: /by-group/zx/Shin Seiki Evangelion/Shin Seiki Evangelion 01.mkv
level 0: /
level 1: by-group
level 2: zx
level 3: Shin Seiki Evangelion
Configfil:
Mount "/by-group" {
Group(set="group", display="$group.name") // level 1
Group(set="anime", display="$anime.name", query="group.name == @mount.level[1]") // level 2
Files(display="$anime.name - $file.ep.$file.ext", query="group.name == $mount.level[2] AND anime.name == $group.level[3]") // level 3
}
*/
void handle_dir(mount, level)
{
switch(level) {
case 0:
hashfs_fuse_add_dir(mount, "by-group")
case 1:
set = "group"
query = null // Visa alla
groups = hashfs_db_group_by_set(set, query)
for (i = 0; i < groups.length; i++)
hashfs_fuse_add_dir(mount, group[i].name)
case 2:
set = "anime"
query = "group.name == %s" // query = "group.name == zx"
animes = hashfs_db_group_by_set(set, query, mount.level[2])
for (i = 0; i < anime.length; i++)
hashfs_fuse_add_dir(mount, anime[i].name)
case 3:
// query = "group.name == zx AND anime.name == Shin Seiki Evangelion"
query = "group.name == %s AND anime.name == %s"
files = hashfs_db_files(query, mount.level[2], mount.level[3])
for (i = 0; i < files.length; i++) {
file = files[i]
// filename = "Shin Seiki Evangelion 01.mkv"
filename = "%s %02d.%s" % (file.anime.name, file.ep, file.ext)
hashfs_fuse_add_file_link(mount, filename, file.path)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment