[Löst]gio + flytta filer till fjärrdator

Här diskuteras programmering och utveckling
skaggapa
Inlägg: 154
Blev medlem: 29 jun 2007, 20:21
OS: Ubuntu
Utgåva: 18.04 Bionic Beaver LTS

[Löst]gio + flytta filer till fjärrdator

Inlägg av skaggapa »

Tjo!

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)
edit:
jag hittade kommandot gvfs-copy som gör det jag vill

Återgå till "Programmering och webbdesign"