![](https://habrastorage.org/storage1/5b1acede/efa94d5f/68ca6eaa/79177094.jpg)
Однако, такое простое задание как поделится файлами с незарегистрированным пользователем будет весьма накладно: придется давать ссылку на каждый файл (предварительно поместив их в папку Public), который требуется передать. Поэтому Вы наверняка воспользуетесь либо одним из известных файлообменников или же простой электронной почтой. Но почему бы не организовать такой файл-хостинг с удобным интерфейсом у себя в Dropbox?
Те, кто близко знаком с папкой Public в Dropbox знают, что public ссылки на файлы полностью сохраняют относительные пути файлов. Они имеют вид
dl.dropbox.com/u/user_id/{путь_в_папке_public}
. Этим фактом пользуются при создании сайтов-визиток и блогов на Dropbox. Но допустим, что существует достаточно большое количество файлов и папок с достаточно сложной структурой, которыми хотелось бы поделиться. Причем, не обязательно всеми файлами, а предложить выбрать пользователю именно то, что ему нужно. Логичное решение — создать «файл-карту» с соответствующими адресами и ссылками на файлы. Но как создать полное дерево каталогов с необходимыми ссылками? В Linux на помощь придет команда tree с ключом -H. В Windows встроенных средств для этого нет (да, тут тоже есть команда tree, но подставлять ссылки она не умеет). Конечно, можно попытаться написать свой собственный рекурсивный скрипт, который будет эмулировать линуксовский tree -H: проходить по папкам, подставлять ссылки, выводить все это в файл, но давайте согласимся, что кому-то не хватит умений и знаний, а иногда и просто свободного времени на написание, отладку и поддержку.Одно из решений нам предлагает пользователь Dropbox Eliphas Q. и его детище — pyndexer.
Что такое pyndexer?
Pyndexer — это скрипт на Python, который создает список Ваших файлов, которые находятся в папке Public.
Скрипт рекурсивно исследует папки, указанные в файле настроек и создает index.html файлы в каждом каталоге. Созданные файлы подхватывает уже сам Dropbox и синхронизирует с облаком. Таким образом, каждая папка в представлении pyndexer — это отдельный index.html файл, между которыми и происходит навигация (такой своеобразный персональный FTP в облаке Dropbox).
Скрипт поддерживает большое число типов файлов, причем можно добавить свои, слегка подправив код. Кроме того, он умеет игнорировать некоторые из папок или закрывать доступ к ним с помощью пароля, встроенный jwplayer может воспроизводить аудио и видео файлы (по умолчанию mp3 и mp4), а также прикреплять readme в footer страницы-листинга. Даже если и этого мало, то можно прикрутить еще и Google Analytics.
Как начать использовать?
Скрипт успешно работает в Linux, Mac OS X и Windows (у меня скомпилированный .exe никак не хотел работать, поэтому потребовалась установка среды Python).
Установка в Linux:
cd ~/Dropbox/Public
wget http://dl.getdropbox.com/u/552/pyndexer/pyndexer.py
chmod +x pyndexer.py
python pyndexer.py
Установка в Windows:
1. При отсутствии среды Python загружаем скомпилированный .exe. Иначе нам потребуется просто сам скрипт.
2. Запускаем в папке Public.
После запуска скрипт загрузит для себя файл конфигурации pyndexer.ini и шаблон pyndexer.template.html. Непосредственно в pyndexer.ini нужно указать абсолютный путь к папке Public (это необходимо из-за шифрования путей в Dropbox 1.2.x и выше), а также в квадратный скобках относительные пути директорий, которые необходимо проиндексировать.
Например, я хочу проиндексировать две папки (Somethings и Savegames), но хочу поставить пароль на Somethings, и не индексировать в ней подпапку NotSoPublic; а в папке Savegames, я хочу показать текст после списка файлов, который находится в другом файле sometext.txt. Тогда в файле pyndexer.ini следует указать:
[Somethings]
password=ItsSecret
[Somethings/NoSoPublic]
skipdir=yes
[Savegames]
readme=sometext.txt
Следует обратить внимание, что пароли хранятся в открытую, поэтому такое хранение весьма небезопасно, поскольку можно легко получить доступ к файлу конфигурации простой подстановкой пути в адресную строку.
Также предусмотрена возможность приглашения рефералов (ссылка-логотип Dropbox вверху списка файлов). Ссылкой управляет параметр dropbox_referrer в файле pyndexer.ini.
После окончания работы скрипта, даем ссылку (public link) на index.html в любом каталоге и пользуемся приятным веб-интерфейсом в стиле Dropbox.
Полное описание скрипта и возможные трудности при работе можно найти в readme файле от автора.
Ссылки: