Beispiel #1
0
    def http(self, path, handler):
        p = path.split('/')
        #p[0] == '', p[1] == 'core', p[2] == 'SOMEPAGE', p[3] == '' <-- example

        if len(p) > 2:
            if p[2].lower() == 'torrentinfo':
                if self.torrentInfo != None:
                    trackers = []
                    for x in self.torrentInfo.trackers():
                        trackers.append(x)
                    comment = '<br />' + self.torrentInfo.comment(
                    ) + '' if self.torrentInfo.comment() != '' else ''

                    out = (
                        '<h4>{5} files, {1} in total<br />{6} pieces, {7} per piece<br />Created on {2}<br />Announce on {3} {4}'
                    ).format(
                        self.torrentInfo.name(),
                        fmt(self.torrentInfo.total_size()),
                        str(self.torrentInfo.creation_date()),
                        trackers[0].url.replace('udp://',
                                                '').replace('http://',
                                                            '').split('/')[0],
                        comment, str(self.torrentInfo.num_files()),
                        self.torrentInfo.num_pieces(),
                        fmt(self.torrentInfo.piece_length()))
                    if self.torrentInfo.creator() != '':
                        out += '<br />Created by ' + self.torrentInfo.creator()
                    out += '</h4><br />'
                    for f in self.torrentInfo.files():
                        out += ('{0} [{1}]').format(os.path.basename(f.path),
                                                    fmt(f.size)) + '<br />'

                    return {
                        'title': self.torrentInfo.name(),
                        'content': out,
                        'mascot': 'Saber',
                        'max-width': '1024px'
                    }
                else:
                    return {
                        'title': 'No torrent selected',
                        'content':
                        'Please use the nyaa search command and refresh this page',
                        'mascot': 'Saber'
                    }

        return {
            'title': 'Nyaa search and torrent parser',
            'content':
            'Searches on <a href="http://nyaa.eu" target="_BLANK">nyaa.eu</a> and optionally gives more information on the .torrent file',
            'mascot': 'Saber'
        }
Beispiel #2
0
    def http(self, path, handler):
        p = path.split("/")
        # p[0] == '', p[1] == 'core', p[2] == 'SOMEPAGE', p[3] == '' <-- example

        if len(p) > 2:
            if p[2].lower() == "torrentinfo":
                if self.torrentInfo != None:
                    trackers = []
                    for x in self.torrentInfo.trackers():
                        trackers.append(x)
                    comment = "<br />" + self.torrentInfo.comment() + "" if self.torrentInfo.comment() != "" else ""

                    out = (
                        "<h4>{5} files, {1} in total<br />{6} pieces, {7} per piece<br />Created on {2}<br />Announce on {3} {4}"
                    ).format(
                        self.torrentInfo.name(),
                        fmt(self.torrentInfo.total_size()),
                        str(self.torrentInfo.creation_date()),
                        trackers[0].url.replace("udp://", "").replace("http://", "").split("/")[0],
                        comment,
                        str(self.torrentInfo.num_files()),
                        self.torrentInfo.num_pieces(),
                        fmt(self.torrentInfo.piece_length()),
                    )
                    if self.torrentInfo.creator() != "":
                        out += "<br />Created by " + self.torrentInfo.creator()
                    out += "</h4><br />"
                    for f in self.torrentInfo.files():
                        out += ("{0} [{1}]").format(os.path.basename(f.path), fmt(f.size)) + "<br />"

                    return {"title": self.torrentInfo.name(), "content": out, "mascot": "Saber", "max-width": "1024px"}
                else:
                    return {
                        "title": "No torrent selected",
                        "content": "Please use the nyaa search command and refresh this page",
                        "mascot": "Saber",
                    }

        return {
            "title": "Nyaa search and torrent parser",
            "content": 'Searches on <a href="http://nyaa.eu" target="_BLANK">nyaa.eu</a> and optionally gives more information on the .torrent file',
            "mascot": "Saber",
        }
Beispiel #3
0
	def event(self, ev):
		if ev['name'] == 'msg':
			split = ev['msg'].split(' ')

			for word in split:
				if (word.lower().find('https://mega.co.nz/#!') == 0) or (word.lower().find('http://mega.co.nz/#!') == 0):
					try:
						info = self.mega.get_public_url_info(word)
						assert(info.get('name') != None)
						assert(info.get('size') != None)
					except Exception, e:
						ev['to'].msg('There was an error fetching Mega info from that link, it may be private or there may have happened a communication error. Sorry.')
						return

					ev['to'].msg(chr(3)+ '5Mega| ' + chr(15) +chr(2) + info['name'] + chr(15) + ' [' + fmt(info['size']) + ']')
