Pull to refresh
4
0

Пользователь

Send message
Как вариант — завести специальную папку ( например с именем public ).
Тогда ссылки на файлы внутри этой папки можно получить вот так:

(DIR=$(cat ~/.config/yandex-disk/config.cfg | awk '/dir/{split($0, a, "="); gsub("\"","",a[2]); print a[2]}'); for i in $DIR/public/*; do echo $(basename $i); yandex-disk publish $i | grep -E "^http"; echo ""; done;)


Это однострочный скрипт для bash. Можно выполнять из любой папки. Выводит сслыки на файлы в папке public, которая расположенна в яндекс-папке текущего пользователя.
Внимание, наличие папки public не проверяется.
ЧЯДНТ
[svon@arch Ydisk]$ cat ~/.config/yandex-disk/config.cfg | grep dir
dir="/home/svon/Ydisk"

[svon@arch Ydisk]$ pwd
/home/svon/Ydisk

[svon@arch Ydisk]$ ls
1.jpg  1.png  arch_wallpaper0.png  IMG_29082013_032219.png  

[svon@arch Ydisk]$ rm 1.jpg 

[svon@arch Ydisk]$ ls
1.png  arch_wallpaper0.png  IMG_29082013_032219.png 

[svon@arch Ydisk]$ yandex-disk sync --read-only
Starting daemon process...Done
Syncing directory: /home/svon/Ydisk
Directory synced                                      

[svon@arch Ydisk]$ ls
1.png  arch_wallpaper0.png  IMG_29082013_032219.png  




Демон не поднят. Синхронизирую вручную.
А можно и отдельно сделать.
Вот что у меня получилось.
Оболочка (Tkinter)
#!/usr/bin/python2.7


from Tkinter import *
from tkFileDialog import *
import subprocess

def yandex_disk(Command,  Option):
	print Command, Option
	check = subprocess.check_output(["yandex-disk", "%s" % Command, "%s" % Option]).replace("\r","")
	text.insert(END, "%s" % check)
	buttonstate()

def buttonstate():
	check = subprocess.check_output(["ls -l /tmp/yandex-disk* | grep daemon | wc -l"], shell=True).replace("\n", "")
	print check
	if (check != "0"):
		button3['state']=NORMAL
		button4['state']=NORMAL
		button5['state']=NORMAL
		button2['state']=DISABLED
	else:
                button3['state']=DISABLED
                button4['state']=DISABLED
                button5['state']=DISABLED
                button2['state']=NORMAL
	

root = Tk()
root.title("Yandex-Disk")
frame = Frame(root)
frame.pack()

file_opt = options = {}
options['defaultextension'] = ''
options['filetypes'] = ''
options['initialdir'] = '/home/'
options['initialfile'] = '*.*'
options['parent'] = root
options['title'] = 'Select File'


button1 = Button(frame, text="sync", width=10, command=lambda: yandex_disk("sync",""))
button1.grid(row=0, column=0)

button2 = Button(frame, text="start", width=10, command=lambda: yandex_disk("start",""))
button2.grid(row=1, column=0)

button3 = Button(frame, text="publish", width=10, command=lambda: yandex_disk("publish",askopenfilename(**file_opt)))
button3.grid(row=2, column=0)

button4 = Button(frame, text="status", width=10, command=lambda: yandex_disk("status",""))
button4.grid(row=3, column=0)

button5 = Button(frame, text="stop", width=10, command=lambda: yandex_disk("stop",""))
button5.grid(row=4, column=0)

buttonstate() 

text = Text(frame, width=80, height=10)
text.grid(row=0, column=1, rowspan=5)

root.mainloop()




Хотел было еще сделать радиокнопки, для каждой из опций, да надоело. Мне консоль роднее.
Посмотрел, и правда есть. Я какой-то не внимательный последнее время, перед тем, как писать свой PKGBUILD, глядел же в AUR.
Прошу меня извинить, в выложенном PKGBUILD сумма посчитана только для amd64 пакетов.
Поправил:
PKGBUILD
pkgname=yandex.disk
pkgver=0.1.1.279
pkgrel=1
pkgdesc="Yandex.Disk console client."
url=http://disk.yandex.ru/
arch=(x86_64 i386)
makedepends=(coreutils tar)
license=(custom)

if test "$CARCH" == x86_64;
then
  ARCHT="amd64"
  md5sums=('e795bb2d91259eada77c746ceb26a9f3')
else
  ARCHT="i386"
  md5sums=('c8ca93e7ae951db2601074336a4c7563')
fi

source=("http://repo.yandex.ru/yandex-disk/yandex-disk_latest_$ARCHT.deb")

build() {
        tar xf data.tar.gz
}
package() {
        mv usr/ $pkgdir
}


Возник следующий вопрос. Вот допустим я загружаю файл на сервер. Синхронизирую, он появляется в моей yandex-папке. Далее, я его из этой папки удаляю. На сервере он все еще есть, и удалится только после очередной синхронизации, но, допустим, я передумал, и хочу синхронизироваться таким образом, чтобы файл снова появился в папке. Как этого добиться?

yandex-disk sync --overwrite

Не помогает, причем мало того, после такой синхронизации файл также удаляется с сервера.

Ну, и поделюсь своим PKGBUILD, для Арчеводов.
PKGBUILD
pkgname=yandex.disk
pkgver=0.1.1.279
pkgrel=1
pkgdesc="Yandex.Disk console client."
url=http://disk.yandex.ru/
arch=(x86_64 i386)
makedepends=(binutils coreutils)
license=(custom)

if test "$CARCH" == x86_64; 
then
  ARCHT="amd64"
else
  ARCHT="i386"
fi

source=("http://repo.yandex.ru/yandex-disk/yandex-disk_latest_$ARCHT.deb")
md5sums=('e795bb2d91259eada77c746ceb26a9f3')
 
build() {
	tar xf data.tar.gz	
}
package() {
	mv usr/ $pkgdir
}



Есть еще программа DAVID.
Гляньте галерею, меня особо впечатлила оса.
Программа разрабатывается давно, пару лет назад игрался, очень неплохие модели получались.

Information

Rating
Does not participate
Registered
Activity