Пример #1
0
def import_task(args):
    if len(args) < 2:
        print "usage for import"
        return

    slug = args[0]
    path = args[1]

    system = classic_gaming.get_system_by_slug(slug)
    roms = []

    def visit(arg, dirname, names):
        for name in names:
            if isfile(name):
                roms.append(name)
            if isdir(name):
                walk(name, visit)

    for p in glob(path):
        if isfile(p):
            roms.append(p)
        if isdir(p):
            walk(p, visit, None)

    def save(image, dest):
        f = open(dest, 'wb')
        f.write(image.read())

    for f in roms:
        rom = {}

        i = GameFAQSRomIdentifier(system['slug'], basename(f).split('.')[0])
        rom['publisher'] = i.get_publisher()
        rom['year'] = i.get_year()
        rom['description'] = i.get_description()

        image_path = dirname(f) + '/images'
        try:
            os.mkdir(image_path)
        except Exception:
            pass

        ext, tmp = i.get_thumbnail()
        rom['thumbnail'] = "%s/%s-cover.%s" % (image_path, slugify(
            basename(f)), ext)
        save(tmp, rom['thumbnail'])

        ext, tmp = i.get_image()
        rom['image'] = "%s/%s-image.%s" % (image_path, slugify(
            basename(f)), ext)
        save(tmp, rom['image'])

        classic_gaming.insert_rom(system['slug'], i.get_title(), f, **rom)
        print "imported", i.get_title()
Пример #2
0
def import_task(args):
    if len(args) < 2:
        print "usage for import"
        return

    slug = args[0]
    path = args[1]

    system = classic_gaming.get_system_by_slug(slug)
    roms = []

    def visit(arg, dirname, names):
        for name in names:
            if isfile(name):
                roms.append(name)
            if isdir(name):
                walk(name, visit)

    for p in glob(path):
        if isfile(p):
            roms.append(p)
        if isdir(p):
            walk(p, visit, None)

    def save(image, dest):
        f = open(dest, 'wb')
        f.write(image.read())

    for f in roms:
        rom = {}

        i = GameFAQSRomIdentifier(system['slug'], basename(f).split('.')[0])
        rom['publisher'] = i.get_publisher()
        rom['year'] = i.get_year()
        rom['description'] = i.get_description() 

        image_path = dirname(f) + '/images'
        try:
            os.mkdir(image_path)
        except Exception:
            pass

        ext, tmp = i.get_thumbnail()
        rom['thumbnail'] = "%s/%s-cover.%s" % (image_path, slugify(basename(f)), ext)
        save(tmp, rom['thumbnail'])

        ext, tmp = i.get_image()
        rom['image'] = "%s/%s-image.%s" % (image_path, slugify(basename(f)), ext)
        save(tmp, rom['image'])

        classic_gaming.insert_rom(system['slug'], i.get_title(), f, **rom)
        print "imported", i.get_title()
Пример #3
0
 def __init__(self, title, content, markdown):
     self.title = title
     self.content = content
     self.markdown = markdown
     self.view_count = 0
     self.slug = slugify(title)
     self.excerpt = extract_excerpt(content)
Пример #4
0
 def _find_tag(self, beer_name):
     slug = slugify(beer_name)
     
     if not BeerTag._CATEGORY_ID:
         BeerTag._CATEGORY_ID = self.db.insert_update('category', {'name': Tag.HIERARCHY['beer']['name'], 'slug': 'beer'});
     if slug in BeerTag._CACHE:
         tag_id = BeerTag._CACHE[slug]
     else:
         tag_id = self.db.insert_update('tag', {'name': beer_name, 'slug': slug, 'category_id': BeerTag._CATEGORY_ID})
         BeerTag.CACHE[slug] = tag_id
         Tag.HIERARCHY['beer']['tags'].append((slug, beer_name))
     self.db.commit()
     return tag_id
Пример #5
0
 def post(self, post_path=None):
     if post_path is not None:
         url = self.gen_id(post_path)
         post = Post.get_by_id(url)
         post = self.temp_post(post_obj=post)
     else:
         today = datetime.datetime.utcnow()
         date = today.strftime("%Y/%m/%d")
         # if we have a title we can create a slug then really save the post
         slug = slugify(self.request.get('title'))
         if slug:
             new_id = '/{date}/{slug}'.format(**locals())
             post = Post(id=new_id)
             post = self.temp_post(post_obj=post)
         else:
             post = self.temp_post()
     post.modification_date = datetime.datetime.utcnow()
     if post.key is not None:
         post.put()
     self.render_response("post_admin.html", post=post)
