Har en setup där jag har en dator som delar ut sin disk över samba. Jag upptäkte att man med hjälp av gio kan hitta mountpointen men jag lyckas inte flytta filen med gio.
Skriptet ska man använda med nautilus-actions. Dvs högerklicka på filen välj "flytta till zeus" eller vad jag väljer att kalla det.
Vad gör jag fel? FInns det något annat sätt att flytta filer?
Kod: Markera allt
#!/usr/bin/python
import os
import sys
import gio
import re
vm=gio.VolumeMonitor();
mounts=vm.get_mounts();
# first identify correct mount point
for mount in mounts:
if mount.get_name()=="disk1000 on zeus":
zeus=mount
if not 'zeus' in locals():
# no mount
print 'no mount'
exit(1)
zeus=zeus.get_root()
dirs=zeus.enumerate_children(gio.FILE_ATTRIBUTE_STANDARD_NAME)
for dir in dirs:
if dir.get_name()=='Serier':
zeusserier=zeus.get_child('Serier')
childs=zeusserier.enumerate_children(gio.FILE_ATTRIBUTE_STANDARD_NAME)
myseries=[];
for child in childs:
myseries.append(child.get_name())
print child.get_name()
#got all available series from the server
myfilename=sys.argv[1]
myfile=myfilename.split('.')
#find out which season
for f in myfile:
if re.match('^[S][0-9][0-9][E][0-9][0-9]',f):
idx=myfile.index(f)
season=int(f[1:3])
break
if re.match('^[0-9][x][0-90-9]',f):
idx=myfile.index(f)
season=int(f[0])
break
if not 'season' in locals():
print 'cant parse season episode'
exit(1)
name=' '
name=name.join(myfile[0:idx])
for serie in myseries:
if serie.lower()==name.lower():
series=serie
if not 'series' in locals():
# could not find the series
print 'no series'
exit(1)
#Found both season and series
dest=zeus.get_uri()+'Serier'+'/'+series+'/'+'Season '+str(season)+'/'
print dest
dest=gio.File(uri=dest)
myfile=gio.File(uri=os.getcwd()+'/'+sys.argv[1])
print myfile
myfile.copy(dest,flags=gio.FILE_COPY_OVERWRITE)
jag hittade kommandot gvfs-copy som gör det jag vill