Conky a LUA - TV program

17. 3. 2016 7:22 (aktualizováno) | Vladislav Konopík

Modul pro Conky zobrazující právě vysílaný pořad na vybraných stanicích. Pokud máte dvb-t kartu v PC, spustí se ve VLC stanice po kliknutí na její název (nutno doplnit frekvence, podle vašeho příjmu)

Tento modul je sice funkční, ale stále jej považuji za testovací (2 večery – narychlo splácaný skript). Prosím vás o případné poznatky chování modulu (i návrhy ohledně dalších modulů).

Pro použití tohoto modulu jsou potřebné tyto změny ve stávajícím skriptu:

nahradit funkci conky_wget() novou verzí, kterou naleznete na konci

pokud používáte modul_pocasi je nutné změnit na začátku modulu počasí:

wget = {}

na:

wget.pocasi = nil

Nastavení modulu TV program:

Nad hlavní již uveřejněnou funkcí je nutno vložit proměnou:

--absolutní cesta k adresáři se soubory pro Conky
--(musí končit /)
conky_adr = "/home/vlk/conky/"

Výsledek bude např. takto:

pocasi_soubor = "/home/vlk/conky/conky_pocasi" --umístění a název souboru s daty
pocasi_hodnoty = nil --data s předpovědí
pocasi_url = "www.in-pocasi.cz" --adresa pro stahování dat

--absolutní cesta k adresáři se soubory pro Conky
--(musí končit /)
conky_adr = "/home/vlk/conky/"

--tabulka pro stahování pomocí funkce conky_wget()
wget = {}

Dále je potřeba doplnit název do tabulky ‚modul‘, aniž by mezi jednotlivými moduly vzniklo prázdné místo (např.):

modul.name[1] = "system"
modul.name[2] = "network"
modul.name[3] = "pocasi"
modul.name[4] = "disky"
modul.name[5] = "tvprogram"
modul.name[6] = "procesy"

A doplnit tabulky pro update (hodnoty neměnit), interval (hodnotu zle měnit) a klik_menu(0=zavřené menu, 1=otevřené menu):

update = {
  ["system"] = nil,
  ["procesy"] = nil,
  ["disky"] = nil,
  ["network"] = nil,
  ["pocasi"] = nil,
  ["tvprogram"] = nil,
}

interval = {
  ["system"] = 300,
  ["procesy"] = 3,
  ["disky"] = 5,
  ["network"] = 4,
  ["pocasi"] = 10,
  ["tvprogram"] = 300,
}

klik_menu = {
  ["procesy"] = 0,
  ["disky"] = 0,
  ["network"] = 0,
  ["pocasi"] = 0,
  ["tvprogram"] = 0,
}

Nastavení výpisu a spuštění TV ve vlc:

Za podmínkou pro interval dat modulu se nachází 2 proměnné.

tv_pocet = 2 --číslo pro počet vysílaných programů stanice
tv_vlc = 0 --pro spouštění televize ve VLC (1 = spustí vlc / 0 = jen výpis programů)

Seznam stanic se řídí podle cookies ze stránek a výpis skriptu lze těmito cookies usměrnit.

 --jména potřebných souborů s daty
 local soubor = "conky_tvprogram" --soubor s daty
 local cookies = "cookies.txt" --soubor s cookies
 local url = "www.csfd.cz/televize/?day=0" --url adresa pro stahování dat

Pokud vám postačí výpis programů na stanicích: Nova, Prima, ČT1, ČT2, Barrandov, Nova Cinema, Prima Cool a Prima Love, vymažte proměnnou ‚cookies‘ takto:

local cookies = "" --soubor s cookies

V opačném případě proveďte na stránkách (‚url‘) požadované úpravy a poté musíte vyexportovat cookies ze svého prohlížeče do textového formátu (google napoví). Tento textový soubor musí obsahovat všechny záznamy z navštívené stránky (ostatní možno smazat) a musí být ve stejném adresáři uvedeném u proměnné ‚conky_adr‘ nad hlavní funkcí.