Пример #6
0
def __scrape_twitter_by_date(
    query: str,
    start_date: str = arrow.get().format('YYYY-MM-DD'),
    end_date: str = arrow.get().shift(years=-10).format('YYYY-MM-DD')):
    """Simple program that greets NAME for a total of COUNT times. (Command line launch)
    
    Arguments:
        query {str} -- Twitter query language expression (can be tested on twitter)
    
    Keyword Arguments:
        start_date {str} -- Start date from being requested a twitter query (default: {arrow.get().format('YYYY-MM-DD')})
        end_date {str} -- End date from being requested a twitter query  (default: {arrow.get().shift(years=-10).format('YYYY-MM-DD')})
    """

    df = scrape_twitter_by_date(**locals())
    if df is not None:

        file_start_date = arrow.get(start_date).format('YYYYMMDD')
        file_end_date = arrow.get(end_date).format('YYYYMMDD')

        output_filename = "%s_%s--%s.msg" % (file_start_date, file_end_date,
                                             slugify(query))
        logger.info("Saving results into : %s" % output_filename)
        df.to_msgpack(output_filename)
Пример #7
0

from drivers import agartha, kafelanka, podzemibrno, poznejbrno, brnonow
from tools import log, notify, slugify
import datetime
import os
import subprocess



active_drivers = (
    agartha,
    kafelanka,
    podzemibrno,
    poznejbrno,
    brnonow,
)



notify('Brno', 'Starting update...')
for driver in active_drivers:
    notify('Brno', 'Starting driver "%s"' % driver.__name__)
    log('driver', driver.__name__)
    driver.run()

notify('Brno', 'Exporting and uploading database...')
filename = '%s/db/%s.sql' % (os.path.dirname(os.path.realpath(__file__)), slugify(datetime.date.today()))
log('dump', filename)
with open(filename, 'w') as f:
    subprocess.Popen(['mysqldump', '-h', 'localhost', '-u', 'dev', '--password=dev', 'brno'], stdout=f).wait()
Пример #8
0
    def post(self):
        """Check and add new snippet to db"""
        user = users.get_current_user()
        prefs = InternalUser.from_user(user)

        # Validate input
        title = self.request.get('title')
        code = self.request.get('code')
        description = self.request.get('description')
        version = self.request.get('version')

        tags = []
        i = 0
        while True:
            tag = self.request.get('tag%s' % i)
            logging.info("tag: %s" % tag)
            if not tag:
                break
            elif tag == "0":
                # 0 is placeholder for removed tag
                pass
            else:
                tags.append(decode(tag))
            i += 1

        errors = []
        if not title:
            errors.append("title")
        elif len(title) < 16:
            errors.append("longer title")
        if not code:
            errors.append("snippet")
        if not description:
            errors.append("description")
        if len(tags) < 2:
            errors.append("a few tags")
        if len(errors) > 0:
            tags_mostused = mc.cache.tags_mostused()
            values = {'prefs': prefs, 'errors': errors, 'title': title, \
                'code': code, 'description': description, 'tags': tags, \
                'version': version, 'tag_cnt': len(tags), \
                "tags_mostused": tags_mostused}

            self.response.out.write(template.render(tdir + \
                "snippets_new.html", values))
            return

        # Decode with utf-8 if necessary
        title = decode(title.strip())
        code = decode(code)
        description = decode(description)

        # Find a free slug
        slug = slugify(title)
        _slug = slugify(title)
        cnt = 0
        while True:
            q = Snippet.all()
            q.filter("slug1 =", _slug)
            if q.count() > 0:
                cnt += 1
                _slug = u"%s%s" % (slug, cnt + 1)
            else:
                slug = _slug
                break

        # Create snippet (submitter is saved only in first revision)
        s = Snippet(userprefs=prefs)
        s.title = title
        s.slug1 = slug
        s.description = description
        s.description_md = markdown.markdown(description).replace( \
                "<a ", "<a target='_blank' rel='nofollow' ")
        s.code = code
        s.android_minsdk = int(version)
        s.put()

        # Create the first revision
        r = SnippetRevision.create_first_revision(userprefs=prefs, snippet=s)
        r.put()

        # Create the first upvote
        upvote = SnippetUpvote(userprefs=prefs, snippet=s)
        upvote.put()

        # Create the tags
        for tag in tags:
            if not tag or len(tag.strip()) < 3:
                # skip empty and too short tags
                continue

            # See if tag base object already exists, if not then create it
            q = Tag.all()
            q.filter("name =", tag)
            t = q.get()
            if not t:
                t = Tag(name=tag)
                t.put()

            st = SnippetTag(snippet=s, tag=t)
            st.put()

        prefs.points += 1
        prefs.date_lastactivity = datetime.datetime.now()
        prefs.put()

        # Clear snippet list cache and have next user rebuild it
        mc.cache.snippet_list(None, clear=True)
        mc.cache.tags_mostused(force_update=True)

        # Trigger background tasks
        taskqueue.add(url='/services/update_tags')
        taskqueue.add(url='/services/update_sitemap')
        taskqueue.add(url='/services/update_relations')

        # Prepare Tweet
        if not settings.IS_TESTENV:
            url = shorturl("http://www.androidsnippets.com/%s" % slug)
            max_status_len = 140 - len(url) - 11  # 10 = 2 spaces,:,#android
            status = s.title
            if len(status) > max_status_len:
                status = "%s..." % status[:max_status_len - 3]
            status = "%s: %s #android" % (status, url)
            logging.info("tweet: '%s' (%s)" % (status, len(status)))
            tweet(status)

        # Redirect to snippet view
        self.redirect("/%s" % s.slug1)