Menu

Tree [3cf325] default tip /
 History

Read Only access


File Date Author Commit
 [-tasks-] unknown
 README.md unknown
 get_last_revs.py 2024-12-26 tav86 tav86 [3cf325] Bypass connection errors and HTTP errors
 update_.-.cmd 2017-09-14 tav86 tav86 [566e9c] .
 update_.-.py 2024-12-26 tav86 tav86 [3cf325] Bypass connection errors and HTTP errors

Read Me

What is this?

Script file for exporting revision history (files' modification versions) of your Dropbox files and storing this history in 7z-archives (in directory named .- in the root Dropbox directory).

How to use?

Just run update_.-.py script file after you have made config file at %Dropbox%/.-/config.json with contents like this:

{
    "AToken": "FSUCV-C_CucAAAAAAAA...",
    "Cookie": "lid=AABR...; blid=AABX...; ...",
    "_subject_uid": "11700029",
    "files": [
        "file_name.ext",
        "(useful for selecting separate files and for deleted files)"
    ],
    "dirs": [
        ["Directory", "File Extension, Recurse Subdirectories by default = ", true, "(Optional)Exclude directory"],
        ["", ".txt", false], //only .txt files in root Dropbox directory
        ["Photos", ".jpg"], //.jpg files from Photos and all its subdirectories
        ["", ".doc", true, "Books"], //all .doc files excluding "Books" subdirectories
        ["", ""], //all files
    ]
}

May be someone someday will make a script (named like authorize_in_dropbox.py), which will automatically create config.json with those values already written for you...

But I've got this manually:

  • "AToken" by creating my app on the Dropbox Platform and clicking Generate (access token) button at info page of that app.
  • "_subject_uid" from url string after clicking on "View previous versions" (after right clicking on any file in your Dropbox directory) and "Cookie" via Network Monitor (for any web page at dropbox.com when you already signed in) in Firefox or web-browser of your choice.

(Why web-browser Cookie even needed for this script? The thing is Dropbox doesn't present additional information [e.g. author of changes] about revision via its API, but this information can be seen on the web-page (at dropbox.com) of the previous versions of some file (e.g. 9:42 PM Edited by Alexander Tretyak.). So this script takes and combines information from two places: Dropbox API is used to get content of previous files' versions/revisions, and [text] description of each revision is obtained from web-page (at dropbox.com) of previous versions of corresponding file.)

Why directory for files' revisions (history) has name .-?

Actually, I could not decide which word to choose for this directory name (history, file_revisions, prev_versions, etc.).

Furthermore, I prefer symbols instead of words (e.g., & instead of AND, | instead of OR) because this is more "language-neutral" and does not require translation/localization.

And meaning of name .- can be explained quite easily:

When I saved new version of some file at the same directory, I for some reason decided to add plus symbol + at the end of its name, so it looked like this:

file.txt
file+.txt
file++.txt

More plus symbols mean more new file version. Accordingly, if newest version has no plus symbols, then previous versions can be designated by minuses (however, this require to rename all previous files after adding a new file version):

file--.txt
file-.txt
file.txt

Following a similar logic, a directory, which contains all previous versions of file.txt can be named file.txt-.

And as current directory commonly named as period (.), so reasonable to use .- as the name for directory with the history (previous files' versions) of itself.


Что это?

Скрипт для экспортирования истории изменений файлов в вашем Dropbox и сохранения её в 7z-архивах (в каталоге .- непосредственно в корне папки Dropbox).

Как использовать?

Просто запустите скрипт update_.-.py предварительно создав файл конфигурации в %Dropbox%/.-/config.json приблизительно такого содержания:

{
    "AToken": "FSUCV-C_CucAAAAAAAA...",
    "Cookie": "lid=AABR...; blid=AABX...; ...",
    "_subject_uid": "11700029",
    "files": [
        "file_name.ext",
        "(эта группа (files) полезна для выбора отдельных файлов или уже удалённых файлов)"
    ],
    "dirs": [
        ["Имя каталога", "Расширение файла, Рекурсивный обход подкаталогов по умолчанию = ", true, "(Необязательно)Исключить каталог"],
        ["", ".txt", false], //выберет только .txt файлы в корневом каталоге Dropbox
        ["Photos", ".jpg"], //.jpg файлы из каталога Photos и всех его подкаталогов
        ["", ".doc", true, "Books"], //все файлы .doc, кроме находящихся в каталоге с именем "Books"
        ["", ""], //все файлы
    ]
}

Возможно кто-нибудь когда-нибудь напишет скрипт (с названием вроде authorize_in_dropbox.py), который автоматически создаст файл config.json с уже прописанными значениями для этих параметров...

Но пока что придётся их прописать вручную:

  • "AToken" можно получить посредством создания своего приложения на Dropbox и нажатия на кнопке Generate (access token) на странице приложения.
  • "_subject_uid" можно вытащить из url-адреса после нажатия на пункт меню "Предыдущие версии" (правый клик на любом файле в вашем Dropbox) и "Cookie" через Сеть в Инструментах разработки (зайдя на любую страницу домена dropbox.com после успешной авторизации) в Firefox или другом веб-браузере.

(Небольшое пояснение по вопросу "а зачем вообще этому скрипту нужны Cookie из браузера": дело в том, что API Dropbox'а не позволяет получать информацию о том, какой пользователь изменил файл [и с какого устройства], а вёб-интерфейс позволяет (и на страничке с предыдущими версиями файла выводится, например, такой текст: 9:42 PM Изменено пользователем Alexander Tretyak.), поэтому данный скрипт берёт и объединяет информацию из двух мест: предыдущие версии файлов получает непосредственно через API, а [текстовое] описание изменений [описание для каждой ревизии] берёт с вёб-страницы истории (на dropbox.com) соответствующего файла.)

Почему каталог с историей файлов называется .-?

Ну, я не смог подобрать имя каталога на английском, которое бы мне понравилось.

К тому же, мне нравится символьная запись (например: & вместо И, | вместо ИЛИ) тем, что она "языко-нейтральна" и её не нужно переводить.

А смысл выбора названия .- поясняется достаточно просто:

Когда я сохраняю новую версию файла в той же папке, то мне нравится добавлять в конец его имени символ +, то есть, получается что-то вроде:

file.txt
file+.txt
file++.txt

Чем больше плюсов, тем новее версия файла. Соответственно, если бы самая новая версия была без плюсов, предыдущие можно было бы обозначать минусами (правда, при этом пришлось бы переименовывать все предыдущие файлы при добавлении новой версии):

file--.txt
file-.txt
file.txt

Следуя сходной логике, каталог, который хранит предыдущие версии файла, можно назвать по имени файла, добавив в конец минус: file.txt-.

А так как текущий каталог принято обозначать точкой (.), то .- означает каталог с историей текущего каталога.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.