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