Linux для всех

индекс
247,21

Загрузка файлов в Dropbox в один клик

Хабраюзер alternativshik по мотивам моего вчерашнего топика про загрузку изображений на ImageShack в один клик написал про загрузку файлов в Dropbox, но недостаток кармы не позволяет ему опубликовать статью самостоятельно. Далее идет его текст.

Предлагаю на всеобщее обозрение версию того, как в 1 клик бросать файлы на Dropbox. Особо не пинайте — скрипт писался для себя, любым дополнениям и исправлениям буду только рад. Так как я использую KDE все описанное справедливо и работает именно там. Если охота прикрутить к другому DE, чем смогу помогу. Оговорюсь также, что скрипт написан не мной, а bers, мной были внесены некоторые исправления и дополнения. Работает в Дельфине.

Собственно, сам скрипт:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
import ossys
 
DPDIR = 'полный путь к папке Public Дропбокса на Вашем компьютере'
ID = здесь Ваш id на Дропбоксе
 
if len(sys.argv) > 1 and os.path.isfile(sys.argv[1]):
    os.popen('cp -f %s %s' % (sys.argv[1], DPDIR))
    link = 'https://dl.getdropbox.com/u/%s/%s' % (ID, sys.argv[1].split('/')[-1])
    os.popen('kdialog --msgbox "Ссылка скопирована в буфер обмена:\n%s"' % link)
    os.system('dbus-send --print-reply --dest=org.kde.klipper \
        /klipper org.kde.klipper.klipper.setClipboardContents string:"%s"'
 % link)
else:
    os.popen('kdialog --error "Выберите файл!"')

Поместите его в удобное для Вас место, а мы пока продолжим.

Делаем пункт контекстного меню.



Для этого (напомню — KDE4) создаем файл по адресу: /usr/share/kde4/services/ServiceMenus/ с именем, например, dropbox.desktop (имя файла вообще говоря может быть любым *.desktop). Ниже прикладываю содержимое данного файла:
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin,all/allfiles
Actions=DropboxURL
X-KDE-Priority=TopLevel

[Desktop Action DropboxURL]
Name=Share on DropBox
Icon=/usr/share/icons/Crystal/16x16/actions/down.png
Exec=/usr/bin/dropbox.py "%u" %d

Icon — может быть любая иконка на ваш вкус.
Exec — путь к скрипту.

Собственно, все. Можно кликать на любом файле и отправлять на Дропбокс…

Повторюсь: автор топика — alternativshik.
+32
18 августа 2009, 22:08
35

комментарии (24)

0
Bers #
можно попробовать достучаться до буфера обема через qt
+2
alternativshik #
Для тех, кто не использует Kliper исправление:
строку: os.system('dbus-send --print-reply --dest=org.kde.klipper \
/klipper org.kde.klipper.klipper.setClipboardContents string:"%s"' % link)
необходимо заменить на
os.popen(«echo '%s' | xsel -b -i» % link)
0
snnwolf #
Могу ошибаться: наверно вместо xsel лучше использовать xlip. Просто xsel в моей системе я не обнаружил, по крайней мере из каропки (open SuSE 11.1)
0
oWeRQ #
В убунте равно наоборот.
+1
aim #
думаю что стоит пользователю alternativshik добавить кармы…
–2
qwertysx #
Кто нибудь в курсе как в виндовс добавляется подобный пункт в конт. меню.
0
IGHOR #
Добавляется, я пару месяцев назад написал плагин для Windows:
wiki.getdropbox.com/DropboxAddons/DropBoxPlugin
Он написан на Qt4, если есть энтузиасты, могу исходником поделиться, чтобы на линухе потестили.
0
qwertysx #
Спасибо, но мне главное добавить любой пользовательский пункт в меню, а не сама загрузка в дропбокс
+5
IGHOR #
Хорошо, помогу в этом :)
Нужно добавить в реестр ветку с параметрами, например из *.reg файла:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\SomeNameOfMenu]
@=«Текст меню»
[HKEY_CLASSES_ROOT\*\shell\SomeNameOfMenu\command]
@=«С:\\Адрес\\Файла\\Запуска.exe \»%L\""

По нажати пункта меню будет выполнена программа «Запуска.ехе» с параметром полного пути файла.
–1
qwertysx #
Вот за это вам огромное спасибо =)
Правда сначала не получалось т.к. хабрапарсер заменил кавычки.
0
dals #
Был бы признателен, получив письмо с исходниками на ящик dmitry.seredinov(*)гмэйл.ком
Весьма любопытно, как вы реализовали. Я пару месяцев назад набрасывал, однако из-за некоторых причин покуда не закончил свою поделку под QT4 :)
Спасибо.
+1
mechmind #
А вот и небольшой скрипт для useraction Krusader'а второй версии:

/usr/local/bin/dropbox.py start ; for i in %aList("Selected")% ; do k="/path/to/Public/directory/`basename "$i"`" ; ln -s "$i" "$k" ; list="$list `/usr/local/bin/dropbox.py puburl "$k"`" ; done ; echo -n $list | xclip -selection clipboard

Этот экшн создает симлинки на выделенные в активном окне файлы и копирует ссылки на них в буфер обмена.
Использует официальный Dropbox CLI, а так же xclip.
+2
alternativshik #
Спасибо всем за проявленный инетерес и дополнения! Кстати, это идея про симлинки…
+2
axis #
Два клика получилось!
0
spxnezzar #
а какие зависимости требуеются? ибо у меня валиться скрипт:
>NameError: name 'os' is not defined
0
Lolka #
Спасибо :) Прекрасная штука!
0
alternativshik #
Пожалуйста! =)
0
alternativshik #
Проверьте внимательно скрипт. Для os ничего не надо… Проблема либо в нем либо в Вашей версии питона.
0
AracooL #
Правильнее статья будет звучать так «Загрузка файлов в Dropbox в ДВА клика» :)
0
MaxSergeev #
:) Нажимаешь правой кнопкой и не отпуская дожидаешься выпадения меню, далее подводишь курсорчик на соответствующий пункт и отпускаешь.

Ровно 1 клик ;).
0
MaxSergeev #
Ну лошара, это ж у меня в ТС так :(.
+1
Mad_Fish #
Заметил также пункты от subversion. Что за софтинка?
0
alternativshik #
kdesvn
+1
oWeRQ #
Идея хорошая, но реализация странная. Вот немного переработаный вариант:
— скрипт переписал на шел и добавил кавычки(вдруг в имени файла пробел, url копируется с пробелом, надо профиксить)
— вместо kdialog notify-send(показывает навные оповещения в гноме и kde4)
— копирование в буфер через xsel
— иконка(go-down) берется из темы

положить в ~/.kde/share/kde4/services/ServiceMenus
dl.getdropbox.com/u/153097/dropbox.desktop

положить в ~/bin
dl.getdropbox.com/u/153097/dropbox.sh

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.