예제 #1
0
    def dockerps(self, show_all):
        try:
            env = ['CADVISOR', 'CONTAINERS']
            if util.environ(env, 'warning'):
                self.sendqueue.put({
                    'message':
                    'error: One or some environment variables are not set. Must be set {0}'
                    .format(' '.join(env))
                })
                return

            watch_container = {}
            for c in os.environ.get('CONTAINERS').split(','):
                watch_container[c] = False
                if self.running_last_period.get(c) is None:
                    self.running_last_period[c] = True
            url = 'http://{0}/api/v1.3/containers/docker'.format(
                os.environ.get('CADVISOR'))
            r = requests.get(url).json()
            #debug
            #self.logger.debug(r['name'])
            for container in r['subcontainers']:
                c = requests.get('http://{0}/api/v1.3/containers{1}'.format(
                    os.environ.get('CADVISOR'), container['name'])).json()
                watch_container[c['spec']['labels']
                                ['com.docker.compose.service']] = True
            if show_all:
                text = ''
                for k, v in watch_container.items():
                    flag = util.emoji('ok') if v else util.emoji('bad')
                    text += '{0} {1}\n'.format(flag, k)
                    self.running_last_period[k] = v
                self.sendqueue.put({'message': '{0}'.format(text)})
            else:
                text = ''
                count = 0
                for k, v in watch_container.items():
                    if v == False and self.running_last_period.get(k) == True:
                        text += '{0} '.format(k)
                        count += 1
                    self.running_last_period[k] = v
                if count > 0:
                    self.sendqueue.put({
                        'message':
                        '{0} {1} が停止しています'.format(util.emoji('bad'), text)
                    })
        except Exception as e:
            msg = 'dockerps()'
            self.logger.exception(msg, stack_info=True)
            self.sendqueue.put({
                'message':
                'error {}: {}({})'.format(msg, e.__class__.__name__, str(e))
            })
예제 #2
0
 def df(self, show_all):
     stat = shutil.disk_usage("/")
     show = False
     message = util.emoji('ok')
     if (stat.used / stat.total > 0.9 and self.running_last_period.get('df') is None):
         show = True
         message = '{0} ストレージに十分な空き領域がありません\n'.format(util.emoji('bad'))
     if show_all or show:
         self.sendqueue.put({ 'message': '''{0} total: {1}GiB, used: {2}GiB, free: {3}GiB, {4}%'''.format(message,
                     int(stat.total / 1024 / 1024 / 1024),
                     int(stat.used / 1024 / 1024 / 1024),
                     int(stat.free / 1024 / 1024 / 1024),
                     int(stat.used / stat.total * 100))})
         self.running_last_period['df'] = True
예제 #3
0
    def run(self):
        success_albums = 0
        failure_albums = 0
        album_current = 0
        album_count = 0
        r = None
        page = 0
        while r is None or r.get('nextPageToken') is not None:
            if r is None:
                r = self.credential.get('https://photoslibrary.googleapis.com/v1/albums')
            else:
                r = self.credential.get('https://photoslibrary.googleapis.com/v1/albums',
                        params={'pageToken': r.get('nextPageToken')})
            # albums may not return values
            if r.get('albums') is None:
                continue
            album_count += len(r.get('albums'))
            self.out.put('Albums.run(): {0} albums found in this page, nextPageToken={1}\n'.format(
                len(r.get('albums')), r.get('nextPageToken')))

            for album in r.get('albums'):
                ret = self.put_albums(r, album_current, album_count, album)
                ret = 0
                if ret == 0:
                    success_albums += 1
                else:
                    failure_albums += 1
                album_current += 1
            page += 1

        catalog_prefix = os.path.join(self.bucketprefix, self.credential.email, 'catalog', 'album')
        self.out.debug('put album catalog to={0}'.format(catalog_prefix))
        self.put_album_catalog(self.bucket, catalog_prefix)

        success_all = False
        emoji = ''
        if album_count == success_albums:
            emoji = 'ok'
            success_all = True
        else:
            emoji = 'bad'
        self.out.message('{0} finished: total {1}, success {2}, failure {3}\n'.format(
            util.emoji(emoji), album_count, success_albums, failure_albums))
        if success_all == False:
            self.out.pop()
