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 04:10 | Nová verze

Po 10 týdnech vývoje od vydání Linuxu 4.9 (zprávička) oznámil Linus Torvalds, mj. již 20 let žijící v USA, vydání Linuxu 4.10 (LKML). Přehled nových vlastností a vylepšení například na Kernel Newbies a v Jaderných novinách (1, 2 a 3). Kódové jméno Linuxu 4.10 je Fearless Coyote.

Ladislav Hagara | Komentářů: 0
včera 15:55 | Zajímavý projekt

Vyzkoušet si příkazy a vyřešit několik úkolů lze na stránkách Commandline Challenge (CMD Challenge). Úkoly lze řešit různými způsoby, důležitý je výsledek. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

Ladislav Hagara | Komentářů: 10
18.2. 17:35 | Bezpečnostní upozornění

Německá Bundesnetzagentur (obdoba českého ČTU) zakázala na německém území prodej panenky Cayla kvůli „špionáži“ dětí. Tato elektronická hračka obsahuje mikrofon, reproduktor a kameru a bezdrátové komunikační rozhraní, pomocí kterého se hračka připojuje na servery výrobce. Takovýmto způsobem může hračka pomocí umělé inteligence „odpovídat“ na dotazy dítěte. Hlavní problém bude ale asi někde jinde, podle prvotních zpráv může

… více »
Petr Tomášek | Komentářů: 26
17.2. 15:30 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje, že bezpečnostní experti objevili nový typ malwaru, jenž cílí na open source e-commerce platformu Magento. Malware je zajímavý tím, že se jedná o první svého druhu, jehož kód zůstává skrytý v SQL databázi zasaženého e-shopu. Škodlivý kód je volán pomocí tzv. SQL trigerru, který je spouštěn při každém vytvoření objednávky v systému.

Ladislav Hagara | Komentářů: 2
17.2. 09:00 | Nová verze

Bylo vydáno Ubuntu 16.04.2 LTS, tj. druhé opravné vydání Ubuntu 16.04 LTS s kódovým názvem Xenial Xerus. Přehled novinek v poznámkách k vydání a v přehledu změn.

Ladislav Hagara | Komentářů: 50
17.2. 06:00 | Zajímavý článek

Pavel Tišnovský se v dvoudílném článku na MojeFedora.cz věnuje tvorbě pluginů (modulů) pro bitmapový grafický editor GIMP. Pomocí pluginů lze GIMP rozšiřovat o další funkce. Implementovat lze například nové filtry nebo pomocné utility pro tvorbu animací či poloautomatickou retuš snímků.

Ladislav Hagara | Komentářů: 6
16.2. 23:32 | Komunita

Do 30. března se lze přihlásit do dalšího kola programu Outreachy, jehož cílem je přitáhnout do světa svobodného a otevřeného softwaru lidi ze skupin, jež jsou ve světě svobodného a otevřeného softwaru málo zastoupeny. Za 3 měsíce práce, od 30. května do 30. srpna 2017, v participujících organizacích lze vydělat 5 500 USD. Jedná se již o 14. kolo tohoto programu.

Ladislav Hagara | Komentářů: 11
16.2. 23:13 | Nová verze

Byla vydána verze 0.92.1 svobodného multiplatformního vektorového grafického editoru Inkscape. Přehled novinek v poznámkách k vydání. Řešen je mimo jiné problém s verzí 0.92, jež rozbíjí dokumenty vytvořené v předchozích verzích Inkscape. Více v příspěvku na blogu Davida Revoye, autora open source webového komiksu Pepper&Carrot nebo portrétu GNU/Linuxu.

Ladislav Hagara | Komentářů: 0
16.2. 16:26 | Bezpečnostní upozornění

Byla vydána verze 1.1.0e kryptografické knihovny OpenSSL. Dle bezpečnostního upozornění 20170216 byla opravena závažná bezpečnostní chyba CVE-2017-3733.

Ladislav Hagara | Komentářů: 1
16.2. 13:03 | Pozvánky

GNOME hackaton proběhne v Brně na FIT VUT v Red Hat Labu (budova Q) v pondělí 20. února od 15:00. Registrace není nutná, ale pokud dáte na FaceBooku vědět, že plánujete dorazit, pomůže to s plánováním.

Ladislav Hagara | Komentářů: 0
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 659 hlasů
 Komentářů: 52, poslední 13.2. 12:45
Rozcestník
Reklama

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: 370×
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: 37 | 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.