abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 16:33 | Nová verze Ladislav Hagara | Komentářů: 0
    dnes 03:22 | Zajímavý článek

    V aktuálním příspěvku na blogu počítačové hry Factorio (Wikipedie) se vývojář s přezývkou raiguard rozepsal o podpoře Linuxu. Rozebírá problémy a výzvy jako přechod linuxových distribucí z X11 na Wayland, dekorace oken na straně klienta a GNOME, změna velikosti okna ve správci oken Sway, …

    Ladislav Hagara | Komentářů: 0
    dnes 00:11 | Nová verze

    Rakudo (Wikipedie), tj. překladač programovacího jazyka Raku (Wikipedie), byl vydán ve verzi #171 (2024.04). Programovací jazyk Raku byl dříve znám pod názvem Perl 6.

    Ladislav Hagara | Komentářů: 3
    včera 17:44 | Nová verze

    Společnost Epic Games vydala verzi 5.4 svého proprietárního multiplatformního herního enginu Unreal Engine (Wikipedie). Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    26.4. 17:11 | Nová verze

    Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.

    Ladislav Hagara | Komentářů: 12
    26.4. 13:33 | Nová verze

    Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.

    Pavel Křivánek | Komentářů: 9
    26.4. 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 44
    25.4. 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 14
    25.4. 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 3
    25.4. 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (75%)
     (8%)
     (2%)
     (15%)
    Celkem 866 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: Přejmenování seriálů

    15.3.2011 22:05 xhombre | skóre: 10 | blog: xhombre
    Přejmenování seriálů
    Přečteno: 417×
    Občas si stáhnu nějaký seriál. Problém je v tom, že dost často nesedí názvy mezi epizodami nebo titulky. Ale většinou se v názvu souboru vyskytuje řetězec SXXEYY (XX číslo série, YY číslo epizody) tak jsem si napsal malý script v Ruby. Funuje, ale kdyby ho někdo shlédl a hodil do komentářů připomínky byl bych vděčný.

    #!/usr/bin/ruby1.9.1
    
    if ARGV[0] == nil
      puts "Jako argument zadejte adresar se serialem"
      puts "Nazev adresare bude pouzit pri prejmenovani souboru"
      exit
    else
      cesta = ARGV[0]
    end
    
    if !(test ?d, "#{cesta}") then                                       #kontrola zda je argument skutecne dostupny adesar
      puts "#{cesta} - neni dostupny adresar"
      exit 
    end
    
    list = `ls #{cesta}`     #ziskani seznamu souboru v adresari
    
    if cesta =~ /\/$/		#odstraneni / pokud je pritomno
      cesta_clon = cesta.chop	#pri pouziti cesta.chop! je string freeze
      cesta = cesta_clon		#zjistit proc
    end
     
    
    if cesta =~ /\/(\S+)$/		#ziskani jmena adresare
      adresar = ($1)
    end
    
    list.each_line {
      |line|
    
      if line =~ /((S|s)\d+(E|e)\d+)/   #zjisteni serie a epizody pokud nazev neobsahuj SXXEYY nic se nedela
        epizoda = $1
        epizoda.upcase!
     
        line =~ /([^.]+)$/                         #pripona souboru
        typ = $1
       
        puvodni = cesta+"/"+line      #cesta k puvodnimu souboru
        puvodni.chomp!
        
        finalni = cesta+"/"+adresar+"_"+epizoda+"."+typ   #cesta k novemu souboru
        finalni.chomp!  
    
        `mv "#{puvodni}" "#{finalni}"`   #konecne prejmenovani souboru
      end
    }
    

    Řešení dotazu:


    Odpovědi

    15.3.2011 23:12 xhombre | skóre: 10 | blog: xhombre
    Rozbalit Rozbalit vše Re: Přejmenování seriálů
    Takže hned jsem tam našel chybku v regexpu u získání jména adresáře. Takže opravená verze.
    
    #!/usr/bin/ruby1.9.1
    
    if ARGV[0] == nil
      puts "Jako argument zadejte adresar se serialem"
      puts "Nazev adresare bude pouzit pri prejmenovani souboru"
      exit
    else
      cesta = ARGV[0]
    end
    
    if !(test ?d, "#{cesta}") then                                       #kontrola zda je argument skutecne dostupny adesar
      puts "#{cesta} - neni dostupny adresar"
      exit 
    end
    
    list = `ls #{cesta}`     #ziskani seznamu souboru v adresari
    
    if cesta =~ /\/$/		#odstraneni / pokud je pritomno
      cesta_clon = cesta.chop	#pri pouziti cesta.chop! je string freeze
      cesta = cesta_clon		#zjistit proc
    end
     
    
    if cesta =~ /([^\/]+)$/		# OPRAVA ziskani jmena adresare
      adresar = ($1)
    end
    
    list.each_line {
      |line|
    
      if line =~ /((S|s)\d+(E|e)\d+)/   #zjisteni serie a epizody pokud nazev neobsahuj SXXEYY nic se nedela
        epizoda = $1
        epizoda.upcase!
     
        line =~ /([^.]+)$/                         #pripona souboru
        typ = $1
       
        puvodni = cesta+"/"+line      #cesta k puvodnimu souboru
        puvodni.chomp!
        
        finalni = cesta+"/"+adresar+"_"+epizoda+"."+typ   #cesta k novemu souboru
        finalni.chomp!  
    
        `mv "#{puvodni}" "#{finalni}"`   #konecne prejmenovani souboru
      end
    }
    
    wamba avatar 16.3.2011 07:22 wamba | skóre: 38 | blog: wamba
    Rozbalit Rozbalit vše Re: Přejmenování seriálů
    Asi by se to dalo "vylepšit" pomocí tříd File a Dir.
    This would have been so hard to fix when you don't know that there is in fact an easy fix.
    20.3.2011 14:16 xhombre | skóre: 10 | blog: xhombre
    Rozbalit Rozbalit vše Re: Přejmenování seriálů
    Přepsáním s použitím tříd File a Dir se celý script zpřehlednil, ubylo regexpů, a zkrátil. Takže dík.
    #!/usr/bin/ruby1.9.1
    
    if ARGV[0] == nil
      puts "Jako argument zadejte adresar se serialem"
      puts "Nazev adresare bude pouzit pri prejmenovani souboru"
      exit
    elsif !(File.directory?("#{ARGV[0]}")) then		#zjisteni zda je zadany
      puts "#{ARGV[0]} - neni dostupny adresar"		#argument skutecne adresar
      exit 
    end
    
    Dir.chdir("#{ARGV[0]}")					#zmena pracovniho adresare
    
    jmeno_adresare = File.basename("#{ARGV[0]}")		#jmeno pracovniho adresare, pouzije se jako cast jmena souboru
    
    Dir.foreach(".") {					#prochazeni seznamu souboru v danem adresari
      |soubor|
    
      if soubor =~ /((S|s)\d+(E|e)\d+)/ then		#zjisteni zda nazev souboru obsahuje SxxEyy
        epizoda = $1					#ziskani cisla serie a epizody
        epizoda.upcase!					#prevod na velka pismena
     
        typ = File.extname("#{soubor}")			#ziskani pripony (typu) souboru
       
        novy_soubor = jmeno_adresare+"_"+epizoda+typ	#vytvoreni noveho jmena souboru
            
        File.rename("#{soubor}", "#{novy_soubor}")		#prejmenovani souboru
        puts "#{soubor} >> #{novy_soubor}"
      end 
    }
    Řešení 1× (xhombre (tazatel))
    28.3.2011 22:09 xhombre | skóre: 10 | blog: xhombre
    Rozbalit Rozbalit vše Re: Přejmenování seriálů
    Takže asi poslední verze skriptu. Už to umí co potřebuji a chci. Je bezpečnější na používání. Pokud by jste to náhodou používali dejte mi vědět. Vše na vlastní nebezpečí :-)
    #!/usr/bin/env ruby1.9.1
    #coding=utf-8
    
    require "getoptlong"
    
    adresar = "."						#nastavení implicitních hodnot proměných
    zaklad_jmena = nil
    test = 0
    
    help = "-h, --help napoveda
    -d, --drawer jmeno adresare se serialem, bude pouzito jako soucast nazvu souboru
    -n, --name jmeno pro prejmenovani, nadrazeno jmenu adresare
    -r, --regexp regexp pro vyhledavani serie a epizody 
    -v, --regexp_version \n\t1 - pro format sAAeBB
    \t2 - pro format AAxBB
    -t, --test pro zapnuti testovacího modu, soubory se neprejmenovavaji"
    
    regexp = /[S|s](\d+)[E|e](\d+)/ 
    
    parser = GetoptLong.new					#parsovani prikazoveho radku
    parser.set_options(
      ["-h", "--help", GetoptLong::NO_ARGUMENT],
      ["-d", "--drawer", GetoptLong::OPTIONAL_ARGUMENT],
      ["-v", "--regexp_version", GetoptLong::OPTIONAL_ARGUMENT],
      ["-n", "--name", GetoptLong::OPTIONAL_ARGUMENT],
      ["-r", "--regexp", GetoptLong::OPTIONAL_ARGUMENT],
      ["-t", "--test", GetoptLong::OPTIONAL_ARGUMENT])
    
    parser.each_option {
      |opt, arg|
      case opt
        when "-h"						#kdyz je argument -h
          puts help						#vypsat help
          exit						#a skoncit
        when "-d"
          adresar = arg					#prirazeni argumentu adresare
        when "-r"
          regexp = Regexp.compile("#{arg}")			#prirazeni regexpu
        when "-v"
          case arg
            when "1"					#nastavení variant -v
              regexp = /[S|s](\d+)[E|e](\d+)/
            when "2"
              regexp = /(\d+)[x|X](\d+)/
          end
        when "-n"						#nastavení základu jména
          zaklad_jmena = arg 
        when "-t"
          test = 1      
      end
    }
    
    if !(File.directory?("#{adresar}")) then		#zjisteni zda je zadany argument skutecne adresar
      puts "#{adresar} - neni dostupny adresar"		#kdyz ne tak vypsat info
      exit							#a konec
    end
    
    Dir.chdir("#{adresar}")					#zmena pracovniho adresare
    puts "Pracovní adresář - "+Dir.pwd()			#vypsani adresare
    
    if zaklad_jmena == nil then				#když není zadán argument jména
      zaklad_jmena = File.basename(Dir.pwd())		#použije se název adresáře
    end
    
    puts "Základ jména - "+zaklad_jmena			#a vypíše se na výstup
    
    Dir.foreach(".") {					#prochazeni seznamu souboru v danem adresari
      |soubor|
    
      if soubor =~ regexp then				#zjisteni zda nazev souboru obsahuje pozadovany regexp
        serie = $1						#ziskani cisla serie a epizody
        epizoda = $2
    
        if serie.size < 2 then				#když je velikost řetězce menší jak 2
          serie = "0"+serie					#přidá se před něj 0
        end
    
        if epizoda.size < 2 then 
          epizoda = "0"+epizoda
        end
    
        typ = File.extname("#{soubor}")			#ziskani pripony (typu) souboru
       
        novy_soubor = zaklad_jmena+"_"+"s"+serie+"e"+epizoda+typ		#vytvoreni noveho jmena souboru
    
        if soubor == novy_soubor then			#když název původního souboru a nového je stejný 
          next						#přeskočíme na další soubor
        end
    
        i = 0
        loop do
          if File.exist?("#{novy_soubor}") then		#když nový název souboru koliduje s již existujícim souborem
            i = i + 1
            novy_soubor = zaklad_jmena+"_"+"s"+serie+"e"+epizoda+"("+i.to_s+")"+typ	#pozměníme ho přidáním (i)
          else						#jinak
            break						#pokračujeme dál
          end
        end
    
        puts "#{soubor} >> #{novy_soubor}"
        
        if test == 0 then					#když se netestuje
          File.rename("#{soubor}", "#{novy_soubor}")	#přejmenovat soubor
        else
          puts "Testovací provoz - nedochází k přejmenování"	#jinak jen vypsat hlášku
        end
      end 
    }
    

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.