Пример #1
0
def watch_program():
	videoUrl = args.get('videoUrl', None)
	dnatv = DNATVSession(username, password, servicename)
	if dnatv.login():
		url = dnatv.getplayableurl(videoUrl[0]).headers.get('location')
		title = args.get('title', None)
		listitem = xbmcgui.ListItem(title)
		listitem.setInfo('video', {'Title': title})
		listitem.setPath(url)
		xbmcplugin.setResolvedUrl(handle=addon_handle, succeeded=True, listitem=listitem)
Пример #2
0
def livetv_dir():
	dnatv = DNATVSession(username, password, servicename)
	if dnatv.login():
		liveTV = dnatv.getlivetv()
		for channel in liveTV:
			if not channel['isUserAuthorized']:
				continue
			try:
				url = build_url({'mode': 'watch', 'videoUrl': channel['liveService']['services'][0]['stream']['streamUrl']})
			except IndexError:
				continue
			li = xbmcgui.ListItem(channel['title'], iconImage='DefaultFile.png')
			start_time = channel['epg'][0]['startTime'].split()
			li.setInfo('video', { 'StartTime': start_time[4],
				'Plot' : channel['epg'][0]['title'] + '\n' + channel['epg'][0]['description']})
			li.setProperty('IsPlayable', 'true')
			add_logout_context_menu_item( li )
			xbmcplugin.addDirectoryItem(handle=addon_handle, url=url, listitem=li, isFolder=False)
		xbmcplugin.endOfDirectory(addon_handle)	
Пример #3
0
def recordings_dir():


	# First check if the recording list is refreshed within two minutes and load it only if it's not
	if int(time.time())- last_refresh > (listagelimit *60):
		dnatv = DNATVSession(username, password, servicename)
		if dnatv.login():
			recordings = dnatv.getrecordings()
			if recordings is None:
				xbmc.executebuiltin('XBMC.Notification(' + settings.getLocalizedString(30055) + ', )')
				sys.exit()
			settings.setSetting( id='lastRecordingsRefresh', value=str(int(time.time())))
			settings.setSetting( id='recordingList', value=json.dumps(recordings))

	else:
		recordings = json.loads(settings.getSetting( id='recordingList'))

	seriescandidates = []
	recordtitles = []
	serieslist = []
	title_re = re.compile('[:(]')
	
	for recording in recordings:
		short_title = title_re.split(recording['title'])[0].strip()
		try:
			if not recording['recordings'][0]['status'] == 'RECORDED':
				continue
		except IndexError:
			continue
		if short_title in serieslist:
			continue
		if short_title in recordtitles:
			serieslist.append(short_title)
			continue
		else:
			recordtitles.append(short_title)
			seriescandidates.append(recording)

	serieslist.sort()
	settings.setSetting( id='seriestitles', value=json.dumps(serieslist))
	existingfolders = []
	series = False

	for recording in seriescandidates:
		series = False
		for seriestitle in serieslist:
			if re.match(seriestitle + r'\b',recording['title']):
					if not seriestitle in existingfolders:
						existingfolders.append(seriestitle)
						url = build_url({'foldername': serieslist.index(seriestitle)})
						li = build_li(recording, True, seriestitle)
						xbmcplugin.addDirectoryItem(handle=addon_handle, url=url, listitem=li, isFolder=True)
					series = True
					break
#			if re.match(seriestitle + r'\s',recording['title']):
#					if not seriestitle in existingfolders:
#						existingfolders.append(seriestitle)
#						url = build_url({'foldername': serieslist.index(seriestitle)})
#						li = build_li(recording, True, seriestitle)
#						xbmcplugin.addDirectoryItem(handle=addon_handle, url=url, listitem=li, isFolder=True)
#					series = True
#					break

		if not series:
			url = build_url({'mode': 'watch', 'videoUrl': recording['recordings'][1]['stream']['streamUrl']})
			li = build_li(recording, False)
			xbmcplugin.addDirectoryItem(handle=addon_handle, url=url, listitem=li, isFolder=False)

	xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_LABEL)
	xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_DATE)
	xbmcplugin.endOfDirectory(addon_handle)
Пример #4
0
def recordings_dir():

	# First check if the recording list is refreshed within two minutes and load it only if it's not
	isnewlist = False

	if int(time.time())- last_refresh > 120:
		isnewlist = True
		dnatv = DNATVSession(username, password, servicename)
		if dnatv.login():
			recordings = dnatv.getrecordings()
			settings.setSetting( id='lastRecordingsRefresh', value=str(int(time.time())))
			settings.setSetting( id='recordingList', value=json.dumps(recordings))

	else:
		recordings = json.loads(settings.getSetting( id='recordingList'))

	recordtitles = []
	serieslist = []
	title_re = re.compile('[:(]')
	
	for recording in recordings:
		short_title = title_re.split(recording['title'])[0].strip()
		if short_title in serieslist:
			continue
		if short_title in recordtitles:
			serieslist.append(short_title)
		else:
			recordtitles.append(short_title)
	serieslist = set(serieslist)
	removable = set()
	for i in serieslist:
		for j in serieslist:
			if j.startswith(i+' ') and (i != j):
				removable.add(j)

	serieslist = list(serieslist.difference(removable))
	existingfolders = []

	settings.setSetting( id='seriestitles', value=json.dumps(serieslist))
	for recording in recordings:
		try:
			if not recording['recordings'][0]['status'] == 'RECORDED':
				continue
		except IndexError:
			continue
		groupmember = False
		for seriestitle in serieslist:
			myregex = seriestitle + r'\b'
			if re.match(myregex,recording['title']):

				if not seriestitle in existingfolders:
					existingfolders.append(seriestitle)
					url = build_url({'foldername': serieslist.index(seriestitle)})
					li = build_li(recording, True, seriestitle)
					xbmcplugin.addDirectoryItem(handle=addon_handle, url=url, listitem=li, isFolder=True)
				recording['series'] = seriestitle
				groupmember = True
		if groupmember:
			continue
		url = build_url({'mode': 'watch', 'videoUrl': recording['recordings'][1]['stream']['streamUrl']})
		li = build_li(recording, False)
		xbmcplugin.addDirectoryItem(handle=addon_handle, url=url, listitem=li, isFolder=False)

	if isnewlist:
		settings.setSetting( id='recordingList', value=json.dumps(recordings))
	xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_LABEL)
	xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_DATE)
	xbmcplugin.endOfDirectory(addon_handle)