Ejemplo n.º 1
0
    def make_movie_api(self, imdb_id, kp_id, settings):
        orig = None
        year = None
        #imdbRaiting=None

        if not imdb_id:
            if u'originaltitle' in self.Dict():
                orig = self.Dict()['originaltitle']
            if u'year' in self.Dict():
                year = self.Dict()['year']

        from movieapi import MovieAPI
        self.__movie_api, imdb_id = MovieAPI.get_by(imdb_id=imdb_id,
                                                    kinopoisk_url=kp_id,
                                                    orig=orig,
                                                    year=year,
                                                    settings=settings)
        if imdb_id:
            self.Dict()['imdb_id'] = imdb_id
Ejemplo n.º 2
0
def main():
    debug_info_label("ListItem.FileName")
    debug_info_label("ListItem.Path")
    debug_info_label("ListItem.FileExtension")
    debug_info_label("ListItem.FileNameAndPath")
    debug_info_label("ListItem.DBID")  # movie id)
    debug_info_label("ListItem.IMDBNumber")

    debug_info_label("Container.FolderPath")

    # import rpdb2
    # rpdb2.start_embedded_debugger('pw')

    import player

    settings = player.load_settings()

    path = xbmc.getInfoLabel("ListItem.FileNameAndPath")
    name = xbmc.getInfoLabel("ListItem.FileName")

    import xbmcvfs, os

    tempPath = xbmc.translatePath("special://temp")
    if xbmcvfs.exists(path + ".alternative"):
        debug("path exists")
        xbmcvfs.copy(path, os.path.join(tempPath, name))
        xbmcvfs.copy(path + ".alternative", os.path.join(tempPath, name + ".alternative"))
        path = os.path.join(tempPath, name)

    links = STRMWriterBase.get_links_with_ranks(path.decode("utf-8"), settings, use_scrape_info=True)

    window = MyWindow("Media Aggregator", settings=settings, links=links)
    window.doModal()

    debug(window.has_choice)
    debug(window.has_select_file)

    if not window.has_choice and not window.has_select_file:
        del window
        return

    cursel = window.list.getSelectedItem()
    debug(cursel.getLabel())
    link = cursel.getProperty("link")
    debug(link)

    if link == "plugin://script.media.aggregator/?action=settings":
        xbmc.executebuiltin("Addon.OpenSettings(script.media.aggregator)")
        del window
        return

    if link == "plugin://script.media.aggregator/?action=show_similar":
        imdb_id = xbmc.getInfoLabel("ListItem.IMDBNumber")
        type = "movie"

        if not imdb_id and xbmc.getInfoLabel("ListItem.DBTYPE") == "episode":
            from nforeader import NFOReader

            nfo_path = xbmc.getInfoLabel("ListItem.FileNameAndPath").replace(".strm", ".nfo").decode("utf-8")
            debug(nfo_path)
            rd = NFOReader(nfo_path, "")
            tvs_rd = rd.tvs_reader()
            imdb_id = tvs_rd.imdb_id()
            type = "tv"

        if imdb_id:
            from movieapi import MovieAPI

            res = MovieAPI.tmdb_by_imdb(imdb_id, type)
            debug(res)
            if res and len(res) > 0:
                tmdb_id = res[0].tmdb_id()
                xbmc.executebuiltin(
                    'Container.Update("plugin://script.media.aggregator/?action=show_similar&tmdb=%s")' % tmdb_id
                )
                del window
                return

    if link == "plugin://script.media.aggregator/?action=add_media":
        imdb_id = xbmc.getInfoLabel("ListItem.IMDBNumber")
        title = xbmc.getInfoLabel("ListItem.Title")

        debug(imdb_id)
        debug(title)

        from service import add_media

        add_media(title.decode("utf-8"), imdb_id)
        return

    selected_file = None
    if window.has_select_file:
        # selected_file = window.files.getSelectedItem().getLabel()
        selected_file = window.files.getSelectedItem().getProperty("index")

    del window

    with filesystem.fopen(path.decode("utf-8"), "r") as strm:
        src_link = strm.read()
        debug(src_link)
        pattern = "torrent=(.+?)&"
        match = re.search(pattern, str(link))
        if not match:
            pattern2 = "torrent=(.+)"
            match = re.search(pattern2, str(link))

        if match:
            dst_link = re.sub(pattern, "torrent=" + match.group(1) + "&", str(src_link)) + "&onlythis=true"
            debug(dst_link)

            if selected_file:
                # import urllib
                # from tvshowapi import cutStr
                # dst_link += '&cutName=' + urllib.quote(cutStr(selected_file))
                dst_link += "&index=" + str(selected_file)

            xbmc.executebuiltin("xbmc.PlayMedia(" + dst_link + ")")

    if tempPath in path:
        xbmcvfs.delete(path)
        xbmcvfs.delete(path + ".alternative")
