コード例 #1
0
ファイル: navigation.py プロジェクト: evgen1978/kodi-addons
def search(params):
    listing = []
    content = "videos"
    page = 1
    update = False
    category = "Search"
    if params.mod == "index":
        listing = get_listing("search")
    else:
        category = category + "/" + params.mod
        result = query = ""
        dialog = xbmcgui.Dialog()
        if params.mod == "Discover":
            content = ""
            if params.page:
                page = params.page
                update = True
            results = client("/search/movie",
                             get_data={
                                 "type": "discover",
                                 "primary_release_year": 2018,
                                 "sort_by": "popularity.desc",
                                 "page": page
                             })
        else:
            query = dialog.input(translate('Search ' + params.mod),
                                 type=xbmcgui.INPUT_ALPHANUM)
            content = "videos"
            if query == "":
                return Plugin.create_listing(listing, succeeded=False)
            results = client("/search/" + params.mod.lower()[:-1],
                             get_data={
                                 'page': page,
                                 'type': "search",
                                 "language": 'ru',
                                 'query': query
                             })
        for i in results:
            item = []
            if params.mod == "Shows":
                item = makeTvShowItem(i)
            else:
                item = makeMovieItem(i)
            listing.append(item)

        if len(listing) > 19 and params.mod == "Discover":
            listing.append({
                "label":
                "Next Page >",
                "url":
                plugin.get_url(action='search',
                               mod=params.mod,
                               page=int(page) + 1)
            })
    return Plugin.create_listing(listing,
                                 succeeded=True,
                                 content=content,
                                 update_listing=update,
                                 category="Search")
コード例 #2
0
ファイル: navigation.py プロジェクト: evgen1978/kodi-addons
def play(params):
    touch(TORRSERVED_HOST + params.link)
    hash = params.link[17:57]
    success = makePreloadDialog(hash)
    return Plugin.resolve_url(TORRSERVED_HOST +
                              params.link.replace('/preload/', '/view/'),
                              succeeded=success)
コード例 #3
0
ファイル: navigation.py プロジェクト: evgen1978/kodi-addons
def root():
    resp = client("/echo")
    if not resp:
        notify(translate("Server is down") % TORRSERVED_HOST)
        return
    else:
        listing = get_listing("index")
        return Plugin.create_listing(listing, category="TorrServer:v " + resp)
コード例 #4
0
ファイル: navigation.py プロジェクト: evgen1978/kodi-addons
def show_torrents(params):
    info = '{"TmdbID": "' + params.id + '", "VideoType": "' + params.type + '"}'
    filter = params.year
    title = params.title
    if (params.type == 'tvshow'):
        info = '{"TmdbID": "' + params.id + '", "VideoType": "show"}'
        pSelSeason = xbmcgui.Dialog()
        list = ["Season %d" % x for x in range(1, int(params.season) + 1)]
        list.insert(0, "All")
        ret = pSelSeason.select("Select Season", list)
        if ret != 0:
            selSeason = str(ret)
            filter = "S0" + selSeason + "|0" + selSeason + "x"
        else:
            filter = ""
    resp = client("/search/torrent", get_data={'query': title, 'ft': filter})
    list = []
    if resp is None:
        return False

    for tor in resp:
        size = 0
        try:
            if (tor['Size'][-2:] == u"МБ" or tor['Size'][-2:].lower() == "mb"):
                size = int(tor['Size'][:3]) * 2 << 19
            else:
                size = float(tor['Size'][:-3]) * float(2 << 29)
        except:
            pass
        name = parseName(tor['Name'])
        if tor['PeersUl'] >= 0:
            name = "%s [U:%d|D:%d]" % (name, tor['PeersUl'], tor['PeersDl'])
        list.append({
            'label':
            name,
            'info': {
                'video': {
                    'size': size,
                    'mediatype': 'video'
                }
            },
            'url':
            plugin.get_url(action="play_now", magnet=tor['Magnet']),
            'is_folder':
            False,
            "is_playable":
            True,
            'context_menu':
            [(translate('Add to DB'), 'RunPlugin(' + plugin.get_url(
                action='torrents', mod='add', magnet=tor['Magnet'], info=info)
              + ')')],
        })
    return Plugin.create_listing(list,
                                 succeeded=True,
                                 content="videos",
                                 sort_methods=xbmcplugin.SORT_METHOD_SIZE,
                                 cache_to_disk=True)
コード例 #5
0
ファイル: navigation.py プロジェクト: evgen1978/kodi-addons
def play_now(params):
    pDialog = xbmcgui.DialogProgress()
    pDialog.create("TorrServer", "Wait for info....")
    success = False
    counter = 0
    selFile = None
    while True:
        if pDialog.iscanceled():
            pDialog.close()
            client("/torrent/drop", post_data={"Hash": params.magnet[20:60]})
            break
        time.sleep(0.5)
        stat = client("/torrent/play",
                      get_data={
                          "stat": "true",
                          "link": params.magnet,
                      })
        if stat is None or len(stat['FileStats']) == 0:
            counter += 1
            if counter < 60:
                time.sleep(0.5)
                continue
            else:
                pDialog.close()
                break
        if len(stat['FileStats']) > 1 and selFile is None:
            sDialog = xbmcgui.Dialog()
            filelist = []
            for f in stat['FileStats']:
                filelist.append(f['Path'])
            sel = sDialog.select('Choose a file', filelist)
            if sel == -1:
                client("/torrent/drop", post_data={"Hash": stat['Hash']})
                break
            else:
                selFile = sel
                continue
        elif len(stat['FileStats']) == 1 and selFile is None:
            selFile = 0
            continue
        else:
            pDialog.close()
            preload = touch(TORRSERVED_HOST + "/torrent/play?link=" +
                            params.magnet + "&file=" + str(selFile))
            success = makePreloadDialog(stat['Hash'])
            break

    return Plugin.resolve_url(TORRSERVED_HOST + "/torrent/play?link=" +
                              params.magnet + "&file=" + str(selFile),
                              succeeded=success)
コード例 #6
0
def torrents(params):
    listing = []
    if params.mod == "list":
        listing = get_listing("torrents")
    elif params.mod == "files":
        listing = makeFileList(params.hash)
    elif params.mod == "delete":
        client("/torrent/rem", post_data={"Hash": params.hash})
        notify("Deleted!")
        xbmc.executebuiltin("Container.Refresh")
        return
    return Plugin.create_listing(listing,
                                 content="videos",
                                 category="Torrents")
コード例 #7
0
ファイル: navigation.py プロジェクト: evgen1978/kodi-addons
# -*- coding: utf-8 -*-
import os
import json
import time
import urllib

import xbmc
import xbmcgui
import xbmcplugin

from torrserve.client import client, touch
from torrserve.config import TORRSERVED_HOST, ADDON_PATH
from torrserve.simpleplugin import Plugin
from torrserve.utils import humanizeSize, notify, settingsIsOpen, parseName

plugin = Plugin()
translate = plugin.initialize_gettext()


@plugin.action()
def root():
    resp = client("/echo")
    if not resp:
        notify(translate("Server is down") % TORRSERVED_HOST)
        return
    else:
        listing = get_listing("index")
        return Plugin.create_listing(listing, category="TorrServer:v " + resp)


@plugin.action("torrents")