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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 17:02 | Pozvánky

Přijďte si popovídat o open source obecně a openSUSE konkrétně s dalšími uživateli a vývojáři. Oslava nového vydání openSUSE Leap se uskuteční 16. prosince od 17:00 v nových prostorách firmy SUSE v Praze. K dispozici bude nějaké občerstvení a DVD pro ty, kdo je sbírají nebo ještě mají mechaniku. Po párty v kanceláři se bude pokračovat v některé z hospod v okolí.

Miška | Komentářů: 0
dnes 14:55 | Zajímavý software

Byla vydána verze Alpha 1.0 otevřeného operačního systému pro chytré hodinky AsteroidOS. Podporovány jsou hodinky LG G Watch, LG G Watch Urbane, Asus ZenWatch 2 a Sony Smartwatch 3. Ukázka ovládání hodinek na YouTube. Jaroslav Řezník přednášel o AsteroidOS na chytrých hodinkách (videozáznam) na letošní konferenci OpenAlt.

Ladislav Hagara | Komentářů: 0
dnes 13:30 | Zajímavý software

Byly uvolněny zdrojové kódy známé rogue-like hry DoomRL. Počátky hry jsou v roce 2002. Je napsána ve FreePascalu a zdrojový kód je nyní k dispozici na GitHubu pod licencí GNU GPL 2.0. Autor pracuje na nové hře Jupiter Hell, která je moderním nástupcem DoomRL a na jejíž vývoj shání peníze prostřednictvím Kickstarteru.

Blaazen | Komentářů: 0
dnes 13:15 | Pozvánky

Přijďte s námi oslavit vydání Fedory 25. Na programu budou přednášky o novinkách, diskuse, neřízený networking atd. Release Party se bude konat 16. prosince v prostorách společnosti Etnetera. Na party budou volně k dispozici také propagační materiály, nová DVD s Fedorou 25 a samozřejmě občerstvení. Přednášky budou probíhat v češtině. Pro více informací se můžete podívat na web MojeFedora.cz. Jen připomínám, že tentokrát jsme zavedli

… více »
frantisekz | Komentářů: 0
včera 16:38 | Komunita

Byly zveřejněny videozáznamy přednášek a workshopů z letošní konference OpenAlt konané 5. a 6. listopadu v Brně. K videozáznamům lze přistupovat ze stránky na SuperLectures nebo přes program konference, detaily o vybrané přednášce nebo workshopu a dále kliknutím na ikonku filmového pásu. Celkově bylo zpracováno 65 hodin z 89 přednášek a workshopů.

Ladislav Hagara | Komentářů: 0
včera 11:30 | Komunita

Bylo oznámeno, že bude proveden bezpečnostní audit zdrojových kódů open source softwaru pro implementaci virtuálních privátních sítí OpenVPN. Audit provede Matthew D. Green (blog), uznávaný kryptolog a profesor na Univerzitě Johnse Hopkinse. Auditována bude verze 2.4 (aktuálně RC 1, stabilní verze je 2.3.14). Audit bude financován společností Private Internet Access [reddit].

Ladislav Hagara | Komentářů: 4
včera 06:00 | Komunita

Na YouTube byl publikován Blender Institute Reel 2016, ani ne dvouminutový sestřih z filmů, které vznikly za posledních 10 let díky Blender Institutu. V institutu aktuálně pracují na novém filmu Agent 327. Dění kolem filmu lze sledovat na Blender Cloudu. Videoukázka Agenta 327 z června letošního roku na YouTube.

Ladislav Hagara | Komentářů: 0
včera 01:02 | Zajímavý článek

Minulý týden byly vydány verze 1.2.3 a 1.1.7 webového poštovního klienta Roundcube. V oznámení o vydání bylo zmíněno řešení bezpečnostního problému nalezeného společností RIPS a souvisejícího s voláním funkce mail() v PHP. Tento týden byly zveřejněny podrobnosti. Útočník mohl pomocí speciálně připraveného emailu spustit na serveru libovolný příkaz. Stejně, jak je popsáno v článku Exploit PHP’s mail() to get remote code execution z roku 2014.

Ladislav Hagara | Komentářů: 1
8.12. 16:00 | Nová verze

Byla vydána verze 0.98 svobodného nelineárního video editoru Pitivi. Z novinek lze zmínit například přizpůsobitelné klávesové zkratky. Videoukázka práce s nejnovější verzí Pitivi na YouTube.

Ladislav Hagara | Komentářů: 1
8.12. 15:00 | Zajímavý software

Stop motion je technika animace, při níž je reálný objekt mezi jednotlivými snímky ručně upravován a posouván o malé úseky, tak aby po spojení vyvolala animace dojem spojitosti. Jaký software lze pro stop motion použít na Linuxu? Článek na OMG! Ubuntu! představuje Heron Animation. Ten bohužel podporuje pouze webové kamery. Podpora digitálních zrcadlovek je začleněna například v programu qStopMotion.

Ladislav Hagara | Komentářů: 5
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 808 hlasů
 Komentářů: 50, poslední 29.11. 15:50
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: 366×
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.