#1676 Le 02/04/2013, à 17:49
- caracolito
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Bonjour,
J'aimerai pouvoir utiliser ce script Python en mode fenetre avec un truc comme Zenity, mais je suis incompetent.
Voici le script qui consiste a transformer un fichier .csv en au autre utilisable par le logiciel homebank
Une fenetre qui me demanderai le fichier a convertir, le fichier de definitions et le fichier sortie
selon la syntaxe du script python ci-apres.
Merci pour votre aide.
Pierre
Convert_x.x.x.py [import.csv] [output.csv] [import.def] ____
[import.csv] = ("bank".csv) file exported from bank
[output.csv] = (homebank.csv) file to be created
[import.def] = ("bank".def) definition-file "bank" <> "Homeb
et le script ci-dessous que j'ai récupéré je ne sais plus ou
#!/usr/bin/env python
#
# Convert_v1.3
# Copyright (c)Ton van Twuyver @ <profiler1234@gmail.com>
#
# This script is written with "HomeBank" in mind. <http://homebank.free.fr>
# Purpose: to convert any Bank-file.csv into Homebank.csv by means of a definition-file.
#
# Convert.py is written in Python(2.6) and free software,
# It is distributed in the hope that it will be useful, but comes WITHOUT ANY WARRANTY;
# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
# You can redistribute it and/or modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# GNU General Public License @ <http://www.gnu.org/licenses/>.
#
import os
import sys
import re
print
#### CsvConvert####################################
class CsvConvert:
""" reads and converts [import.csv] with [definition.def] rules """
def __init__(self, fromfile_, deffile_, tofile_, logfile_):
# parse definition-file and create conversion-lists
def_eof = False
n = 0 # (definition line counter)
fld = 0 # (valid fields present)
d_old = ''
hb = [] # homebank conversion-list
ip = [] # import conversion-list
Hdl = 0
date = ''
code = ''
posneg = ''
hd_acc_ln = []
hd_bal_ln = []
hd_len = 0
while not def_eof:
# Definition-file PARSER --------------------------------------
n += 1 # line count
def_line = deffile_.readline()
# def_eof
if len(def_line) < 1:
def_eof = True
def_line = def_line.rstrip('\n')
d = def_line.split(';')
# valid definition header line length is 3
if (len(d) == 3) and (d[0] == 'H'):
# Extract Details # of header-lines to be skiped
Hdl = int(d[2])
# valid definition field line length is 5
if (len(d) == 5):
# definition line contains already defined field -> improper "not-in-use" data ?
if (d_old == d[0]) and (int(d[2]) < 0):
print 'Error in definition-file-record[%s]: field already defined !'% n
logfile_.write('Error in definition-file-record[%s]: field already defined ! \n'% n)
else:
# Extract Details for Date,Paycode,Sign:
if (d[2].rstrip() != ''):
# Date
if int(d[0]) == 0: date = d[4]
# PayCode
elif int(d[0]) == 1:
code = d[4]
# Code-detail content needs checking:
# starts with N-items of bank-code, followed by N-items of homebank-code
# so, the total should always be an even-amount of items !!
cod_ = (d[4].split(','))
Even = len(cod_)-(len(cod_)/2)*2 # this is zero if Even
if (Even != 0):
print 'Error in definition-file: paycode detail-data ncorrect, Not correct amount of items'
logfile_.write('Error in definition-file: paycode detail-data Incorrect, Not correct amount of items \n')
# Sign (Amount)
elif int(d[0]) == 5: posneg = d[4]
# Extract Details for Header [line-number,item]
if int(d[2].rstrip()) <= -2:
# store last header-line
hd_len = abs(int(d[2]))
# account-number
if int(d[0]) == 7: hd_acc_ln = d[4].split(',')
# balance
elif int(d[0]) == 8: hd_bal_ln = d[4].split(',')
# count valid fields def.
if (int(d[2]) > -1): fld = fld + 1
# create conversion-lists
hb.append(int(d[0]))
ip.append(int(d[2]))
d_old = d[0] # remember curr. field-data
# rest is invalid definition line
print hb
print ip
# parse import.csv
n = 0 # (import line counter)
imp_eof = False
acc_old = ''
bank = { # All known accounts
'0123456789':'Bank1',
'0987654321':'Bank2'
}
while not imp_eof:
# Import(Bank)-file PARSER --------------------------------------
n += 1 # line count
line = fromfile_.readline()
# eof (import)
if len(line) == 0:
imp_eof = True
break
# Skip record-lines in Header
if (Hdl < n):
# Cleanup record-line
line = line.rstrip('\r\n') # get rid of CRLF
line = line.replace("'",'"') # harmonize all quotes ""
ln = len(line)
# problems encountered spliting lines:
# 1 Some (not all) fields are with quotes
# 1a text between quotes
# 1b numbers between quotes
# 2 comma separated fields contains comma (e.g. in amounts)
CsvConvert.fail = 0
# Find out Separator type and split
line_c = line.replace(',','')
line_s = line.replace(';','')
if len(line_c) > len(line_s): # semicolon separator (comma's in field allowed)
rec = line.split(';')
else: # comma separator (comma's in field NOT allowed)
# Find out if quotes are present, and in pairs
line_q = line.replace('"','')
qt = (len(line)-len(line_q))
# Check pairs
if (qt-2*int(qt/2)) != 0:
CsvConvert.fail = n # Error => Store record-/line-number
logfile_.write('Error in record[%s]: Quotes not in pairs\n'% n)
else:
# if between quotes a comma is present, change to '.'
# remove quotes after checking
Quotes = True
print " " + line
while Quotes:
ln = len(line)
q1 = line.find('"')
q2 = line.find('"',q1+1)
#print q1,q2
if (q1 > 0) and (q2 > 0):
l1 = line[q1:q2+1].replace(",",'.')
line = line[0:q1] + l1.replace('"','') + line[q2+1:ln]
else:
Quotes = False
rec = line.split(',') # Now it is safe to split
# Cleanup all quotes left behind
for i in range(len(rec)):
rec[i] = rec[i].strip('"')
# Header present (ONLY for single account file)
if hd_len > 0:
# accountnumber
if n == int(hd_acc_ln[0]):
n_ac = int(hd_acc_ln[1])
# filter out only digits (account-number)
# and make accountnumber 10 char.long
ac = re.sub('[^0-9]','',rec[n_ac])
if len(ac) < 10: ac = (10 - len(ac))*'0' + ac
#print "<>", ac, bank[ac]
tofile_.write('%s;%s\n'% (ac,bank[ac]))
# balance (for future use)
if n == int(hd_bal_ln[0]):
n_bc = int(hd_bal_ln[1])
bc = rec[n_bc]
bc = ParseAmount(bc)
#print "<>", float(bc)
# Check account-record-length in relation to def, log only error outside header
if ((fld >= len(rec)) or (max(ip) >= len(rec))):
CsvConvert.fail = n # Error => Store record-/line-number
if (n > hd_len):
logfile_.write('Error in record[%s]: Field(s) missing\n'% n)
if (CsvConvert.fail == 0): # >>>>> skip record with error !
# Construct Homebank records
hb_old = 0
record = ''
am = ''
for j in range(len(hb)):
h = hb[j]
b = ip[j]
rec_new = rec[b]
# ________________conversions
# "date"
if (h == 0):
dd = date.find('DD')
mm = date.find('MM')
yy = date.find('YYYY')
rec_new = '%s-%s-%s'% (rec[b][dd:(dd+2)],rec[b][mm:(mm+2)],rec[b][yy:(yy+4)])
# "paycode"
if (h == 1):
rec_new = ''
# empty code
if (code == ''):
print '>>>>> Empty Paycode: ' + rec[b]
logfile_.write('Empty Paycode "%s" in record[%s]\n'% (rec[b],n))
else:
# Unknown paycode (Not in .def)
if code.find(rec[b]) < 0:
print '>>>>> Unknown Paycode: ' + rec[b]
logfile_.write('Unknown Paycode "%s" in record[%s]\n'% (rec[b],n))
# Known paycode (present in def)
else:
k = 0
cd = code.split(',')
offset = len(cd)/2
for c in cd:
if c == rec[b]: rec_new = cd[k + offset]
k += 1
# "amount"
if (h == 5):
#print "<>", rec[b]
rec_new = ''
# Amount
if (am == ''):
am = rec[b]
am = ParseAmount(am)
if not ParseAmount.valid:
print 'Error in record[%s]: Amount-Field corrupt\n'% n
logfile_.write('Error in record[%s]: Amount-Field corrupt\n'% n)
break
# Sign
elif (posneg != ''): # Dualline def.
pn = posneg.split(',')
if rec[b] == pn[0]: am = '-%s'% am
elif rec[b] == pn[1]: pass
rec_new = am
# No-sign
if posneg == '': rec_new = am # Single line def.
# ___________________assemble output-record
# skip if this field indicates [Not used] or [Header]
if (ip[j] >= 0):
# [date]
if (h == 0):
record = rec_new
# [paymode]
elif (h == 1):
record = '%s;%s'% (record,rec_new)
# [info -> offset-account]
elif (h == 2):
# filter out only digits (account-number)
# and make accountnumber 10 char.long
rec_new = re.sub('[^0-9]','',rec_new)
if len(rec_new) < 10: rec_new = (10 - len(rec_new))*'0' + rec_new
if (int(rec_new) > 0):
# if (len(rec_new) != 0) and (int(rec_new) > 0):
record = '%s;%s'% (record,rec_new)
else:
record = '%s;'% record
# [payee]
elif (h == 3):
record = '%s;%s'% (record,rec_new)
# [description]
elif (h == 4):
# Combine multiple "not empty" description Bank-records
if (hb_old == h):
if (len(rec_new) != 0):
record = '%s_%s'% (record,rec_new)
else:
pass
# First description Bank-record
else:
hb_old = h
if (len(rec_new) != 0):
record = '%s;%s'% (record,rec_new)
# empty
else:
record = '%s;'% record
# [amount]
elif (h == 5):
if (len(rec_new) != 0):
record = '%s;%s'% (record,rec_new)
else:
pass
# [category]
elif (h == 6):
record = '%s;%s'% (record,rec_new)
# [account]
# NOT IMPLEMENTED IN HOMEBANK CSV-import
# multi accounts import: sequential account listing
# at top of accountlist extra line with account-name
# format: account-number; "Homebank account-name"
# Needs Homebank 4.3 "import.c" adaptation (TvT(c)2010)
elif (h == 7):
# filter out only digits (account-number)
# and make accountnumber 10 char.long
rec_new = re.sub('[^0-9]','',rec_new)
if len(rec_new) < 10: rec_new = (10 - len(rec_new))*'0' + rec_new
# detect next account
if (rec_new != acc_old):
acc_old = rec_new
try:
#print "<>", rec_new,bank[rec_new]
tofile_.write('%s;%s\n'% (rec_new,bank[rec_new]))
except KeyError:
#print 'Unknown/New account number'
tofile_.write('%s;%s\n'% (rec_new,'New_account'))
# [balance]
# NOT IMPLEMENTED IN HOMEBANK CSV-import
# Listed Balance value before/after transaction ?
# Needs further investigation and Homebank 4.3 "import.c" adaptation
# TODO Needs Homebank 4.3 "import.c" adaptation
elif (h == 8):
# For future use, now just print available Balance-value ....
bal = re.sub('[^0-9.-]','',rec_new)
print float(bal) + float(am)
# Field not available [-1]
elif (h < 7) and (ip[j] == -1):
record = '%s;'% record
#print record
tofile_.write('%s\n'% record)
#### ParseAmount ####################################
def ParseAmount(am):
""" check and harmonize grouping and decimal-point
outputs amount and valid-flag(true/false)
"""
ParseAmount.valid = True
# filter
am = re.sub('[^0-9,.-]','',am)
# integers(any number).fraction(0..2)
# find decimal point
frac1 =len(am)-am.find('.')
frac2 =len(am)-am.find(',')
# No grouping & No fraction / decimal-point
if (frac1 == frac2):
am = '%s.00'% am
# xxx,xxx,xxx.xx comma-grouping, dot-decimal
elif (frac1 < 4) and (frac1 > 0):
am = am.replace(',','')
# xxx.xxx.xxx,xx dot-grouping, comma-decimal
elif (frac2 < 4) and (frac2 > 0):
am = am.replace('.','')
am = am.replace(',','.') # harmonize decimal-point
# grouping & No fraction / decimal-point
else:
am = am.replace(',','')
am = am.replace('.','')
am = '%s.00'% am
# check validity result
if (len(am) - am.find('.')) != 3:
ParseAmount.valid = False
return am
#### Convert ##########################################
class convert:
""" Converts <unknown> csv-file """
# 1- where are the csv-files? => commandline
# 2- Convert via definition-file
# 3- what is csv-separator: comma, semicolon ?
# 4- Skip "corrupted" bank-file records
# 5- Include multi-accounts in output.csv (NOT IMPLEMENTED IN HOMEBANK CSV-import)
# 6- Include balance info in output.csv (NOT IMPLEMENTED IN HOMEBANK CSV-import)
# 7- Log all conversion process-items
def __init__(self):
error = 'Input error!____ Type ./Convert_x.x.x.py [import.csv] [output.csv] [import.def] ____\n\n\
[import.csv] = ("bank".csv) file exported from bank\n\
[output.csv] = (homebank.csv) file to be created\n\
[import.def] = ("bank".def) definition-file "bank" <> "Homebank"\n\n\
Logging conversion process -> log.txt\n'
homebank = ['date','paymode','info','payee','description','amount','category'] # 4.3
if (len(sys.argv) != 4):
print error
exit(1)
if os.path.isfile(sys.argv[1]):
fromfile = open(sys.argv[1],'r')
else:
print '\nInput error!____ import.csv: ' + sys.argv[1] + ' does not exist / cannot be opened !!\n'
exit(1)
try:
tofile = open(sys.argv[2],'w')
except:
print '\nInput error!____ output.csv: ' + sys.argv[2] + ' cannot be created !!\n'
exit(1)
if os.path.isfile(sys.argv[3]):
deffile = open(sys.argv[3],'r')
else:
print '\nInput error!____ import.def: ' + sys.argv[3] + ' does not exist / cannot be opened !!\n'
exit(1)
logfile = open('log.txt', 'w')
logfile.write('Opening import %s\n' % fromfile)
logfile.write(' export %s\n' % tofile)
logfile.write(' definition %s\n' % deffile)
CsvConvert(fromfile, deffile, tofile, logfile)
logfile.write('Closing files\n')
logfile.close()
fromfile.close()
tofile.close()
deffile.close()
if __name__ == "__main__":
convert()
La mente es igual que un Paracaidas, Solo sirve si se abre . A.Eistein
Hors ligne
#1677 Le 07/04/2013, à 12:37
- FelixP
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Bonjour !
J'ai créé pour l'instant deux scripts.
Le premier permet de créer facilement et proprement, un périphérique (usb) bootable pour installation de Win®.
Le second permet, en se basant sur la page de doc-ubuntu.fr, de "décompresser" une iso Linux (en particulier Ubuntu) pour la personnaliser, et la recompresser. Il n'est pas fini, par contre.
Les deux sont encore en "bêta" car il y a quelques problèmes à régler pour qu'ils soient propres, et disponibles ici.
Si ils sont rajoutés à la doc, je m'engage à les actualiser lorsque des changements sont faits ! (je m'en occupe régulièrement… )
Bon, côté license, je m'en fous un peu pour le moment… Disons (cc-by-sa) ?
Linuxement,
Félix
Dernière modification par FelixP (Le 07/04/2013, à 12:37)
Envoyé depuis mon navigateur libre sous mon os libre.
Manjaro (basé Arch) + Cinnamon, et Firefox-Nightly 44.0 !
Voyez mes astuces ici : http://doc.ubuntu-fr.org/utilisateurs/felixp
Hors ligne
#1678 Le 07/04/2013, à 14:06
- Hizoka
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
pour la creation d'iso perso, il existe deja 2 tres bon logiciels sur ce forum, un de frafa et un de smo ( http://forum.ubuntu-fr.org/viewtopic.php?id=412528 )
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#1679 Le 07/04/2013, à 14:08
- FelixP
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Okay, je vois ça… Mais bon, j'aime bien mon script :° (Mais effectivement, pas la peine de le rajouter !)
Envoyé depuis mon navigateur libre sous mon os libre.
Manjaro (basé Arch) + Cinnamon, et Firefox-Nightly 44.0 !
Voyez mes astuces ici : http://doc.ubuntu-fr.org/utilisateurs/felixp
Hors ligne
#1680 Le 16/04/2013, à 10:29
- dopsi
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Salut à tous,
Voici un script utile pour télécharger et installer des paquetages LaTeX depuis les miroirs de ctan.org
#!/bin/bash
# Téléchargement et installation de packages LaTeX
# par dopsi
if [ $# -eq 1 ]
then
echo "Téléchargement et installation de $1"
echo "Téléchargement depuis ctan.org..."
wget "[url]http://mirrors.ctan.org/macros/latex/contrib/$1.zip[/url]">/dev/null 2>&1
if [ $? -ne 0 ]
then
echo "$0: Erreur de téléchargement (0)"
exit
fi
echo "Décompression des fichiers..."
unzip "$1.zip">/dev/null 2>&1
echo "Déplacement des fichiers dans texmf..."
mv "$1/*.dvi" "$1/*.ps" "$1/*.pdf" "/usr/local/share/texmf/doc/latex/$1/.">/dev/null 2>&1
mv "$1/" "/usr/local/share/texmf/tex/latex/.">/dev/null 2>&1
echo "Suppression des fichiers téléchargés..."
rm "$1.zip">/dev/null 2>&1
echo "Mise à jour de la base de données..."
texhash>/dev/null 2>&1
elif [ $# -eq 2 ]
then
case $1 in
"-d")
echo "Téléchargement et installation de $2"
echo "Téléchargement depuis ctan.org..."
wget "[url]http://mirrors.ctan.org/macros/latex/contrib/$2.zip[/url]">/dev/null 2>&1
if [ $? -ne 0 ]
then
echo "$0: Erreur de téléchargement (-d)"
exit
fi
;;
"-i")
echo "Installation $2"
echo "Décompression des fichiers..."
unzip "$1.zip">/dev/null 2>&1
echo "Déplacement des fichiers dans texmf..."
mv "$2/*.dvi" "$2/*.ps" "$2/*.pdf" "/usr/local/share/texmf/doc/latex/$2/.">/dev/null 2>&1
mv "$2/" "/usr/local/share/texmf/tex/latex/.">/dev/null 2>&1
echo "Mise à jour de la base de données..."
texhash>/dev/null 2>&1
;;
"-n")
echo "Téléchargement et installation de $2 (sans suppression de l'archive téléchargée)"
echo "Téléchargement depuis ctan.org..."
wget "[url]http://mirrors.ctan.org/macros/latex/contrib/$2.zip[/url]">/dev/null 2>&1
if [ $? -ne 0 ]
then
echo "$0: Erreur de téléchargement (-n)"
exit
fi
echo "Décompression des fichiers..."
unzip "$1.zip">/dev/null 2>&1
echo "Déplacement des fichiers dans texmf..."
mv "$2/*.dvi" "$2/*.ps" "$2/*.pdf" "/usr/local/share/texmf/doc/latex/$2/.">/dev/null 2>&1
mv "$2/" "/usr/local/share/texmf/tex/latex/.">/dev/null 2>&1
echo "Mise à jour de la base de données..."
texhash>/dev/null 2>&1
;;
*)
echo "$0: Usage: ctan-download [-d|-i|-n] <nom package>"
;;
esac
else
echo "$0: Usage: ctan-download [-d|-i|-n] <nom package>"
fi
Pensez à modifier la ligne 6
ltexmf="/usr/local/share/texmf"
et la remplacer par le chemin de votre architecture texmf...
Pour l'éxécuter, sauf avec -d, il faut les droits du super-utilisateur (pour texhash et le déplacement dans le texmf)
Attention, un échec du téléchargement ne veut pas dire que le package n'existe pas peut-être seulement qu'il est situé autre par dans CTAN (je suis désolé de ne pas prendre en compté les exeptions mais il y en a si peu que ça n'est pas la peine), donc jetez un coup d'oeil sur le site avant de jeter l'éponge
Bien à vous
Simon
Hors ligne
#1681 Le 18/04/2013, à 04:35
- linuxienubuntiste
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Je m'en remet à vous, scripteurs fous. J'implore votre aide, qui en plus de me faire gagner un temps précieux, m'évitera de souffrir de TMS. Je dispose de plus d'un millier de fichiers à trier, chacun d'entre eux étant dans un même dossier. Ma demande est j'imagine hyper simple pour un scripteur aguerri, simplement de pouvoir déplacer chacun des fichiers dans un dossier créer avec le nom du fichier qu'il contiendra.
Donc en essayant d’être plus clair, un script qui créera autant de dossiers que de fichiers présent, qui renommera chacun des dossiers avec le nom des fichiers et qui ensuite déplacera les fichiers dans les dossiers.
Merci d'avance pour votre aide, votre temps et de votre savoir.
Hors ligne
#1682 Le 18/04/2013, à 05:07
- pingouinux
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Bonjour,
@linuxienubuntiste #1682
for fic in *;do [[ -d "$fic" ]] && continue; mkdir provi; mv "$fic" provi; mv provi "$fic";done
Dernière modification par pingouinux (Le 18/04/2013, à 05:56)
Hors ligne
#1683 Le 18/04/2013, à 13:02
- clahor
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
bonjour a tous
1000 fichiers dans 1000 dossiers ça fait 1000 dossiers à visionner......bon courage
Hors ligne
#1684 Le 18/04/2013, à 13:23
- Hizoka
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
ca correspond a quoi le provi pingouinux ?
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#1685 Le 18/04/2013, à 13:29
- pingouinux
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
ca correspond a quoi le provi pingouinux ?
C'est un répertoire provisoire. On ne peut pas lui donner le nom définitif, car il existe un fichier de même nom.
- Création du répertoire provi
- Déplacement du fichier dans ce répertoire
- Renommage du répertoire provi avec le nom du fichier
Hors ligne
#1686 Le 18/04/2013, à 13:50
- Hizoka
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
oki, je pensais que ca avait un autre sens
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#1687 Le 18/04/2013, à 17:16
- linuxienubuntiste
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Trop balèze, merci pingouinux. Cela fonctionne parfaitement.
Peut-on faire la même chose mais sans garder l'extension des fichiers ?
Hors ligne
#1688 Le 18/04/2013, à 17:45
- pingouinux
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Peut-on faire la même chose mais sans garder l'extension des fichiers ?
Tout est possible, mais c'est plus cher…:P
Il faut maintenant tester que le répertoire n'existe pas déjà (ce qui serait le cas si par exemple tu avais les fichiers image.jpg et image.gif).
for fic in *
do
[[ -d "$fic" ]] && continue
nom_rep="${fic%.*}"
if [[ -d "$nom_rep" ]]; then
printf "Fichier %s : le répertoire %s existe déjà\n" "$fic" "$nom_rep"
continue
fi
mkdir provi
mv "$fic" provi
mv provi "$nom_rep"
done
Dernière modification par pingouinux (Le 02/06/2013, à 18:03)
Hors ligne
#1689 Le 18/04/2013, à 18:25
- linuxienubuntiste
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Merci beaucoup c'est cool <3
Pingouinux akbar !!!
Hors ligne
#1690 Le 31/05/2013, à 18:07
- zz10
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Bonjour à toutes et tous,
Je me permets de lancer un petit défis aux plus férus codeurs...
Est-ce possible qu'un script aille vérifier sur un de mes forums favoris si il y a un nouveau message que je n'ai pas lu. Si c'est le cas, est-ce possible d'afficher une alerte dans la zone de notification d'ubuntu (sent-notify) ?
Le forum en question si ça peut aider !?
http://www.ice-epinal-forum.com/
Merci d'avance à ceux qui tenteront de relever le défi
@+
Hors ligne
#1691 Le 31/05/2013, à 20:50
- yamo
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
@ZZ10
Il suffit d'avoir un lecteur de flux rss. Il doit en exister des centaines mais par exemple, Thunderbird et IceApe le font.
Stéphane
--
Debian 9 XFCE Xubuntu 16.04.2 - #ubuntu sur freenode
sudo / matrix
Hors ligne
#1692 Le 02/06/2013, à 12:11
- laslack
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Bonjour à tous.
je viens d'installer "pluzzdl" et pour éviter à chaque fois de rechercher les lignes de commande et les copier , j'ai essayé de commencer un script pour exécuter les 2 lignes de commandes nécessaires à la suite.
Je suis allé voir dans différents tutos sur les scripts mais je m'aperçois que je ne sais pas poser le problème logique à résoudre donc à réaliser le chemin ,ce qui me semble la base de tout.
A résoudre:si j'ai bien compris
la commande :"cd ~/Documents/logiciels/pluzzdl-0.9.3/src" ouvre le programme
la commande :"python main.py -v http://................." exécute l'enregistrement.
Si je met les 2 commandes à la suite l'une de l'autre la 2è ne fonctionnera que si l'url est indiquée.
Quel est le raisonnement à imaginer pour arriver à un script pour que après l'ouverture du programme,il y ait une invite à copier l'url et que tant que l'url n'est pas copiée, le déroulement reste en stand by, et quand l'url est copiée ,l'exécution du programme se réalise.
Ce que je cherche pour le moment c'est poser les bases du problème ,qui me permettrons d'essayer d'écrire quelque chose .Si je n'y arrive pas j'appellerai au secours
Merci d'avance
Hors ligne
#1693 Le 02/06/2013, à 14:04
- ljere
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
je pense que c'est à peu prés ce que tu cherches
#!/bin/bash
# par ljere
# chemin de pluzzdl
cd ~/Documents/logiciels/pluzzdl-0.9.3/src
# demander le nom de l'url grâce à zenity
url=$(zenity --entry --title="Pluzzdl" --text="Insérer l'adresse ici:") ; echo $fichier
if [ "$url" == "" ]
then
echo 'vous devez indiquer une adresse'
exit 1
fi
# lancer l'enregistrement
python main.py "$url"
# déplacer le fichier dans un dossier de votre choix
sleep 5
mv *.mkv ~/Téléchargements/
Dernière modification par ljere (Le 02/06/2013, à 14:13)
ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon
Hors ligne
#1694 Le 03/06/2013, à 09:37
- laslack
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
merci, ljere pour ce script,
Cependant ,un petit détail sur la ligne suivant
# lancer l'enregistrement
il faut écrire :python main.py -v au lieu de python main.py
et puis ,la video s'enregistre toujours dans le dossier "src" malgré
mv *.mkv ~/Téléchargements/
Mais ce n'est pas grave.
C'était mon premier essai de script et je n'avait pas penser à "zenity" , il faut que j'explore encore
Merci
Hors ligne
#1695 Le 03/06/2013, à 09:45
#1696 Le 03/06/2013, à 15:07
- ljere
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
le -v sert pour avoir le mode verbeux donc ça ne sert à rien dans le cas d'un script
la vidéo s'enregistre dans le fichier src puis aprés 5 secondes il déplace le fichier dans le dossier cible
pour mon essai j'avais eu un fichier mkv ce n'est peut être pas le cas pour toi
j'ai biensur testé le script avant de te le soumettre chez moi il fonctionne impeccable, mais tu peux en effet le modifier facilement tu as un bon départ
ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon
Hors ligne
#1697 Le 14/08/2013, à 08:35
- enebre
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Bonjour,
J'ai un petit soucis avec un script pour youtube-dl.
Comète n'a pas de problème sur sa machine mais chez moi je n'y arrive pas. J'obtiens ce retour du terminal :
▶ sh yt
yt-K: 21: [: FALSE: unexpected operator
yt-K: 24: [: FALSE: unexpected operator
Moi je n'y connais pas grand chose, alors si quelqu'un(e) pourrais voir ce qui coince à ce script sur xfce... Si "coince" il y a, chez vous aussi ???
le script de Comète: Pour lequel j'ai du changer le YTDL_PATH="$youtube youtube-dl -c -f 18/43/5/17 -t " \ comme sur un autre script de Comète et qui accepte cette ligne
#!/bin/sh
######
## Un script simple utilisant youtube-dl pour regarder, dans son propre lecteur,
## les videos en ligne des sites bien connus...
## 2013 - Morgan LEFIEUX - http://gerard.geekandfree.org
######
DOWNLOAD_DIR="${HOME}/videos"
PLAYER="vlc --play-and-exit --key-quit q --no-video-title-show --network-caching=8192"
YTDL_PATH="${HOME}/apps/youtube-dl -c --max-quality 44 --prefer-free-formats"
WAIT="sleep 6"
#############
FORM=`yad --geometry=360x104 --title="Youtube-dl" --form --field="Entrez l'URL:" \
--field="Conserver la vidéo dans $DOWNLOAD_DIR ?":CHK`
MYURL=`echo $FORM | cut -d '|' -f 1`
KEEPVID=`echo $FORM | cut -d '|' -f 2`
mkdir -p $DOWNLOAD_DIR
if [ -n "$MYURL" -a "$KEEPVID" == "FALSE" ]; then
echo "Patientez quelques secondes votre vidéo va démarrer..."
${YTDL_PATH} -g $MYURL | xargs $PLAYER
elif [ -n "$MYURL" -a "$KEEPVID" == "TRUE" ]; then
echo "Vous avez choisi de conserver cette vidéo dans $DOWNLOAD_DIR après
visualisation.\nPatientez quelques secondes votre vidéo va démarrer..."
FILENAME=`$YTDL_PATH -t --get-filename $MYURL`
$YTDL_PATH -o "$DOWNLOAD_DIR/%(title)s-%(id)s.%(ext)s" \
--no-part $MYURL & $WAIT && $PLAYER "$DOWNLOAD_DIR/$FILENAME"
fi
exit 0
Hors ligne
#1698 Le 14/08/2013, à 08:56
- pingouinux
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
@enebre #1698 :
Je pense que tu aurais dû ouvrir une autre discussion.
Pour ton problème, je dirais que tu peux, au choix
Exécuter ton script en bash
Remplacer == par = (lignes 21 et 24)
Hors ligne
#1699 Le 14/08/2013, à 09:04
- enebre
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Merci pingouinux, super quel progrès en bash, mais ça ne résout pas encore le tout, pour le streaming ça fonctionne mais si je coche "conserver la vidéos", ça coince:
J'ai aussi essayé en supprimant les doubles "==" sans différence !
▶ bash yt-K
Vous avez choisi de conserver cette vidéo dans $/home/marc/Videos/videos-yt après
visualisation.\nPatientez quelques secondes votre vidéo va démarrer...
Usage: youtube-dl [options] url [url...]
youtube-dl: error: using output template conflicts with using title, video ID or auto number
MPlayer svn r34540 (Ubuntu), built with gcc-4.7 (C) 2000-2012 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing $/home/marc/Videos/videos-yt/Jingle FUN Radio (2012)-UsOyZHCgMpM.mp4.
File not found: '$/home/marc/Videos/videos-yt/Jingle FUN Radio (2012)-UsOyZHCgMpM.mp4'
Failed to open $/home/marc/Videos/videos-yt/Jingle FUN Radio (2012)-UsOyZHCgMpM.mp4.
Exiting... (End of file)
Je pense que tu aurais dû ouvrir une autre discussion.
Oui excuse moi, je pensais qu'une simple erreur ne demandait pas d'ouvrir un nouveau sujet, mais peut être...
suite... ici merci
Dernière modification par enebre (Le 14/08/2013, à 09:46)
Hors ligne
#1700 Le 02/11/2013, à 16:38
- web
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Bonjour, je vous propose un script très utile pour gérer son serveur lamp
http://forum.ubuntu-fr.org/viewtopic.php?id=1411741
Hors ligne