Skip to content
This repository was archived by the owner on Apr 24, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License (MIT)

Copyright (c) 2015 Liip AG
Copyright (c) 2016 Liip AG

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
boto==2.13.3
wsgiref==0.1.2
pypandoc==0.7.0
Unidecode==0.04.14
56 changes: 56 additions & 0 deletions s3_logs_analyzer/cli.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#coding: utf-8

# parse

import os
import sys
import argparse
import re
import operator


parser = argparse.ArgumentParser(description='Extract and sum up the information from S3 log files')
parser.add_argument('--folder', help='The folder to extract from', type=str, required=True)

args = vars(parser.parse_args())

log_parser = Parser()
pd = log_parser._parse_log_files(args['folder'])
log_parser._write_summary(args['folder'], pd)

print '\n'
print 'Parsing of the folder ' + args['folder'] + ' completed.'
sys.exit()


# sync
import os
import sys
import argparse

from boto.s3 import connect_to_region
from boto.s3.connection import S3Connection, OrdinaryCallingFormat
from boto.s3.key import Key

parser = argparse.ArgumentParser(description='Sync the S3 log files to the local file system')
parser.add_argument('--key', help='Your S3 Access Key', type=str, required=True)
parser.add_argument('--secret', help='Your S3 Access Secret', type=str, required=True)
parser.add_argument('--bucket', help='Your S3 Bucket', type=str, required=True)
parser.add_argument('--region', help='S3 Region of bucket, required to use on python 2.7.9. (optional)', type=str)
parser.add_argument('--folder', help='Your folder within your S3 Bucket (optional)', type=str)
parser.add_argument('--target', help='Your local folder to dump files. Default="data/" (optional)', type=str)


args = vars(parser.parse_args())


syncer = SyncS3()
syncer._sync_log_files(prefix=args['folder'])

print '\n'
print 'Sync for the bucket ' + args['bucket'] + ' completed.'
sys.exit()


def main():
pass
15 changes: 0 additions & 15 deletions parse.py → s3_logs_analyzer/parse.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,6 @@
import re
import operator

parser = argparse.ArgumentParser(description='Extract and sum up the information from S3 log files')
parser.add_argument('--folder', help='The folder to extract from', type=str, required=True)

args = vars(parser.parse_args())


class Parser():

DATA_FOLDER_PATH = 'data/'
Expand Down Expand Up @@ -90,12 +84,3 @@ def _write_summary(self, folder, parsed_data):
sorted_dates_and_downloads = sorted(dates_and_downloads.iteritems(), key=operator.itemgetter(1))
for date, downloads in sorted_dates_and_downloads:
summary_file.write("%s,%s,%s\n" % (request, date, downloads))


log_parser = Parser()
pd = log_parser._parse_log_files(args['folder'])
log_parser._write_summary(args['folder'], pd)

print '\n'
print 'Parsing of the folder ' + args['folder'] + ' completed.'
sys.exit()
19 changes: 0 additions & 19 deletions sync.py → s3_logs_analyzer/sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,6 @@
from boto.s3.connection import S3Connection, OrdinaryCallingFormat
from boto.s3.key import Key

parser = argparse.ArgumentParser(description='Sync the S3 log files to the local file system')
parser.add_argument('--key', help='Your S3 Access Key', type=str, required=True)
parser.add_argument('--secret', help='Your S3 Access Secret', type=str, required=True)
parser.add_argument('--bucket', help='Your S3 Bucket', type=str, required=True)
parser.add_argument('--region', help='S3 Region of bucket, required to use on python 2.7.9. (optional)', type=str)
parser.add_argument('--folder', help='Your folder within your S3 Bucket (optional)', type=str)
parser.add_argument('--target', help='Your local folder to dump files. Default="data/" (optional)', type=str)


args = vars(parser.parse_args())


class SyncS3():

AWS_ACCESS_KEY = args['key']
Expand Down Expand Up @@ -67,10 +55,3 @@ def _sync_log_files(self, prefix=None):
if not os.path.exists(os.path.join(self.DATA_FOLDER_PATH, key_str)):
key.get_contents_to_filename(os.path.join(self.DATA_FOLDER_PATH, key_str))
print key_str

syncer = SyncS3()
syncer._sync_log_files(prefix=args['folder'])

print '\n'
print 'Sync for the bucket ' + args['bucket'] + ' completed.'
sys.exit()
49 changes: 49 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-

import codecs
from distutils.core import setup

version = '1.1.0'

try:
import pypandoc
from unidecode import unidecode
description = codecs.open('README.md', encoding='utf-8').read()
description = unidecode(description)
description = pypandoc.convert(description, 'rst', format='md')
except (IOError, ImportError):
description = 'Python wrapper for the OSM API'

setup(
name='s3-logs-analyzer',
packages=['s3-logs-analyzer'],
version=version,
description='Generate daily download stats for files hosted on S3 from the logs',
entry_points={
'console_scripts': [
's3-logs = s3_logs_analyzer.cli:main'
]
},
long_description=description,
author='Liip AG',
author_email='contact@liip.ch',
maintainer='Liip AG',
maintainer_email='contact@liip.ch',
url='https://github.com/ogdch/s3-logs-analyzer',
download_url='https://github.com/ogdch/s3-logs-analyzer/archive/v%s.zip' % version,
keywords=['analyzer', 'logs', 's3', 'download', 'amazon'],
license='MIT',
classifiers=[
'License :: OSI Approved :: MIT License',
'Intended Audience :: System Administrators',
'Intended Audience :: Developers',
'Topic :: Software Development :: Libraries',
'Development Status :: 4 - Beta',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.2',
'Programming Language :: Python :: 3.3',
],
)