{"id":17216293,"url":"https://github.com/exhuma/metafilter","last_synced_at":"2025-03-25T13:42:52.851Z","repository":{"id":1220378,"uuid":"1137679","full_name":"exhuma/metafilter","owner":"exhuma","description":"Aims to be a user friendly solution to browse files on a remote server","archived":false,"fork":false,"pushed_at":"2015-12-27T13:36:39.000Z","size":165,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-30T12:32:26.926Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exhuma.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2010-12-04T10:56:13.000Z","updated_at":"2014-01-17T21:07:17.000Z","dependencies_parsed_at":"2022-07-17T12:30:39.332Z","dependency_job_id":null,"html_url":"https://github.com/exhuma/metafilter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exhuma%2Fmetafilter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exhuma%2Fmetafilter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exhuma%2Fmetafilter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exhuma%2Fmetafilter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exhuma","download_url":"https://codeload.github.com/exhuma/metafilter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245473557,"owners_count":20621255,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-15T03:27:25.681Z","updated_at":"2025-03-25T13:42:52.826Z","avatar_url":"https://github.com/exhuma.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"DISCLAIMER\n==========\n\nThe name \"metafilter\" has NOTHING to do with \"metafilter.com\". I am not\naffiliated in any way with them. I chose this name because: It makes sense! And\nit expresses what this project is doing! It filters on file metadata.\n\nDESCRIPTION\n===========\n\nThis project aims to allow users to easily browse files based on time of\nmodification on a remote server (or locally) by providing sub-folders\nrepresenting the time queries:\n\n   - 2010-01-01 = Everything that changed after that date\n   - t2010-01-01 = *as above*\n   - 2010-01-01t = Everything that changed before that date\n   - 2009-01-01t2010-01-01 = Everything that changed between those two dates\n\nOther things may follow.\n\nREQUIREMENTS\n============\n\n   - python\n   - postgresql server\n   - postges contrib modules\n   - libfuse-dev\n   - git (to get the sources. It's not yet in pypi)\n\nRECOMMENDED\n===========\n\n   - virtualenv (not in the ubuntu packages, but available via setuptools. See\n                INSTALLATION below)\n\nINSTALLATION (ubuntu)\n=====================\n\n   sudo aptitude install postgresql postgresql-contrib libfuse-dev python-setuptools git-core\n   sudo easy_install virtualenv\n   git clone https://github.com/exhuma/metafilter.git\n   virtualenv --no-site-packages metafilter_env\n   source ./metafilter_env/bin/activate\n   cd metafilter\n   python setup.py install\n\n   Database\n   --------\n\n   Assuming the user \"postgres\" has superuser privileges (I won't delve into\n   the story about securing your postgres installation...)\n\n      Add something like the following to \"/etc/postgres/8.4/main/pg_hba.conf\"\n      to allow password based connections (again, this is the 'easiest but less\n      secure' way of doing things):\n\n         host all all 127.0.0.1/32 md5\n\n      CREATING DATABASE AND USER\n      ~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n      # psql -U postgres template1\n      template1=# CREATE USER filemeta PASSWORD '8769KUU6jyh..87236-';\n      template1=# CREATE DATABASE filemeta OWNER filemeta;\n      template1=# \\c filemeta\n      filemeta=# \\i /usr/share/postgresql/8.4/contrib/ltree.sql\n      filemeta=# \\q\n\n      CREATING TABLES\n      ~~~~~~~~~~~~~~~\n\n      # python\n      \u003e\u003e\u003e from metafilter import model\n      \u003e\u003e\u003e model.set_dsn('postgresql://filemeta:8769KUU6jyh..87236-@192.168.1.1/filemeta')\n      \u003e\u003e\u003e model.metadata.create_all()\n      \u003e\u003e\u003e quit()\n\nUSAGE\n=====\n\nFirst, you need to scan the metadata on a folder:\n\n   # rescan_folder.py /home/me\n\nWhen mounting the FUSE, you need to give it a \"root\" folder on which to\noperate. This will usually be the same you scanned, but can also be a subfolder\nwhithin the scanned folder:\n\n   # metafilterfs.py \u003cmountpoint\u003e \\\n         -o root=/home/me \\\n         -o dsn=\"postgresql://filemeta:8769KUU6jyh..87236-@192.168.1.1/filemeta\"\n\nBy default, no queries are yet defined. To create a sample query:\n\n   # mkdir \u003cmountpoint\u003e/t2010-01-01\n\nYou should now be able to browse the files.\n\nWEB INTERFACE\n=============\n\nFor the sake of 1) testing and 2) trying out Flask, I created a tiny web-app\nalong to browse the files. While I was writing this, I noticed that it's\nbroken. It may come back eventually.\n\nRun it with \"webserve.py\".\n\nKNOWN ISSUES\n============\n\n   - If I haven't said it enough already:\n     !!! CONSIDER THIS ALPHA QUALITY SOFTWARE !!!\n\n     I seriously doubt that you can lose any data while using this, but as I\n     haven't tested it thoroughly, I cannot give you a 100% guarantee.\n     Although, read and write operations are passed through to the underlying\n     system without a change. So there should be nothing that can go wrong.\n\n     Not everything may work as advertised. I've only been on this for a few\n     hours, and it's my first stab at FUSE. So be nice! ;)\n\n   - Scanning is NOT automatic! Consider putting it in a \"cron\". I haven't yet\n     decided how to make this more usable (using something like fam/gamin/...,\n     or re-scan on-access? Not sure yet.)\n\n   - Scanning is SLOW! Currently all files are scanned all the time and MD5\n     sums are calculated. I will soon change it so that it only scans files\n     that have changed during the previous scan. This will speed things up\n     considerably.\n\n   - Understandably, file access is not as fast as with a traditional\n     filesystem. It's not aiming to be fast, it's aiming to deliver you what\n     you want. BUT: By using postgres with ltree it's much faster that with any\n     other database backend due to the hierarchival indexing (and it made\n     writing the code so much easier...).\n\n     However, during a first test, I noticed that `mpd` (Media Player Classic)\n     looks for subtitle files like CRAZY, which causes many queries. This seems\n     to block the file read. Using VLC works. There may be a solution for this,\n     but it's not yet important for me...\n\n   - Windows \u0026 SAMBA\n     To be able to use it with samba, you need to deal with FUSE access rights.\n     The easiest way to do that is to append \"-o allow_other\" to the mount\n     command. Again, insecure. YMMV.\n\n     Creating new queries using windows is not yet possible (maybe by using\n     CMD). The default windows explorer first tries to create a folder named\n     \"New Folder\", which is not a valid query and will fail.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexhuma%2Fmetafilter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexhuma%2Fmetafilter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexhuma%2Fmetafilter/lists"}