예제 #4
0
 def processar(self, bot, user, chat_id, args):
     super(Ajuda, self).processar(bot, user, chat_id, args)
     features = ''
     idx = 0
     for feature in args:
         if feature.NOME not in ("start", "ajuda", "sobre"):
             show = not feature.driver_mode or (self.is_bot_driver(bot)
                                                and feature.driver_mode)
             if show:
                 features += str.format(MSGS["feature_line"], (idx + 1),
                                        feature.NOME,
                                        MSGS.get(feature.DESCRIPTION))
                 idx = idx + 1
     msg = open("files/help.txt", "r").read()
     msg = msg.format(emoji_title=emoji('book'),
                      features=features,
                      emoji_obs_1=emoji('bust_in_silhouette'),
                      emoji_obs_2=emoji('hourglass'),
                      emoji_obs_3=emoji('car'),
                      emoji_obs_4=emoji('thumbsup'),
                      emoji_obs_5=emoji('warning'))
     return msg
예제 #5
0
    def run(self):
        page = 0
        count = 0
        current = 0
        success = 0
        failure = 0
        already = 0
        skip = 0

        prefix = os.path.join(os.environ.get('S3_PREFIX'),
                              self.credential.email, 'library', '')
        self.out.debug('prefix: {0}'.format(prefix))
        already_saved = [
            o.key for o in self.bucket.objects.filter(Prefix=prefix)
        ]

        r = None
        while r is None or r.get('nextPageToken') is not None:
            if r is None:
                r = self.credential.get(
                    'https://photoslibrary.googleapis.com/v1/mediaItems',
                    params={'pageSize': '100'})
            else:
                r = self.credential.get(
                    'https://photoslibrary.googleapis.com/v1/mediaItems',
                    params={
                        'pageSize': '100',
                        'pageToken': r.get('nextPageToken')
                    })
            # mediaItems may not return values
            if r.get('mediaItems') is None:
                continue
            count += len(r.get('mediaItems'))
            failure_per_page = 0
            for item in r.get('mediaItems'):
                ret = self.put_photos(r, already_saved, page, current, count,
                                      item, prefix)
                if ret == 0:
                    success += 1
                    self.photo_catalog(item.get('id'), item.get('filename'))
                elif ret == 1:
                    failure += 1
                    failure_per_page += 1
                elif ret == 2:
                    failure += 1
                    failure_per_page += 1
                elif ret == 3:
                    already += 1
                    self.photo_catalog(item.get('id'), item.get('filename'))
                current += 1
            self.out.info('library-{}: count: {}, failure photos: {}'.format(
                page + 1, len(r.get('mediaItems')), failure_per_page))
            page += 1

        catalog_prefix = os.path.join(os.environ.get('S3_PREFIX'),
                                      self.credential.email, 'catalog',
                                      'library')
        self.out.debug('library: put catalog to={}'.format(catalog_prefix))
        self.put_photo_catalog(catalog_prefix)

        success_all = False
        emoji = ''
        if count == success + already:
            success_all = True
            emoji = 'ok'
        else:
            emoji = 'bad'
        self.out.message(
            '{}library: total {}, success {}, already {}, failure {}\n'.format(
                util.emoji(emoji), count, success, already, failure))
        if success_all == False:
            self.out.pop()
예제 #6
0
       Proceedings of the ACM SIGKDD International Conference on Knowledge 
       Discovery and Data Mining (KDD-2004), Aug 22-25, 2004, Seattle, 
       Washington, USA, 