Beispiel #4
0
    def nyaaSearch(self, args, receiver, sender):
        """ nyaa [search term] | {'public': True, 'admin_only': False} | Searches nyaa.eu torrents """
        if args == self.bot.cmd_char + "next":
            self.resultNum = self.resultNum + 1
            result = self.results[self.resultNum]
        elif args in [
                self.bot.cmd_char + "details", self.bot.cmd_char + "detail"
        ] and self.detailsEnabled:
            if isinstance(self.resultNum, str) == False and self.results != []:
                entry = self.results[self.resultNum]
                e = lt.bdecode(urlopen(entry['url']).read())
                info = lt.torrent_info(e)

                self.torrentInfo = info
                #maxfiles = 3

                baseURL = ''
                if (self.storage['config'].get('customURL') in [None,
                                                                '']) == False:
                    baseURL = self.storage['config']['customURL']
                else:
                    baseURL = 'http://' + self.storage['config'][
                        'domain'] + ':' + str(
                            self.storage['config']['webport']) + '/'
                URL = baseURL + os.path.basename(
                    inspect.getsourcefile(fuzzyTail)).split(
                        '.')[0] + '/torrentInfo'

                trackers = []
                for x in info.trackers():
                    trackers.append(x)
                comment = ' | ' + chr(3) + '14Comment "' + info.comment(
                ) + '" ' + chr(15) if info.comment() != '' else ' '

                msg = []
                msg.append(
                    (chr(3) + '14{5} files, {1} in total' + chr(15) + ' | ' +
                     chr(3) + '14Created on {2}' + chr(15) + ' | ' + chr(3) +
                     '14Announce on {3}' + chr(15) + ' | ' + chr(3) +
                     '14{6} pieces ({7} per piece)' + chr(15) + '{4}' +
                     '| More information (such as file list) on ' + chr(3) +
                     '2' + URL).format(
                         info.name(), fmt(info.total_size()),
                         str(info.creation_date()),
                         trackers[0].url.replace('udp://',
                                                 '').replace('http://',
                                                             '').split('/')[0],
                         comment, str(info.num_files()),
                         str(info.num_pieces()), fmt(info.piece_length())))
                #if info.num_files() != 0:
                #    if info.files()[0].path != info.name():
                #        for f in info.files()[:maxfiles]:
                #            msg.append(('{0}' + chr(15) + ' [' + chr(3) + '14{1}' + chr(15) + ']').format(os.path.basename(f.path), fmt(f.size)))
                #
                #if info.num_files() > maxfiles:
                #    msg.append('Omitted {0} files'.format(str(info.num_files()-maxfiles)))
                for message in msg:
                    receiver.msg(message)
                    sleep(1)

                return
            else:
                receiver.msg('You need to search for something first')
                return
        else:
            self.resultNum = 0
            args = quote(args)
            self.results = self.search(args)
            if len(self.results) == 0:
                receiver.msg(
                    chr(3) + '04Error' + chr(15) + ' no results found')
                return
            result = self.results[0]
        title = result['title']
        category = result['category']
        try:
            url = self.bot.modules['google']['instance'].shortenUrl(
                result['url'])
        except:
            url = result['url']
        details = result['description'].replace(
            'Remake',
            chr(15) + chr(3) + '04Remake' + chr(15))
        details = details.replace('Trusted',
                                  chr(15) + chr(3) + '03Trusted' + chr(15))
        self.bot.msg(
            receiver.name,
            chr(3) + '13[' + category + '] ' + chr(15) + title + ' [' +
            chr(3) + '14' + details + ']' + chr(15) + ' - ' + chr(2) + url)
        if self.resultNum == 0:
            if self.detailsEnabled:
                self.bot.msg(
                    receiver.name, "For details use '" + chr(3) + '03' +
                    self.bot.cmd_char + "nyaa " + self.bot.cmd_char +
                    "details" + chr(15) + "', for the next result use '" +
                    chr(3) + '03' + self.bot.cmd_char + "nyaa " +
                    self.bot.cmd_char + "next" + chr(15) + "'")
            else:
                self.bot.msg(
                    receiver.name, "For the next result use '" + chr(3) +
                    '03' + self.bot.cmd_char + "nyaa " + self.bot.cmd_char +
                    "next" + chr(15) + "'")
