Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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… smile )
Bon, côté license, je m'en fous un peu pour le moment… big_smile Disons (cc-by-sa) ? smile
Linuxement,
Félix smile

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... smile

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 wink

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...)

Hizoka   #1685 a écrit :

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 smile


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. wink
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...)

linuxienubuntiste   #1688 a écrit :

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 wink

@+

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

Hizoka

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

laslack => Si zenity t'interresse, regarde mon zenitor, ca t'aidera bien je pense smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#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

  1. Exécuter ton script en bash

  2. 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)
pingouinux a écrit :

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 smile
http://forum.ubuntu-fr.org/viewtopic.php?id=1411741

Hors ligne