Пример #1
0
def recent():
  
  # parse arg
  limit = request.args.get('limit', 50)

  # just look two days back
  end = current_timestamp()
  start = end - 24*60*60*2
  
  # fetch data
  key = 'article_sorted_set'
  results = db.zrangebyscore(key, min = start, max = end)

  # turn it into a json list
  return "[%s]" % ",".join(results[0:limit+1])
Пример #2
0
def recent():
  # parse args
  start = request.args.get('start', 0)
  end = request.args.get('end', 1e11)
  order = request.args.get('order', 'desc')
  
  # fetch data
  key ='article_sorted_set'
  results = db.zrangebyscore(key, min = start, max = end)

  if order=='desc':
    results = [r for r in reversed(results)]

  # turn it into a json list
  return "[%s]" % ",".join(results[0:21])
Пример #3
0
def query():

  # parse args
  article_slug = sluggify(request.args.get('url', ''))
  data_sources = request.args.get('data_sources', 'all').split(",")
  start = request.args.get('start', 0)
  end = request.args.get('end', 1e11)
  timestamp = request.args.get('timestamp', None)
  order = request.args.get('order', 'desc')
  include_article = request.args.get('include_article', 'true').lower()
  include_keys = request.args.get('include_keys', 'true').lower()
  
  # pesky boolian problem
  if include_keys=='true':
    include_keys = True
  elif include_keys=='false':
    include_keys = False

  # parse article arg
  if include_article == 'true':
    include_article = True
  elif include_article =='false':
    include_article = False

  # timestamp override
  if timestamp is not None:
    start = timestamp
    end = timestamp

  # fetch data
  results = db.zrangebyscore(article_slug, min = start, max = end)

  # optionally filter out particular datasources
  if data_sources[0] != "all":
    filtered_results = []
    data = [json.loads(r) for r in results]
    for src in data_sources:
      for d in data:
        if d.has_key(src):
          if not include_keys:
            filtered_results.append(json.dumps(d.values()))
          else:
            filtered_results.append(json.dumps(d))
        else:
          for key in d.keys():
            if re.search(src, key):
              if not include_keys:
                filtered_results.append(json.dumps(d.values()))
              else:
                filtered_results.append(json.dumps(d))              

      results = filtered_results

  # optionally order database
  if order=='desc':
    results = [r for r in reversed(results)]
  
  # turn it into a json list
  results = "[%s]" % ",".join(results)

  # create article dict if requested
  if include_article:
    return_pattern = "{\"article\" : %s, \"events\" : %s }"
    article_data = db.get(article_slug+":article")
    
    if article_data is None:
      article_data = "{}"
    
    return return_pattern % (article_data, results)

  # otherwise just return json list
  else: 
    return results