/opendir-dl

This is an indexer and downloader for open directories.

Primary LanguagePython

opendir-dl

Build Status Coverage Status

This is an indexer and downloader for open directories.

Installation

While the project is in development, the best way to install the project is using the vcs support in pip:

user@debian:~$ pip install -e git+https://github.com/bplower/opendir-dl#egg=opendir-dl

This will make the 'opendir-dl' script available:

user@debian:~$ which opendir-dl
/usr/local/bin/opendir-dl

Usage

Since this project is still a work in progress, please note that not every feature detailed here may be implemented. Features and examples marked with "(planned)" are not implemented, but will be soon. Everything else should be working.

Index

Basic Index

This is the normal index. It will collect metadata for each file it indexes using the HEAD HTTP method

opendir-dl index http://domain.com/some/path

Quick Index

The quick index will do everything the same as the Basic index except for data collection via the HEAD request

opendir-dl index --quick http://domain.com/some/path

Reindex Existing Entries

If you want to reindex a specific item, you can reference the index ID. Here we're going to get the ID for the file "example_file.txt", and then update our index of it.

opendir-dl search example_file.txt
+----+------------------+-------------------------------------------------------+----------------------------+
| ID | Name             | URL                                                   | Last Indexed               |
+----+------------------+-------------------------------------------------------+----------------------------+
| 15 | example_file.txt | http://localhost:8000/test_resources/example_file.txt | 2016-10-16 21:23:35.409316 |
+----+------------------+-------------------------------------------------------+----------------------------+
opendir-dl index 15
opendir-dl search example_file.txt
+----+------------------+-------------------------------------------------------+----------------------------+
| ID | Name             | URL                                                   | Last Indexed               |
+----+------------------+-------------------------------------------------------+----------------------------+
| 15 | example_file.txt | http://localhost:8000/test_resources/example_file.txt | 2016-10-20 16:14:52.431861 |
+----+------------------+-------------------------------------------------------+----------------------------+

Search

Basic Search

A normal search will do a substring search on the file names. This search will reatun all files with the string 'png' in the name.

opendir-dl search png

Multi String Search

Providing multiple search terms will execute an exclusive search, meaning it will return entires whose names contain all phrases. In this case, you will only get files with names that contain both 'png' and 'jpg'.

opendir-dl search png jpg

Inclusive Search

You can provide the inclusive flag to specify that the search should entries that match any of the terms provided. In this case, you will receive files containing at least one of 'png' and 'jpg'.

opendir-dl search --inclusive png jpg

Searching Non-Default Database

You may want to specify a database to search, other than the default database. The --db option works with several types of sources.

Non-default file path

opendir-dl search --db /home/user/example.db png

Database hosted via http

opendir-dl search --db http://example.com/path/example.db iso

Named database caches (planned)

opendir-dl search --db billsdb jpg

Searching with Raw SQL

Depending on your level of comfort with SQL, you may wish to search by using raw SQL statements. This can be accomplished by providing the --rawsql option.

opendir-dl search --rawsql "select pkid,url,last_indexed from remotefile where pkid >=58"
+------+-------------------------------------------+----------------------------+
| pkid | url                                       | last_indexed               |
+------+-------------------------------------------+----------------------------+
| 58   | http://192.168.0.100:8000/testing.html    | 2016-10-27 04:03:33.997490 |
| 59   | http://192.168.0.100:8000/test_example.py | 2016-10-27 04:03:34.018469 |
| 60   | http://192.168.0.100:8000/tmp.txt         | 2016-10-27 04:03:34.029762 |
+------+-------------------------------------------+----------------------------+

Cached Databases

Cache Creation (planned)

A remote database can be registered by providing the url to the file, and an alias for the database. This will keep a local copy of the database, which can then be referenced by that alias. The alias must be a single word, and may not be the word all. The reserved word all will reference all cached databases while using the cachedb command.

opendir-dl cachedb http://example.com/path/example.db billsdb

We can now search this database using the following command

opendir-dl search --db billsdb iso

Cached Database Status (planned)

We can check the status of our cache of the database. This will tell you if the remote file has been modified since your cache was created.

opendir-dl cachedb --status billsdb

Updating Cached Databases (planned)

The cached database can be updated using the --update option.

opendir-dl cachedb --update billsdb

If you have many caches and just want to update all of them using the all alias.

opendir-dl cachedb --update all

Removing Cached Databases (planned)

A cached database can be removed with the --delete option.

opendir-dl cachedb --delete billsdb

Deleting all cached databases can be done using the all alias.

opendir-dl cachedb --delete all

Download

Standard Download

A normal download like this will not only download the file to the local directory, but will also index the file, so you may search for it in the future. If a file is already indexed, its URL can be referenced by the entries ID. There is no limit to the number of identifiers that my be provided.

Download by URL

opendir-dl download http://example.com/path/somefile.jpg

Download by ID

opendir-dl download 25

Providing multiple resource identifiers

opendir-dl download 26 90 http://example.com/path/someotherfile.iso 15

Downloading from Non-Default Databases

A file can be downloaded from non-default databases by providing the --db option. This will download the file associated with the ID 12 in that database, not your default database.

opendir-dl download --db http://example.com/path/bill.db 12

It is worth noting that there is no point in providing the --db option while specifying a URL to download. In the following example, the new index entry for somesite.com would be added to the temporary file containing the database retrieved from example.com. The temporary file is deleted once the script is complete, so the newly created index is lost.

opendir-dl download --db http://example.com/path/bill.db http://somesite.com/file.iso

Download Search Results (temporarily broken)

You've crafted your search to find the exact files you want, so now it's time to download all of them. This can be done by providing the same parameters to the download command, in addition to the flag --search. Lets say you would like to download all files returned in the following search.

opendir-dl search --db billsdb --inclusive jpg iso

You can do so by changing the command from search to download, and then providing the --search flag.

opendir-dl download --search --db billsdb --inclusive jpg iso