"""

import util

negative_stop_words = util.get_file_content_as_list(
    "resources/negative-stop-words.txt")
neutral_stop_words = util.get_file_content_as_list(
    "resources/neutral-stop-words.txt")
positive_stop_words = util.get_file_content_as_list(
    "resources/positive-stop-words.txt")

negative_words = util.get_file_content_as_list("resources/negative-words.txt")
positive_words = util.get_file_content_as_list("resources/positive-words.txt")

original_text = util.format_into_string(
    util.get_file_content_as_list("resources/text.txt"))
text = util.clean_text(util.get_file_content_as_list("resources/text.txt"),
                       neutral_stop_words)

sentiment = util.analyze_text_sentiment(text, negative_stop_words,
                                        positive_stop_words, negative_words,
                                        positive_words)

print("The original text was: " + original_text)
print("\nThe sentiment score was: " + str(sentiment))
print("This corresponds to a " + util.mood(sentiment) + " mood ... " +
      util.emoji(sentiment) + "\n")
예제 #7
0
    def put_albums(self, r, album_current, album_count, album):
        success_count = 0
        failure_count = 0
        already_count = 0
        photo_current = 0
        photo_count = 0

        prefix = os.path.join(self.bucketprefix, self.credential.email, album.get('id')) + '/'
        self.out.debug('prefix: {0}'.format(prefix))

        already_saved = [ o.key for o in self.bucket.objects.filter(Prefix=prefix)]

        if len(already_saved) > 0:
            self.out.debug('{0}/{1}: already exists: {2} photos found. first record={3}'.format(
                album_current, album_count, len(already_saved), already_saved[0]))
        else:
            self.out.debug('{0}/{1}: not found that already saved photo'.format(
                        album_current, album_count))

        self.album_catalog(album.get('id'), album.get('title'))

        rp = None
        page = 0
        while rp is None or rp.get('nextPageToken') is not None:
            if rp is None:
                rp = self.credential.post('https://photoslibrary.googleapis.com/v1/mediaItems:search',
                                data={ 'pageSize': 100, 'albumId': album.get('id') })
            else:
                rp = self.credential.post('https://photoslibrary.googleapis.com/v1/mediaItems:search',
                                data={ 'pageSize': 100, 'albumId': album.get('id'),
                                       'pageToken': rp.get('nextPageToken') })
            photo_count += len(rp.get('mediaItems'))
            failure_per_page = 0
            for item in rp.get('mediaItems'):
                ret = self.put_photos(r, rp, already_saved,
                                album_current, album_count, photo_current, photo_count,
                                album, item, prefix)
                if ret == 0:
                    success_count += 1
                    self.photo_catalog(album.get('id'), item.get('id'), item.get('filename'))
                elif ret == 1:
                    failure_count += 1
                    failure_per_page += 1
                elif ret == 2:
                    failure_count += 1
                    failure_per_page += 1
                elif ret == 3:
                    already_count += 1
                    self.photo_catalog(album.get('id'), item.get('id'), item.get('filename'))
                photo_current += 1
            self.out.debug('{}/{}-{}: count: {}, failure photos: {}'.format(
                        album_current, album_count, page + 1, len(rp.get('mediaItems')), failure_per_page))
            page += 1

        catalog_prefix = os.path.join(self.bucketprefix, self.credential.email, 'catalog', 'albums', album.get('id'))
        self.out.debug('{0}/{1}: put photo catalog to={2}'.format(
                    album_current, album_count, catalog_prefix))
        self.put_photo_catalog(self.bucket, catalog_prefix, album.get('id'))

        ret = 0
        emoji = ''
        if int(album.get('mediaItemsCount')) == success_count + already_count:
            ret = 0
            emoji = 'ok'
        else:
            ret = 1
            emoji = 'bad'
        self.out.put('{0} {1}/{2} album {3}: total {4}, success {5}, already {6}, failure {7}'.format(
            util.emoji(emoji), album_current + 1, album_count, album.get('title'),
            album.get('mediaItemsCount'), success_count, already_count, failure_count))
        return ret