Pokud chcete spouštět stanice ve VLC, nejprve upravte hodnoty v tabulce ‚stanice_vlc‘:

stanice_vlc = {
      [1] = {["N"] = "Nova", ["P"] = "frequency=634000000 --program=513",},
      [2] = {["N"] = "Prima", ["P"] = "frequency=634000000 --program=773",},
      [3] = {["N"] = "ČT1", ["P"] = "frequency=570000000 --program=257",},
      [4] = {["N"] = "ČT2", ["P"] = "frequency=570000000 --program=258",},
      [5] = {["N"] = "Barrandov", ["P"] = "frequency=634000000 --program=2050",},
      [6] = {["N"] = "Nova Cinema", ["P"] = "frequency=634000000 --program=514",},
      [7] = {["N"] = "Prima Cool", ["P"] = "frequency=634000000 --program=770",},
      [8] = {["N"] = "Prima Love", ["P"] = "frequency=746000000 --program=772",},
      [9] = {["N"] = "", ["P"] = "",},
    }

Jméno stanice musí být ve stejném formátu jako ve výpisu modulu a frekvenci včetně čísla programu naleznete ve svém souboru *.xspf, který VLC používá pro přehrávání DVB. Soubor xspf lze vytvořit např. pomocí aplikace ‚w-scan‘:

w_scan -L > channels.xspf

Skript modulu tvprogram:

function modul_tvprogram()
------------------------------------------------------------
--                       VLKODLAK
--                     2016 ver 0.1
------------------------------------------------------------
-- přehled právě vysílaných pořadů s možností spustit ve VLC
-- vybranou televizní stanici
--
--##########################################################
--
-- pro svou činnost potřebuje: funkce
--[[

kurzor()
pozadi(poz,vyska)
conky_wget()

--]]
--
-- pro svou činnost potřebuje: globální tabulky (před hlavní funkcí - conky_main())
--[[

wget = {}

update = {
  ["tvprogram"] = nil,
}

interval = {
  ["tvprogram"] = 300,
}

klik_menu = {
  ["tvprogram"] = 0,
}

--]]
--
-- pro svou činnost potřebuje: globální proměnné (před hlavní funkcí - conky_main())
--[[

pozadi_menu           --nastavuje pozadí pro menu
pozadi_panel          --nastavuje pozadí pro panel
pozadi_barva          --nastavuje barvu pozadí

rozmer_panelu_x       --rozměr panelu v pixelech, musí se shodovat s nastavením
                      --hodnoty 'minimum_size' v conky.rc

conky_adr             --absolutní cesta k adresáři se soubory pro Conky

--]]
--
-- pro svou činnost potřebuje: nainstalované aplikace
--[[

wget                  --pro stažení dat
vlc                   --pro spuštění stanice

--]]