Beispiel #5
0
    def nyaaSearch(self, args, receiver, sender):
        """ nyaa [search term] | {'public': True, 'admin_only': False} | Searches nyaa.eu torrents """
        if args == self.bot.cmd_char + "next":
            self.resultNum = self.resultNum + 1
            result = self.results[self.resultNum]
        elif args in [self.bot.cmd_char + "details", self.bot.cmd_char + "detail"] and self.detailsEnabled:
            if isinstance(self.resultNum, str) == False and self.results != []:
                entry = self.results[self.resultNum]
                e = lt.bdecode(urlopen(entry["url"]).read())
                info = lt.torrent_info(e)

                self.torrentInfo = info
                # maxfiles = 3

                baseURL = ""
                if (self.storage["config"].get("customURL") in [None, ""]) == False:
                    baseURL = self.storage["config"]["customURL"]
                else:
                    baseURL = (
                        "http://"
                        + self.storage["config"]["domain"]
                        + ":"
                        + str(self.storage["config"]["webport"])
                        + "/"
                    )
                URL = baseURL + os.path.basename(inspect.getsourcefile(fuzzyTail)).split(".")[0] + "/torrentInfo"

                trackers = []
                for x in info.trackers():
                    trackers.append(x)
                comment = (
                    " | " + chr(3) + '14Comment "' + info.comment() + '" ' + chr(15) if info.comment() != "" else " "
                )

                msg = []
                msg.append(
                    (
                        chr(3)
                        + "14{5} files, {1} in total"
                        + chr(15)
                        + " | "
                        + chr(3)
                        + "14Created on {2}"
                        + chr(15)
                        + " | "
                        + chr(3)
                        + "14Announce on {3}"
                        + chr(15)
                        + " | "
                        + chr(3)
                        + "14{6} pieces ({7} per piece)"
                        + chr(15)
                        + "{4}"
                        + "| More information (such as file list) on "
                        + chr(3)
                        + "2"
                        + URL
                    ).format(
                        info.name(),
                        fmt(info.total_size()),
                        str(info.creation_date()),
                        trackers[0].url.replace("udp://", "").replace("http://", "").split("/")[0],
                        comment,
                        str(info.num_files()),
                        str(info.num_pieces()),
                        fmt(info.piece_length()),
                    )
                )
                # if info.num_files() != 0:
                #    if info.files()[0].path != info.name():
                #        for f in info.files()[:maxfiles]:
                #            msg.append(('{0}' + chr(15) + ' [' + chr(3) + '14{1}' + chr(15) + ']').format(os.path.basename(f.path), fmt(f.size)))
                #
                # if info.num_files() > maxfiles:
                #    msg.append('Omitted {0} files'.format(str(info.num_files()-maxfiles)))
                for message in msg:
                    receiver.msg(message)
                    sleep(1)

                return
            else:
                receiver.msg("You need to search for something first")
                return
        else:
            self.resultNum = 0
            args = quote(args)
            self.results = self.search(args)
            if len(self.results) == 0:
                receiver.msg(chr(3) + "04Error" + chr(15) + " no results found")
                return
            result = self.results[0]
        title = result["title"]
        category = result["category"]
        try:
            url = self.bot.modules["google"]["instance"].shortenUrl(result["url"])
        except:
            url = result["url"]
        details = result["description"].replace("Remake", chr(15) + chr(3) + "04Remake" + chr(15))
        details = details.replace("Trusted", chr(15) + chr(3) + "03Trusted" + chr(15))
        self.bot.msg(
            receiver.name,
            chr(3)
            + "13["
            + category
            + "] "
            + chr(15)
            + title
            + " ["
            + chr(3)
            + "14"
            + details
            + "]"
            + chr(15)
            + " - "
            + chr(2)
            + url,
        )
        if self.resultNum == 0:
            if self.detailsEnabled:
                self.bot.msg(
                    receiver.name,
                    "For details use '"
                    + chr(3)
                    + "03"
                    + self.bot.cmd_char
                    + "nyaa "
                    + self.bot.cmd_char
                    + "details"
                    + chr(15)
                    + "', for the next result use '"
                    + chr(3)
                    + "03"
                    + self.bot.cmd_char
                    + "nyaa "
                    + self.bot.cmd_char
                    + "next"
                    + chr(15)
                    + "'",
                )
            else:
                self.bot.msg(
                    receiver.name,
                    "For the next result use '"
                    + chr(3)
                    + "03"
                    + self.bot.cmd_char
                    + "nyaa "
                    + self.bot.cmd_char
                    + "next"
                    + chr(15)
                    + "'",
                )