File | Date | Author | Commit |
---|---|---|---|
[-tasks-] | unknown | ||
README.md | unknown | ||
get_last_revs.py | 2024-12-26 |
![]() |
[3cf325] Bypass connection errors and HTTP errors |
update_.-.cmd | 2017-09-14 |
![]() |
[566e9c] . |
update_.-.py | 2024-12-26 |
![]() |
[3cf325] Bypass connection errors and HTTP errors |
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).
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
]
}
"AToken"
, "Cookie"
and "_subject_uid"
?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.)
.-
?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"
["", ""], //все файлы
]
}
"AToken"
, "Cookie"
и "_subject_uid"
?Возможно кто-нибудь когда-нибудь напишет скрипт (с названием вроде 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-
.
А так как текущий каталог принято обозначать точкой (.
), то .-
означает каталог с историей текущего каталога.