------------------------------------------------------------

  --proměnná pro identifikaci modulu
  local name = "tvprogram"

  --vymazání tabulky pro stahování souborů
  wget.tvprogram = nil

  ----------------------------------------
  --podmínky pro interval dat modulu
  ----------------------------------------

  if tonumber(update[tostring(name)]) == nil then--první průchod skriptem

    --nastavení intervalu
    update[tostring(name)] = updates + tonumber(interval[tostring(name)])

    ----------------------------------------
    --nastavení chování výpisu programů
    tv_pocet = 2 --číslo pro počet vysílaných programů stanice
    tv_vlc = 0 --pro spouštění televize ve VLC (1 = spustí vlc / 0 = jen výpis programů)

    ----------------------------------------
    --tabulka nastavení frekvencí pro VLC
    --např.: [1] = {["N"] = "Nova", ["P"] = "frequency=634000000 --program=513",},
    stanice_vlc = {
      [1] = {["N"] = "Nova", ["P"] = "frequency=634000000 --program=513",},
      [2] = {["N"] = "Prima", ["P"] = "frequency=634000000 --program=773",},
      [3] = {["N"] = "ČT1", ["P"] = "frequency=570000000 --program=257",},
      [4] = {["N"] = "ČT2", ["P"] = "frequency=570000000 --program=258",},
      [5] = {["N"] = "Barrandov", ["P"] = "frequency=634000000 --program=2050",},
      [6] = {["N"] = "Nova Cinema", ["P"] = "frequency=634000000 --program=514",},
      [7] = {["N"] = "Prima Cool", ["P"] = "frequency=634000000 --program=770",},
      [8] = {["N"] = "Prima Love", ["P"] = "frequency=746000000 --program=772",},
      [9] = {["N"] = "", ["P"] = "",},
    }

    ----------------------------------------
    --jména potřebných souborů s daty
    local soubor = "conky_tvprogram" --soubor s daty
    local cookies = "cookies.txt" --soubor s cookies
    local url = "www.csfd.cz/televize/?day=0" --url adresa pro stahování dat

    ----------------------------------------
    --tabulka pro nastavení modulu
    tvprogram_tab = {
      ["tl"] = 0,--pro aktualizaci dat po ručním stažení souboru
      ["akt"] = nil,--stav aktuálnosti dat
      ["soubor"] = 0,--pro přítomnost souboru s daty
      ["brana"] = 0, --dostupnost brány
      ["pozice_y"] = nil,--pozice 'y' pro modul
    }

    --smyčka pro nastavení pozice modulu
    for a = 1,#modul.name do
      local text = tostring(modul.name[a])
      if string.match(text, "(%S*)") == tostring(name) then
        tvprogram_tab.pozice_y = a
        break
      end--if string.match(text, "(%S)") == tostring(name) then
    end--for a = 1,#modul.name do

    ----------------------------------------
    --definování tabulky pro data
    tv_program = {}  --hlavní tabulka

    ----------------------------------------
    --test přítomnosti a aktuálnosti souboru
    local data = io.popen("ls --full-time "..conky_adr..soubor.." 2> /dev/null")
    local line = data:read("*l")
    data:close()
    if line == nil then
      tvprogram_tab.soubor = 0 --soubor neexistuje
    else
      tvprogram_tab.soubor = 1 --soubor je přítomen

      --datum ze souboru
      z,k,vyber = string.find(line,"[%S%s]*%d%d%d%d%p(%d%d%p%d%d)")

      --systémový datum
      local d = conky_parse("${time %e}")
      d = string.gsub (d, " ", "0")
      local m = conky_parse("${time %m}")
      local datum = m.."-"..d

      if tostring(datum) == tostring(vyber) then tvprogram_tab.akt = 1 end --data jsou aktuální
    end--if line == nil then

    ----------------------------------------
    --uložení aktuálních dat
    if tvprogram_tab.akt == 1 then

      local tv = 0

      for line in io.lines(conky_adr..soubor) do

        z,k,vyber = string.find(line, "%pimg%ssrc%p+img%pcsfd%pcz%S+%salt%p+([%S%s]*)%p%sclass")
        if vyber ~= nil and vyber ~= "poster" then
          tv = tv + 1
          tv_program[tonumber(tv)] = {}
          tv_program[tonumber(tv)].name = vyber

          tv_program[tonumber(tv)].prg = {
            ["time"] = {},
            ["minuty"] = {},
            ["name"] = {},
            ["year"] = {},
            ["series"] = {},
            ["genres"] = {},
          }
        end--if vyber ~= nil and vyber ~= "poster" then

        if tv > 0 then

          z,k,vyber = string.find(line,"time%p%p(%d+%p%d+)")
          if vyber ~= nil then
            table.insert(tv_program[tonumber(tv)].prg.time, vyber)
            local minuty = tonumber(string.match(vyber,"(%d%d)%p") * 60) + tonumber(string.match(vyber,"%p(%d%d)"))
            table.insert(tv_program[tonumber(tv)].prg.minuty, minuty)
          end--if vyber ~= nil then

          z,k,vyber = string.find(line,"name%p%p(%S%S)")
          if vyber ~= nil then
            if vyber ~= "<a" then
              z,k,vyber = string.find(line,"name%p%p([%S%s]*)%p%pspan%p")
              table.insert(tv_program[tonumber(tv)].prg.name, vyber)
            else
              z,k,vyber = string.find(line,"name%p%p[%S%s]*film%s%S%S%S%S([%S%s]*)%p%pa%p")
              table.insert(tv_program[tonumber(tv)].prg.name, vyber)
              z,k,vyber = string.find(line,"film%pyear%p%p%p(%d%d%d%d)%p%p%p", k)
              table.insert(tv_program[tonumber(tv)].prg.year,#tv_program[tonumber(tv)].prg.name, vyber)
            end--if vyber ~= "<a" then
          end--if vyber ~= nil then

          z,k,vyber = string.find(line,"series%p%p([%S%s]*)%p%pspan%p")
          if vyber ~= nil then
            table.insert(tv_program[tonumber(tv)].prg.series,#tv_program[tonumber(tv)].prg.name, vyber)
          end

          z,k,vyber = string.find(line,"genres%p%p([%S%s]*)%p%pdiv%p")
          if vyber ~= nil then
            table.insert(tv_program[tonumber(tv)].prg.genres,#tv_program[tonumber(tv)].prg.name, vyber)
          end

        end--if tv > 0 then
      end--for line in io.lines(tv_soubor) do
    end--if tvprogram_tab.akt == 1 then

    ----------------------------------------
    --test brány
    local data = io.popen("ip route")
    while true do
      local line = data:read("*l")
      if line == nil then break end
      z,k,vyber = string.find(line,"default%svia%s(%S+)%s") --ip adresa
      if vyber ~= nil then
        tvprogram_tab.brana = 1
        break
      end--if vyber ~= nil then
    end--while true do
    data:close()

    --soubor neexistuje, nebo je zastaralý
    if tvprogram_tab.soubor == 0 or tvprogram_tab.akt == nil or tvprogram_tab.akt == 0 then
      if tvprogram_tab.brana == 1 then
        if tostring(cookies) == "" then
          wget.tvprogram = "${texeci 25 wget -q "..url.." -O "..conky_adr..soubor.." }"
        else
          wget.tvprogram = "${texeci 25 wget --load-cookies "..conky_adr..cookies.." -q "..url.." -O "..conky_adr..soubor.." }"
        end--if tostring(cookies) == "" then
        tvprogram_tab.tl = 8 --odpočet pro update == nil
      else
        tvprogram_tab.tl = 15 --odpočet pro update == nil
      end--if tvprogram_tab.brana == 1 then
    end--if tvprogram_tab.soubor == 0 or tvprogram_tab.akt == nil or tvprogram_tab.akt == 0 then

  elseif tonumber(update[tostring(name)]) <= updates then

    --nastavení intervalu
    update[tostring(name)] = updates + tonumber(interval[tostring(name)])

    if tvprogram_tab.akt == 0 then
      --test brány
      local data = io.popen("ip route")
      while true do
        local line = data:read("*l")
        if line == nil then break end
        z,k,vyber = string.find(line,"default%svia%s(%S+)%s") --ip adresa
        if vyber ~= nil then
          if tostring(cookies) == "" then
            wget.tvprogram = "${texeci 25 wget -q "..url.." -O "..conky_adr..soubor.." }"
          else
            wget.tvprogram = "${texeci 25 wget --load-cookies "..conky_adr..cookies.." -q "..url.." -O "..conky_adr..soubor.." }"
          end--if tostring(cookies) == "" then
          break
        end--if vyber ~= nil then
      end--while true do
      data:close()
    end--if tvprogram_tab.akt == 0 then

  end--if tonumber(update[tostring(name)]) == nil then--první průchod skriptem

  ----------------------------------------
  --odpočet pro aktualizaci dat
  if tvprogram_tab.tl > 0 then
    tvprogram_tab.tl = tvprogram_tab.tl - 1
    if tvprogram_tab.tl == 0 then update[tostring(name)] = nil end
  end--if tvprogram_tab.tl > 0 then

  ----------------------------------------
  --vypis dat modulu
  ----------------------------------------

  local x = 0
  local y = modul.pozice[tonumber(tvprogram_tab.pozice_y)]
  --nastavení fontu
  cairo_select_font_face (cr, "Mono", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);

  ----------------------------------------
  --vykreslení pozadí pro menu
  if pozadi_menu == 1 then pozadi(y - 12,15) end

  ----------------------------------------
  --konstrukce pro klikutí na menu
  local menu = "TV PROGRAM"
  local delka = tonumber(string.len(menu)*7)

  --linie - první část
  cairo_select_font_face (cr, "Mono", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
  cairo_set_font_size (cr, 12.0);
  cairo_set_source_rgba (cr, 1,0.7,0,1);

  local linie1 = (rozmer_panelu_x - delka)/2 - 5
  cairo_rectangle (cr, x,y-5,linie1,1);cairo_fill (cr);

  --pozice kurzoru/kliknutí
  if mx>=x+linie1+5 and mx<=x+linie1+5+delka+3 and my<=y and my>=y-12 then
    cairo_set_source_rgba (cr, 0.7,0.7,0.7,1);
    if mx == kx and my == ky and klik_menu[tostring(name)] == 0 then
      klik_menu[tostring(name)] = 1
    elseif mx == kx and my == ky and klik_menu[tostring(name)] == 1 then
      klik_menu[tostring(name)] = 0
    end--kliknutí
  else
    cairo_set_source_rgba (cr, 1,0.7,0,1);
  end--pozice kurzoru

  cairo_move_to (cr, x+linie1+5, y);cairo_show_text (cr, menu);--text menu

  --linie - druhá část
  cairo_set_source_rgba (cr, 1,0.7,0,1);
  local linie2 = rozmer_panelu_x - (linie1+5+delka+7)
  cairo_rectangle (cr, x+linie1+5+delka+7,y-5,linie2,1);cairo_fill (cr);

  ----------------------------------------
  --otevřený panel
  y = y + 3

  if klik_menu[tostring(name)] == 1 then

    cairo_select_font_face (cr, "Mono", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
    cairo_set_font_size (cr, 10.0);

    --soubor neexistuje,nebo je zastaralý
    if tvprogram_tab.soubor == 0 or tvprogram_tab.akt ~= 1 then

      if pozadi_panel == 1 then pozadi(y+2,46) end

      y = y + 25
      local text = "Soubor "..tv_soubor
      local delka = tonumber(string.len(text)*6)
      local pozice = (rozmer_panelu_x - delka) / 2
      cairo_set_source_rgba (cr, 0.9,0.9,0.9,1);
      cairo_move_to (cr, pozice,y-1);cairo_show_text (cr, text);

      y = y + 15
      if tvprogram_tab.soubor == 0 then
        text = "neexistuje, nebo je poškozený."
        delka = 30*6
      elseif tvprogram_tab.akt ~= 1 then
        text = "obsahuje zastaralá data."
        delka = 24*6
      end
      local pozice = (rozmer_panelu_x - delka) / 2
      cairo_set_source_rgba (cr, 0.9,0.9,0.9,1);
      cairo_move_to (cr, pozice,y-1);cairo_show_text (cr, text);
      y = y + 4

    elseif tvprogram_tab.akt == 1 then--data jsou aktuální

      --pozadí pro televizní program
      if pozadi_panel == 1 then
        local poz = y+2
        local vyska = (tonumber(tv_pocet * 15) + 15) * #tv_program
        pozadi(poz,vyska+2)
      end--if pozadi_panel == 1 then

      if tvprogram_tab.vyber == nil or tvprogram_tab.vyber >= updates then
        tvprogram_tab.vyber = updates + 60

        local sys_time = conky_parse("${time %H:%M}")
        local minuty = tonumber(string.match(sys_time,"(%d%d)%p")*60) + tonumber(string.match(sys_time,"%p(%d%d)"))

        for a = 1,#tv_program do
          y = y + 15

          --pozice kurzoru/kliknutí
          if mx>=x+5 and mx<=rozmer_panelu_x-5 and my<=y and my>=y-12 then
            cairo_set_source_rgba (cr, 0.7,0.7,0.7,1);
            if mx == kx and my == ky and tv_vlc == 1 then
              local run = tv_program[tonumber(a)].name
              for r = 1,#stanice_vlc do
                if tostring(stanice_vlc[tonumber(r)].N) == tostring(run) then
                  os.execute("killall vlc")
                  os.execute("vlc --one-instance dvb-t://"..tostring(stanice_vlc[tonumber(r)].P).." 2>/dev/null &")
                  break
                end--if tostring(table_vlc[tostring(run)]) ~= nil then
              end--for r = 1,#table_vlc do
            end--kliknutí
          else
            cairo_set_source_rgba (cr, 1,0.7,0,1);
          end--pozice kurzoru
          cairo_move_to (cr, x+10,y-1);cairo_show_text (cr, tv_program[tonumber(a)].name);

          --výpis pořadů
          for b = 1,#tv_program[tonumber(a)].prg.time do

            --if tonumber(b+tv_pocet) <= #tv_program[tonumber(a)].prg.time then
              if tonumber(minuty) <= tonumber(tv_program[tonumber(a)].prg.minuty[tonumber(b+1)]) then

                local cas_od = tv_program[tonumber(a)].prg.time[tonumber(b)]
                local cas_do = tv_program[tonumber(a)].prg.time[tonumber(b+1)]
                local name = tv_program[tonumber(a)].prg.name[tonumber(b)]
                local series = tv_program[tonumber(a)].prg.series[tonumber(b)]
                local year = tv_program[tonumber(a)].prg.year[tonumber(b)]
                --právě teď vysílají
                cairo_set_source_rgba (cr, 0.9,0.9,0.9,1);
                cairo_show_text (cr, "  "..cas_od.."-"..cas_do);
                y = y + 15
                cairo_move_to (cr, x+25,y-1);
                cairo_set_source_rgba (cr, 0.9,0.9,0.9,1);
                cairo_show_text (cr, "  "..name.."  ");
                cairo_set_source_rgba (cr, 0.7,0.7,0.7,1);
                cairo_show_text (cr, series);
                cairo_set_source_rgba (cr, 0.7,0.7,0.7,1);
                cairo_show_text (cr," ");
                cairo_show_text (cr,year);

                local p = tonumber(tv_pocet-1)
                if tonumber(p) >= 1 then
                  for n = 1, tonumber(p) do
                    local cas_od = tv_program[tonumber(a)].prg.time[tonumber(b+n)]
                    local cas_do = tv_program[tonumber(a)].prg.time[tonumber(b+1+n)]
                    local name = tv_program[tonumber(a)].prg.name[tonumber(b+n)]
                    local series = tv_program[tonumber(a)].prg.series[tonumber(b+n)]
                    local year = tv_program[tonumber(a)].prg.year[tonumber(b+n)]
                    y = y + 15
                    cairo_move_to (cr, x+20,y-1);
                    cairo_set_source_rgba (cr, 0.7,0.7,0.7,1);
                    cairo_show_text (cr, cas_od.."-"..cas_do);
                    cairo_set_source_rgba (cr, 0.7,0.7,0.7,1);
                    cairo_show_text (cr, "  "..name.."  ");
                    cairo_set_source_rgba (cr, 0.7,0.7,0.7,1);
                    cairo_show_text (cr, series);
                    cairo_set_source_rgba (cr, 0.7,0.7,0.7,1);
                    cairo_show_text (cr," ");
                    cairo_show_text (cr,year);
                  end--for n = 1, tonumber(p) do
                end--if tonumber(p) > 1 then
                break
              end--if tonumber(minuty) <= tonumber(tv_program[tonumber(a)].prg.minuty[tonumber(b+1)])

            --else

              --tvprogram_tab.akt = 0 --data jsou neaktuální

            --end--if tonumber(b+tv_pocet) <= #tv_program[tonumber(a)].prg.time

          end--for b = 1,#tv_program[tonumber(a)].prg.time do
        end--for a = 1,#tv_program do
      end--if tvprogram_tab.vyber == nil or tvprogram_tab.vyber >= updates then
    end--if tvprogram_tab.soubor == 0 or tvprogram_tab.akt ~= 1 then
  end--if klik_menu[tostring(name)] == 1 then

  ----------------------------------------
  --pozice pro další modul
  if klik_menu[tostring(name)] == 1 then
    next_y = y + 18
  else
    next_y = y + 14
  end--if klik_menu[tostring(name)] == 1 then

  modul.pozice[tonumber(tvprogram_tab.pozice_y)+1] = next_y

  return modul

end--function modul_tvprogram()
--############################################################

Skript nové verze funkce conky_wget()

function conky_wget()
------------------------------------------------------------
--                VLKODLAK   2016 ver 0.3
------------------------------------------------------------
-- stáhne požadovaný soubor pomoci Conky ${texeci }
------------------------------------------------------------
-- pro správnou funkci potřebuje globální tabulku
-- wget = {}
------------------------------------------------------------
-- nastavení v conky.rc
--
-- template9 ${lua_parse wget}
-- TEXT
-- ${template9}
------------------------------------------------------------
  local vypis = ""

  if wget.pocasi ~= nil then--stahování pro modul_pocasi
    vypis = tostring(wget.pocasi)
  end

  if wget.tvprogram ~= nil then--stahování pro modul_tvprogram
    vypis = tostring(wget.tvprogram)
  end


  return tostring(vypis)

end--function conky_wget()
--############################################################
  • 14. 3. 2016 8:32

    iq8 (neregistrovaný) ---.penta.ji.cz

    Dobrý den
    Jsem už starší generace a není mi úplně jasné o čem je v článku řeč. Co je to ten Conky?
    Děkuji za odpověď, s přáním hezkého dne

  • 14. 3. 2016 9:21

    bez přezdívky

    Dobrý den.

    Conky je Linuxová aplikace pro monitorování téměř všech dostupných systémových prostředků. Zobrazuje aktuální stav hardwaru a softwaru, který používáte.
    Pomocí různých skriptů (podobný tomu v článku), jej lze rozšířit i o nesystémové
    informace (počasí, TV program atd.).

    Pro využití takovýchto skriptů, kterých je na internetu mnoho, je potřebné instalovat balík 'conky-all', což lze provést ve správci balíků, nebo v terminálu příkazem:

    sudo apt-get install conky-all

  • 15. 3. 2016 14:37

    spacok (neregistrovaný) ---.ekosoft.sk

    Osobne nechapem cely zmysel tohto navrhu, mame napr. Unity (co ma v sebe polku gnome kde bezi aspon 1/3 aplikacii napisanych v pythone a 1/3 v perli) potom mame conky ktory takisto spusta kopu balastu v style python, perl a podobne, vsetko to spolu kvaka cez dbus a my si sem este dopiseme nejaky script v LUA aby sme to spravili este balastovejsie. Ja osobne proti LUA nic nemam pouzivam awesome a mam kopu veci v style conky napisanych prave v LUA pretoze je to jediny scriptovaci jazyk pre awesome. Kolko ramky takato programatorsko-virtualizovano-scriptovana zalezitost musi zrat? Moj desktop ked nabehne mam spotrebu ramky (so vsetkym vsudy co mi bezi) 130MB. Je to rychle spolahlive stabilne, cely desktop sa rovnako pohodlne ovlada klavesnicou aj mysou.... Asi som z ineho casoveho obdobia linuxov....

  • 15. 3. 2016 18:13

    bez přezdívky

    Kolik to žere? Nemyslím, že by to bylo neúnosné.

    Conky s timto LUA skriptem, kde mám oproti zde uveřejněmu navíc dva
    moduly --> 19,6 MB
    xdotool --> 3,87MB

    grafické prostředí cinnamon --> 205MB
    gedit, kde píši tento příspěvek --> 39.8MB

    Firefox se 7 otevřenými panely --> 639MB

    nm-applet, cinnamon-settings, Xorg atd. (celkem 189 procesů).
    paměti tak obsazeno celkem 1.25GB ze 7,66GB

    Po restartu systému vše zabírá 400MB. Zatížení CPU 1-2% na jádro, aniž by
    frekvence výrazně, nebo dlouhodobě eskalovala.

    Smysl skriptu? Neustále dostupné mnou požadované informace nejen o systému.
    Jedná se o balast? Upřímně? Ano. Tak jako za balast považuji mnoho z linuxu
    v poslední době.

  • 16. 3. 2016 13:06

    spacok (neregistrovaný) ---.ekosoft.sk

    To ze potrebujete sledovat co robi Vas tunner, chapem, nejaky plugin na ot by som si napisal aj ja. Ja skor apelujem na cely moderny system desktopov. Miesto toho aby sme sa snazili spravit veci poriadne a cisto, pouzivane kopu virtualizovanych a interpretovanych jazykov, komunikujeme spolu cez dbus (ci je alternativa k win COM) a obhajujeme to tym ze pocitace maju stale vacsi vykon. K comu je potom ten vykon dobry ked v konecnom dosledku to pojde rovnako rychlo ako 486-ka s KDE 1 (ak nei aj horsie)? Awesome som si vybral prave pre to ze je to WM ktory mi ide rovnako rychlo na desktope kde mam 4 jadra a 8G RAM a takisto svizne funguje na malom netbooku kde su 2 atomy a 2G RAM. Ako distro mam gentoo bez pam a bez systemd, ked po boote pustim htopm tak sa mi zoznam procesov sprace na jednu obrazovku nemusim nic scrollovat. Takze stale sa da linux spojazdnit s rezime system bez balastu co pri modernych user friendly distribuciach nehrozi. Ide len o to chciet. Kazdopadne, ak sa Vam paci LUA treba vyskusat awesome, je to sice pracne ale ten desktop sa da neskutocne vyladit :)

DigiZone.cz: Sony MP-CL1A: miniaturní projektor

Sony MP-CL1A: miniaturní projektor

DigiZone.cz: DVB-T2 ověřeno: ČRa doplňují seznam

DVB-T2 ověřeno: ČRa doplňují seznam

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

Vitalia.cz: Tohle jsou nejlepší česká piva podle odborníků

Tohle jsou nejlepší česká piva podle odborníků

DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

DigiZone.cz: Samsung EVO-S: novinka pro Skylink

Samsung EVO-S: novinka pro Skylink

Podnikatel.cz: Babišovi se nedá věřit, stěžovali si hospodští

Babišovi se nedá věřit, stěžovali si hospodští

Vitalia.cz: Muž, který miluje příliš. Ženám neimponuje

Muž, který miluje příliš. Ženám neimponuje

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

Vitalia.cz: 5 chyb, které děláme při skladování potravin

5 chyb, které děláme při skladování potravin

DigiZone.cz: Na jaká videa se vlastně díváme

Na jaká videa se vlastně díváme

DigiZone.cz: Světový pohár v přímém přenosu na ČT

Světový pohár v přímém přenosu na ČT

DigiZone.cz: Digi Slovakia zařazuje stanice SPI

Digi Slovakia zařazuje stanice SPI

Vitalia.cz: Tahák, jak vyzrát nad zápachem z úst

Tahák, jak vyzrát nad zápachem z úst

DigiZone.cz: Wimbledon na Nova Sport až do 2019

Wimbledon na Nova Sport až do 2019

Podnikatel.cz: EET pro e-shopy? Postavené na hlavu

EET pro e-shopy? Postavené na hlavu

Lupa.cz: Jak levné procesory změnily svět?

Jak levné procesory změnily svět?

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Lupa.cz: Blíží se konec Wi-Fi sítí bez hesla?

Blíží se konec Wi-Fi sítí bez hesla?

Vitalia.cz: Jsou vegani a vyrábějí nemléko

Jsou vegani a vyrábějí nemléko