示例#1
0
    def _DisplayService(self):

        service_type = self._service.GetServiceType()

        self._DisplayAccountInfo()

        if service_type in HC.REPOSITORIES + HC.LOCAL_SERVICES + [HC.IPFS]:

            service_info = self._controller.Read('service_info',
                                                 self._service_key)

            if service_type in (HC.LOCAL_RATING_LIKE,
                                HC.LOCAL_RATING_NUMERICAL):

                num_ratings = service_info[HC.SERVICE_INFO_NUM_FILES]

                self._ratings_text.SetLabelText(
                    HydrusData.ConvertIntToPrettyString(num_ratings) +
                    ' files rated')

            elif service_type == HC.LOCAL_BOORU:

                num_shares = service_info[HC.SERVICE_INFO_NUM_SHARES]

                self._num_shares.SetLabelText(
                    HydrusData.ConvertIntToPrettyString(num_shares) +
                    ' shares currently active')

        if service_type == HC.LOCAL_BOORU:

            booru_shares = self._controller.Read('local_booru_shares')

            self._booru_shares.DeleteAllItems()

            for (share_key, info) in booru_shares.items():

                name = info['name']
                text = info['text']
                timeout = info['timeout']
                hashes = info['hashes']

                self._booru_shares.Append(
                    (name, text,
                     HydrusData.ConvertTimestampToPrettyExpires(timeout),
                     len(hashes)),
                    (name, text, timeout, (len(hashes), hashes, share_key)))

        if service_type == HC.IPFS:

            ipfs_shares = self._controller.Read('service_directories',
                                                self._service_key)

            self._ipfs_shares.DeleteAllItems()

            for (multihash, num_files, total_size, note) in ipfs_shares:

                self._ipfs_shares.Append(
                    (multihash, HydrusData.ConvertIntToPrettyString(num_files),
                     HydrusData.ConvertIntToBytes(total_size), note),
                    (multihash, num_files, total_size, note))
示例#2
0
    def GetGalleryStatus(self):

        with self._lock:

            if HydrusData.TimeHasPassed(self._no_work_until):

                gallery_status = self._gallery_status

            else:

                no_work_text = HydrusData.ConvertTimestampToPrettyExpires(
                    self._no_work_until) + ': ' + self._no_work_until_reason

                gallery_status = no_work_text

            return gallery_status