Ejemplo n.º 3
0
def main():
	from service import create_mark_file
	create_mark_file()

	params = get_params()
	debug(params)
	settings = load_settings()

	debug(settings.base_path())
	if 'torrent' in params:
		# import rpdb2
		# rpdb2.start_embedded_debugger('pw')
		play_torrent(settings=settings, params=params)

	elif params.get('action') == 'anidub-add-favorites':
		debug('anidub-add-favorites')
		anidub_enable = _addon.getSetting('anidub_enable') == 'true'
		if anidub_enable:
			if settings.anime_save:
				debug('scan for anidub-add-favorites')
				anidub.write_favorites(settings.anime_tvshow_path(), settings)

	elif params.get('action') == 'settings':
		dialog_action(dialog_action_case.settings, settings)

	elif params.get('action') == 'search':
		dialog_action(dialog_action_case.search, settings)

	elif params.get('action') == 'search_context':
		s = params.get('s')
		show_list(MovieAPI.search(s.decode('utf-8')))

	elif params.get('action') == 'catalog':
		dialog_action(dialog_action_case.catalog, settings)

	elif params.get('action') == 'show_category':
		if params.get('category') == 'popular':
			show_list(MovieAPI.popular())
		if params.get('category') == 'top_rated':
			show_list(MovieAPI.top_rated())
		if params.get('category') == 'popular_tv':
			show_list(MovieAPI.popular_tv())
		if params.get('category') == 'top_rated_tv':
			show_list(MovieAPI.top_rated_tv())

	elif params.get('action') == 'show_similar':
		listing = MovieAPI.show_similar(params.get('tmdb'))
		log.debug(listing)
		show_list(listing)

	elif params.get('action') == 'add_media':
		title = urllib.unquote_plus(params.get('title')).decode('utf-8')
		imdb = params.get('imdb')

		import json
		found = None

		# import rpdb2
		# rpdb2.start_embedded_debugger('pw')

		req = {"jsonrpc": "2.0", "method": "VideoLibrary.GetMovies", "params": {"properties": ["title", "originaltitle", "year", "file", "imdbnumber"]}, "id": "libMovies"}
		result = json.loads(xbmc.executeJSONRPC(json.dumps(req)))
		try:
			for r in result['result']['movies']:
				if r['imdbnumber'] == imdb:
					found = 'movie'
					break
		except KeyError:
			debug('KeyError: Movies not found')

		if not found:
			req = {"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": {"properties": ["title", "originaltitle", "year", "file", "imdbnumber"]}, "id": "libTvShows"}
			result = json.loads(xbmc.executeJSONRPC(json.dumps(req)))
			try:
				for r in result['result']['tvshows']:
					if r['imdbnumber'] == imdb:
						found = 'tvshow'
						break
			except KeyError:
				debug('KeyError: TVShows not found')

		dialog = xbmcgui.Dialog()
		if found == 'movie':
			if dialog.yesno(u'Кино найдено в библиотеке', u'Запустить?'):
				#with filesystem.fopen(r['file'], 'r') as strm:
				#	xbmc.executebuiltin('RunPlugin("%s")' % strm.read())
				xbmc.executebuiltin('PlayMedia("%s")' % r['file'].encode('utf-8'))
		elif found == 'tvshow':
			if dialog.yesno(u'Сериал найден в библиотеке', u'Перейти?'):
				xbmc.executebuiltin('ActivateWindow(Videos,%s,return)' % r['file'].encode('utf-8'))
		elif not params.get('norecursive'):
			if dialog.yesno(u'Кино/сериал не найден в библиотеке', u'Запустить поиск по трекерам?'):
				from service import add_media
				add_media(title, imdb)

	else:
		menu_items = [u'Генерировать .strm и .nfo файлы',
		              u'Создать источники',
		              u'Настройки',
		              u'Поиск',
		              u'Каталог'
		]
		menu_actions = ['generate',
		                'sources',
						'settings',
						'search',
						'catalog'
		]

		if params.get('menu') in menu_actions:
			dialog_action(menu_actions.index(params.get('menu')), settings)
		else:
			indx = 0
			addon_handle = int(sys.argv[1])
			for menu in menu_items:
				li = xbmcgui.ListItem(menu)
				url = 'plugin://script.media.aggregator/?menu=' + menu_actions[indx]
				xbmcplugin.addDirectoryItem(handle=addon_handle, url=url, listitem=li, isFolder=indx > dialog_action_case.settings)
				indx += 1

			xbmcplugin.endOfDirectory(addon_handle)

		'''
Ejemplo n.º 4
0
def dialog_action(action, settings):
	# import rpdb2
	# rpdb2.start_embedded_debugger('pw')


	if action == dialog_action_case.generate:
		anidub_enable = _addon.getSetting('anidub_enable') == 'true'
		hdclub_enable = _addon.getSetting('hdclub_enable') == 'true'
		nnmclub_enable = _addon.getSetting('nnmclub_enable') == 'true'
		rutor_enable = _addon.getSetting('rutor_enable') == 'true'

		if not (anidub_enable or hdclub_enable or nnmclub_enable or rutor_enable):
			xbmcgui.Dialog().ok(_ADDON_NAME, u'Пожалуйста, заполните настройки', u'Ни одного сайта не выбрано')
			action = dialog_action_case.settings
		else:
			from service import start_generate
			# if check_sources(settings):
			start_generate()
			return True

	if action == dialog_action_case.sources:
		# import rpdb2
		# rpdb2.start_embedded_debugger('pw')

		import sources

		# sources.create(settings)
		dialog = xbmcgui.Dialog()
		if sources.create(settings):
			if dialog.yesno('Media Aggregator', restart_msg):
				from service import update_library_next_start

				update_library_next_start()
				xbmc.executebuiltin('Quit')

	if action == dialog_action_case.settings:
		save_nnmclub_login = settings.nnmclub_login
		save_nnmclub_password = settings.nnmclub_password
		_addon.openSettings()
		settings = load_settings()

		if save_nnmclub_login != settings.nnmclub_login or save_nnmclub_password != settings.nnmclub_password:
			passkey = nnmclub.get_passkey(settings=settings)
			_addon.setSetting('nnmclub_passkey', passkey)
			settings.nnmclub_passkey = passkey

	if action == dialog_action_case.search:

		dlg = xbmcgui.Dialog()
		s = dlg.input(u'Введите поисковую строку')

		if s:
			debug(s)
			show_list(MovieAPI.search(s.decode('utf-8')))

	if action == dialog_action_case.catalog:
		addon_handle = int(sys.argv[1])
		xbmcplugin.setContent(addon_handle, 'movies')

		listing = {

			'popular': u'Популярные',
			'top_rated': u'Рейтинговые',
			'popular_tv': u'Популярные сериалы',
			'top_rated_tv': u'Рейтинговые сериалы'
		}

		for l in listing:
			li = xbmcgui.ListItem(listing[l])
			li.setProperty("folder", "true")
			li.setProperty('IsPlayable', 'false')

			url = 'plugin://script.media.aggregator/?action=show_category&category=' + l
			debug(url)
			xbmcplugin.addDirectoryItem(handle=addon_handle, url=url, listitem=li, isFolder=True)

		xbmcplugin.endOfDirectory(addon_handle)

	if action > dialog_action_case.settings or action < dialog_action_case.generate:
		return True

	return False