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))
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
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