示例#3
0
    def GetStatus(self):

        with self._lock:

            if HydrusData.TimeHasPassed(self._no_work_until):

                gallery_status = self._gallery_status
                current_action = self._current_action

            else:

                no_work_text = HydrusData.ConvertTimestampToPrettyExpires(
                    self._no_work_until) + ': ' + self._no_work_until_reason

                gallery_status = no_work_text
                current_action = no_work_text

            return (gallery_status, current_action, self._files_paused,
                    self._gallery_paused)
    def _threadDoGETJob(self, request):

        # in future, make this a standard frame with a search key that'll load xml or yaml AJAX stuff
        # with file info included, so the page can sort and whatever

        share_key = request.hydrus_args['share_key']

        local_booru_manager = HG.client_controller.GetManager('local_booru')

        local_booru_manager.CheckShareAuthorised(share_key)

        (name, text, timeout,
         media_results) = local_booru_manager.GetGalleryInfo(share_key)

        body = '''<html>
    <head>'''

        if name == '':
            body += '''
        <title>hydrus network local booru share</title>'''
        else:
            body += '''
        <title>''' + name + '''</title>'''

        body += '''
        
        <link href="hydrus.ico" rel="shortcut icon" />
        <link href="style.css" rel="stylesheet" type="text/css" />'''

        (thumbnail_width,
         thumbnail_height) = HC.options['thumbnail_dimensions']

        body += '''
        <style>
            .thumbnail_container { width: ''' + str(
            thumbnail_width) + '''px; height: ''' + str(
                thumbnail_height) + '''px; }
        </style>'''

        body += '''
    </head>
    <body>'''

        body += '''
        <div class="timeout">This share ''' + HydrusData.ConvertTimestampToPrettyExpires(
            timeout) + '''.</div>'''

        if name != '': body += '''
        <h3>''' + name + '''</h3>'''

        if text != '':

            newline = '''</p>
        <p>'''

            body += '''
        <p>''' + text.replace(os.linesep, newline).replace(
                '\n', newline) + '''</p>'''

        body += '''
        <div class="media">'''

        for media_result in media_results:

            hash = media_result.GetHash()
            mime = media_result.GetMime()

            # if mime in flash or pdf or whatever, get other thumbnail

            body += '''
            <span class="thumbnail">
                <span class="thumbnail_container">
                    <a href="page?share_key=''' + share_key.encode(
                'hex') + '''&hash=''' + hash.encode('hex') + '''">
                        <img src="thumbnail?share_key=''' + share_key.encode(
                    'hex') + '''&hash=''' + hash.encode('hex') + '''" />
                    </a>
                </span>
            </span>'''

        body += '''
        </div>
        <div class="footer"><a href="https://hydrusnetwork.github.io/hydrus/">hydrus network</a></div>
    </body>
</html>'''

        response_context = HydrusServerResources.ResponseContext(
            200, mime=HC.TEXT_HTML, body=body)

        return response_context
    def _threadDoGETJob(self, request):

        share_key = request.hydrus_args['share_key']
        hash = request.hydrus_args['hash']

        local_booru_manager = HG.client_controller.GetManager('local_booru')

        local_booru_manager.CheckFileAuthorised(share_key, hash)

        (name, text, timeout,
         media_result) = local_booru_manager.GetPageInfo(share_key, hash)

        body = '''<html>
    <head>'''

        if name == '':
            body += '''
        <title>hydrus network local booru share</title>'''
        else:
            body += '''
        <title>''' + name + '''</title>'''

        body += '''
        
        <link href="hydrus.ico" rel="shortcut icon" />
        <link href="style.css" rel="stylesheet" type="text/css" />'''

        body += '''
    </head>
    <body>'''

        body += '''
        <div class="timeout">This share ''' + HydrusData.ConvertTimestampToPrettyExpires(
            timeout) + '''.</div>'''

        if name != '': body += '''
        <h3>''' + name + '''</h3>'''

        if text != '':

            newline = '''</p>
        <p>'''

            body += '''
        <p>''' + text.replace(os.linesep, newline).replace(
                '\n', newline) + '''</p>'''

        body += '''
        <div class="media">'''

        mime = media_result.GetMime()

        if mime in HC.IMAGES:

            (width, height) = media_result.GetResolution()

            body += '''
            <img width="''' + str(width) + '''" height="''' + str(
                height) + '''" src="file?share_key=''' + share_key.encode(
                    'hex') + '''&hash=''' + hash.encode('hex') + '''" />'''

        elif mime in HC.VIDEO:

            (width, height) = media_result.GetResolution()

            body += '''
            <video width="''' + str(width) + '''" height="''' + str(
                height
            ) + '''" controls="" loop="" autoplay="" src="file?share_key=''' + share_key.encode(
                'hex') + '''&hash=''' + hash.encode('hex') + '''" />
            <p><a href="file?share_key=''' + share_key.encode(
                    'hex') + '''&hash=''' + hash.encode(
                        'hex') + '''">link to ''' + HC.mime_string_lookup[
                            mime] + ''' file</a></p>'''

        elif mime == HC.APPLICATION_FLASH:

            (width, height) = media_result.GetResolution()

            body += '''
            <embed width="''' + str(width) + '''" height="''' + str(
                height) + '''" src="file?share_key=''' + share_key.encode(
                    'hex') + '''&hash=''' + hash.encode('hex') + '''" />
            <p><a href="file?share_key=''' + share_key.encode(
                        'hex') + '''&hash=''' + hash.encode(
                            'hex') + '''">link to ''' + HC.mime_string_lookup[
                                mime] + ''' file</a></p>'''

        else:

            body += '''
            <p><a href="file?share_key=''' + share_key.encode(
                'hex') + '''&hash=''' + hash.encode(
                    'hex') + '''">link to ''' + HC.mime_string_lookup[
                        mime] + ''' file</a></p>'''

        body += '''
        </div>
        <div class="footer"><a href="https://hydrusnetwork.github.io/hydrus/">hydrus network</a></div>
    </body>
</html>'''

        response_context = HydrusServerResources.ResponseContext(
            200, mime=HC.TEXT_HTML, body=body)

        return response_context