def to_mid(sid): result = [] while sid: if sid < 10000000: result.insert(0, base62_encode(sid % 10000000)) else: result.insert(0, base62_encode(sid % 10000000, padding=4)) sid /= 10000000 return "".join(result)
def save(kv, db): url = request.forms['url'] if not url: return {'err' : '请输入URL'} url = url_normalize(url) if not url: return {'err' : '请输入有效的 URL'} surl = urlsplit(url) if surl.netloc.endswith(BLACKLIST): return {'err' : '不支持的域名'} code = hashto62(url) key = base62_encode(code) sql = """ INSERT INTO `taobb_urls` (`id`, `key`, `url`, `gmt_create`, `gmt_modified`) VALUES (:id, :key, :url, now(), now()) ON DUPLICATE KEY UPDATE `gmt_modified` = now() """ sp = SQLParams('named', 'format') sql, params = sp.format(sql, { 'id' : code, 'key' : key, 'url' : url, }) if db.execute(sql, params) and kv.set(key, url): return {'key':key , 'err' : None} else: return {'err': '内部错误'}
def insert(db, code, url): key = base62_encode(code) # remove unused sql = """ DELETE FROM `taobb_urls` WHERE id = :id and `access_time` + INTERVAL `access_count` + :ttl DAY < NOW() """ sp = SQLParams('named', 'format') sql, params = sp.format(sql, { 'id': code, 'ttl': 30 }) db.execute(sql, params) sql = """ INSERT IGNORE INTO taobb_urls( `id` , `key` , `url` , `access_time` , `gmt_create` , `gmt_modified` ) VALUES (:id, :key, :url, now(),now(), now()) """ sp = SQLParams('named', 'format') sql, params = sp.format(sql, { 'id': code, 'key': key, 'url': url, }) if db.execute(sql, params): return key else: old_url = code_to_url(code, db) if old_url == url: return key else: return insert(db, code + 1, url)
def _save_and_create_uuid(self, fname, fbody, mime, transload_addr): uuid = yield self.redis.incr(self.IMAGER_UUID) b62 = base62_encode(uuid) fn = self._hash_by_name(fname, uuid) bdir = os.path.dirname(fn) try: if not os.path.exists(bdir): os.makedirs(bdir) except Exception, e: print e
def _update_url_data(redis_cli, url): k = URL_MASK % url u = redis_cli.get(k) if u == None: id = _get_uuid(redis_cli) uid = base62.base62_encode(id) redis_cli.set(k, uid) redis_cli.set(ENCODED_URL_MASK % uid, url) t = int(time.time()) k = ENCODED_URL_DICT % uid redis_cli.hset(k, 'date_creation', t) redis_cli.hset(k, 'url', url) return uid return u
def post(self): url = self.request.get("url") custom_path = self.request.get("custom_path") if custom_path: exists = Link.get_by_id(custom_path) if exists: return "path already exists, choose another" else: id = Counter.increment() custom_path = base62.base62_encode(id) l = Link(url=url, custom_path=custom_path, id = custom_path) l.put() self.redirect("/" + custom_path + "/stats")
def save(kv): key = None err = None url = request.forms['url'] if url: url = url_uniq(url) if url: code = hashto62(url) key = base62_encode(code) if not kv.set(key, url): err = '内部错误' else: err = '请输入有效的 URL' else: err = '请输入URL' return {'key':key, 'err':err }
def pasteit(): ip = get_real_ip(request) r = throttle.check(ip) if r is False: abort(401, "Not authorized") codebody = request.POST['codebody'] raw = request.POST.get('raw', None) if codebody is None: abort(500, 'Empty request') a = idgen.request() id = base62_encode(a) r = ds.save("pasteit-%s" % id, codebody) if r is False: abort(503, 'Internal error saving id %s (%d)' % (id, a)) if raw is None: redirect("%s/%s" % (BASE_URL, id)) else: return id
def viewall(): count = get_url_count() for i in xrange(1, count+1): view(base62_encode(i))
def post_index(): url = request.forms.get('url') short = base62.base62_encode(int(time.time())) result = db.find_and_modify({'url':url}, {'url':url,'short':short}) redirect("/")
def test_base62(self): self.assertEqual(base62_encode(100), '1C') self.assertEqual(base62_encode(999999999), '15FTGf') self.assertEqual(base62_decode('dtvd3o'), 12345678910)
def path(self): if self.key().name(): return self.key().name() return base62.base62_encode(self.id)
def test_base_encode(self): string = base62.base62_encode(12345); print(string) self.assertTrue(string) """ self.assertEqual(string, '')