Example #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",
        }
Example #2
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']) + ']')
Example #3
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)
                    + "'",
                )