abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 01:11 | Nová verze

    Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    včera 16:22 | Nová verze

    Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.

    Ladislav Hagara | Komentářů: 0
    včera 15:22 | Nová verze

    Byla vydána nová verze 258 správce systému a služeb systemd (GitHub).

    Ladislav Hagara | Komentářů: 5
    včera 15:11 | Nová verze

    Byla vydána Java 25 / JDK 25. Nových vlastností (JEP - JDK Enhancement Proposal) je 18. Jedná se o LTS verzi.

    Ladislav Hagara | Komentářů: 0
    včera 14:44 | Humor

    Věra Pohlová před 26 lety: „Tyhle aféry každého jenom otravují. Já bych všechny ty internety a počítače zakázala“. Jde o odpověď na anketní otázku deníku Metro vydaného 17. září 1999 na téma zneužití údajů o sporožirových účtech klientů České spořitelny.

    Ladislav Hagara | Komentářů: 4
    včera 11:33 | Zajímavý článek Ladislav Hagara | Komentářů: 0
    16.9. 21:44 | Nová verze

    Byl vydán Mozilla Firefox 143.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Nově se Firefox při ukončování anonymního režimu zeptá, zda chcete smazat stažené soubory. Dialog pro povolení přístupu ke kameře zobrazuje náhled. Obzvláště užitečné při přepínání mezi více kamerami. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 143 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    16.9. 17:22 | Nová verze

    Byla vydána betaverze Fedora Linuxu 43 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 21. října.

    Ladislav Hagara | Komentářů: 0
    16.9. 12:22 | Nová verze

    Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.2 (𝕏, Mastodon). Přehled novinek, vylepšení a nových efektů v poznámkách k vydání.

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

    Byla vydána nová verze 4.5 (𝕏, Bluesky, Mastodon) multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (47%)
     (53%)
     (0%)
     (7%)
     (13%)
     (7%)
     (20%)
     (7%)
     (13%)
    Celkem 15 hlasů
     Komentářů: 1, poslední včera 13:49
    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: 473×
    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.