• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Vítejte návštevníku! Přihlášení Registrace


Hodnocení tématu:
  • 0 Hlas(ů) - 0 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Pomoc s addonom
#1
Zdravím Kodi nadšencov,

obraciam sa na Vás skúsenejších s pomocou pri tvorbe addonu. Chcem si vytvoriť addon, ktorý by mi prehral práve vysielaný program od začiatku (resp. aby sa dalo pretočiť späť na začiatok). Ale neviem si rady, ako získať z epg začiatok a koniec práve vysielaného programu. Výsledný čas musí však byť vo formáte UTC. Napr. program začína 12.11.2021 o 09:00:00, a ja potrebujem tento čas zmeniť na 1636707600.

Addon zatiaľ vyzerá takto:

# -*- coding: utf-8 -*-

import requests
import json
import xbmc
import xbmcgui
import datetime
import time
import random
import urllib.request, urllib.parse, urllib.error

#fix for datatetime.strptime returns None
class proxydt(datetime.datetime):
    @staticmethod
    def strptime(date_string, format):
        import time
        return datetime.datetime(*(time.strptime(date_string, format)[0:6]))

datetime.datetime = proxydt

#final url stream and check channel support
epg_end = datetime.datetime.strptime(xbmc.getInfoLabel('ListItem.EndTime'), "%H:%M") + (datetime.timedelta(minutes=-2))
epg_date = datetime.datetime.strptime(xbmc.getInfoLabel('ListItem.Date'), "%d.%m.%Y %H:%M")
epg_url = requests.get(" https://..../?Limit=500' + channel_id + '&from=' + epg_date + '&to=' + epg_end ").json()
start = int(epg_url['items']['programs'][0]['startTimeUTC']/1000)
end = int(epg_url['items']['programs'][0]['endTimeUTC']/1000)
stream_url = ......

A žiaľ neviem si dať rady ako docieliť, aby epd_date a epg_end boli v tom požadovanom tvare UTC, čiže epg_url by vyzeralo napríklad takto:

https://..../?Limit=500&channel_id=150&from=1636707600&to=1636709400

Nájde sa niekto, kto by ma nakopol ako si s tým poradiť? Snáď som vysvetlil môj problém zrozumiteľne.
Za každú pomoc Vám budem vďačný.

S pozdravom Rado.
 
Citovat
#2
@radoorech: To, co ty požaduješ zřejmě není jen převod na UTC, ale z Date Time na Epoch Time: https://www.javatpoint.com/python-epoch-to-datetime
X96max plus 4/32 + CE 21 + skin Confluence SCC / TV Samsung QE55Q6FNA
X96max plus 4/32 + CE 20.5 + skin Confluence SCC

AVR Denon 1600H / Dali Spektor 5.1
Win10pro + Kodi19.5
NAS Synology 215j 3TB Raid1
Router Turris 1.1
 
Citovat
#3
Kód:
# -*- coding: utf-8 -*-
from datetime import datetime


def get_sec(time_str):
    h, m, s = time_str.split(':')
    return int(h) * 3600 + int(m) * 60 + int(s)


duration = get_sec(xbmc.getInfoLabel('ListItem.Duration(HH:mm:ss)'))
epg = xbmc.getInfoLabel('ListItem.FileName').replace(".epg", "").replace(" ", "T")
start = int(datetime.fromisoformat(epg).timestamp()) + 3600
end = start + duration
 
Citovat
#4
@jkmh: áno, presne tak ako si napísal, zle som to nazval.

@Saros: ďakujem ti za ochotu, skúsim to upraviť podľa tvojho návrhu. Len nie celkom rozumiem tomu "
Kód:
epg = xbmc.getInfoLabel('ListItem.FileName').replace(".epg", "").replace(" ", "T")
".
Môžeš mi prosím ťa vysvetliť čo sa  tým myslí?
 
Citovat
#5
Je to vlastně název souboru, který odkazuje na daný pořad v epg. V názvu je datum a čas začátku pořadu. Mám to takto, protože přes getInfoLabel nelze zjist datum konce. Takže k začátku jen přičtu trvání pořadu (duration). Samozřejmě že můžeš použít i StartTime.
 
Citovat
#6
@Saros: veľká vďaka za tvoju pomoc, po tvojich úpravách to funguje ako som si predstavoval. Ďakujem ti veľmi pekne za ochotu.
 
Citovat
#7
Tak ještě ten časový posun
Kód:
# -*- coding: utf-8 -*-
import xbmc
from datetime import datetime
import time


def get_sec(time_str):
    h, m, s = time_str.split(':')
    return int(h) * 3600 + int(m) * 60 + int(s)


duration = get_sec(xbmc.getInfoLabel('ListItem.Duration(HH:mm:ss)'))
epg = xbmc.getInfoLabel('ListItem.FileName').replace(".epg", "").replace(" ", "T")
start = int(datetime.fromisoformat(epg).timestamp()) + abs(time.timezone)
end = start + duration
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)