def post(self): if not self.authenticate(author=True): return op = self.get_argument('op', None) if op == 'favorite': self.favorite() return self.user = self.get_author_user() access_token = json.loads(self.user.twitter) #thumb = self.get_argument('thumb', '') # XXX TODO multipart doesn't work for some reason right now... arrrgh thumb = None text_length = 79 if thumb else 99 title = self.get_argument('title', '') view = self.get_argument('view', '') status = (content_logic.ellipsize( content_remote.strip_html(title), 18, including_dots=True) + (': ' if title and view else '') + content_logic.ellipsize( content_remote.strip_html(view.replace('<br>', ' ')), text_length, including_dots=True) + (' ' if title or view else '') + self.get_argument('url')) if thumb: thumb = url_factory.clean_filename(thumb) thumb = thumb[len(url_factory.resource_url(self)) + 1:] thumb = url_factory.resource_directory(self, thumb) image = thumb basename = os.path.basename(thumb) dirname = os.path.dirname(thumb) if os.path.basename(dirname) == 'thumbs': parent_dir = os.path.dirname(dirname) original_dir = os.path.join(parent_dir, 'original') original_img = os.path.join(original_dir, basename) if (os.path.exists(original_img) and os.path.getsize(original_img) < 3145728): image = original_img f = open(image, 'r') image_data = f.read() f.close() self.twitter_request(self.UPDATE_WITH_MEDIA_URL, self.status_update_result, access_token=access_token, post_args={ "status": status, "media[]": image_data }) else: self.twitter_request("/statuses/update", self.status_update_result, access_token=access_token, post_args={"status": status})
def post(self): if not self.authenticate(author=True): return op = self.get_argument('op', None) if op == 'favorite': self.favorite() return self.user = self.get_author_user() access_token = json.loads(self.user.twitter) #thumb = self.get_argument('thumb', '') # XXX TODO multipart doesn't work for some reason right now... arrrgh thumb = None text_length = 79 if thumb else 99 title = self.get_argument('title', '') view = self.get_argument('view', '') status = (content_logic.ellipsize(content_remote.strip_html( title), 18, including_dots=True) + (': ' if title and view else '') + content_logic.ellipsize(content_remote.strip_html( view.replace('<br>', ' ')), text_length, including_dots=True) + (' ' if title or view else '') + self.get_argument('url')) if thumb: thumb = url_factory.clean_filename(thumb) thumb = thumb[len(url_factory.resource_url(self)) + 1:] thumb = url_factory.resource_directory(self, thumb) image = thumb basename = os.path.basename(thumb) dirname = os.path.dirname(thumb) if os.path.basename(dirname) == 'thumbs': parent_dir = os.path.dirname(dirname) original_dir = os.path.join(parent_dir, 'original') original_img = os.path.join(original_dir, basename) if (os.path.exists(original_img) and os.path.getsize(original_img) < 3145728): image = original_img f = open(image, 'r') image_data = f.read() f.close() self.twitter_request( self.UPDATE_WITH_MEDIA_URL, self.status_update_result, access_token=access_token, post_args={"status": status, "media[]": image_data }) else: self.twitter_request( "/statuses/update", self.status_update_result, access_token=access_token, post_args={"status": status})
def embed(self): try: url = self.get_argument('url') media_type = media.detect_media_type(url) if media_type in ('video', 'image', 'audio', 'web'): parent_url = url_factory.resource_url(self, 'remote') parent_directory = url_factory.resource_directory(self, 'remote') leafname = os.path.basename(url) full_path = os.path.join(parent_directory, leafname) url_factory.check_legit_filename(full_path) if not os.path.isdir(parent_directory): os.makedirs(parent_directory) response = urllib2.urlopen(url) original_size_url, url, thumb_url = media.save_locally(parent_url, full_path, response.read()) if thumb_url: self.set_header('X-Helloworld-Thumbnail', thumb_url) self.write(media.generate_full_html(self, url, original_size_url)) return remote_title, remote_thumb, remote_html = \ content_remote.get_remote_title_and_thumb(url, 'text/html') if remote_title: self.set_header('X-Helloworld-Title', remote_title) if remote_thumb: self.set_header('X-Helloworld-Thumbnail', remote_thumb) if remote_html: self.write(remote_html) return if remote_thumb: self.write('<a href="' + url + '" title="' + remote_title + '"><img src="' + remote_thumb + '"></a>') return except: pass self.write('<a href="' + url + '">' + url + '</a>')
def post(self): safe_user = False if self.authenticate(author=True): safe_user = True self.get_common_parameters() if safe_user: if media.detect_media_type(self.base_leafname) not in ('video', 'image', 'audio', 'web', 'zip'): raise tornado.web.HTTPError(400, "i call shenanigans") else: if media.detect_media_type(self.base_leafname) != 'image': raise tornado.web.HTTPError(400, "i call shenanigans") if self.get_argument('canvasImage', None): uploaded_file = self.get_argument('canvasImage') else: uploaded_file = self.request.files['file'][0] overwrite = True if self.get_argument('overwrite', False) else False if safe_user: self.media_section = url_factory.clean_filename( self.get_argument('section')) if self.media_section.startswith(url_factory.resource_url(self)): self.media_section = self.media_section[len( url_factory.resource_url(self)) + 1:] self.parent_directory = url_factory.resource_directory(self, self.media_section) self.parent_url = url_factory.resource_url(self, self.media_section) if self.media_section == 'themes': test_zip_path_name = os.path.join(self.parent_directory, self.base_leafname) split_path = os.path.splitext(test_zip_path_name) if os.path.exists(test_zip_path_name): os.remove(test_zip_path_name) if os.path.exists(split_path[0]) and os.path.isdir(split_path[0]): shutil.rmtree(split_path[0]) else: self.parent_directory = os.path.join( self.application.settings["resource_path"], 'remote') self.parent_url = os.path.join( self.application.settings["resource_url"], 'remote') self.full_path = os.path.join(self.parent_directory, self.base_leafname) if not overwrite: self.full_path = media.get_unique_name(self.full_path) if not os.path.isdir(self.parent_directory): os.makedirs(self.parent_directory) if self.chunked_upload and safe_user: f = open(self.tmp_path, 'w') f.write(uploaded_file['body']) f.close() total_chunks_uploaded = 0 for f in os.listdir(self.tmp_dir): if f.startswith(self.base_leafname): total_chunks_uploaded += 1 if total_chunks_uploaded == max(self.total_size / self.chunk_size, 1): final_file = open(self.full_path, 'w') for f in os.listdir(self.tmp_dir): if f.startswith(self.base_leafname): chunk_path = os.path.join(self.tmp_dir, f) chunk_file = open(chunk_path, 'r') final_file.write(chunk_file.read()) chunk_file.close() os.unlink(chunk_path) final_file.close() original_size_url, url, thumb_url = media.save_locally( self.parent_url, self.full_path, None, skip_write=True, overwrite=overwrite) else: return else: original_size_url, url, thumb_url = media.save_locally( self.parent_url, self.full_path, uploaded_file['body'], disallow_zip=(not safe_user), overwrite=overwrite) media_html = media.generate_full_html(self, url, original_size_url) self.set_header("Content-Type", "text/plain; charset=UTF-8") self.write(json.dumps({ 'original_size_url': original_size_url, \ 'url': url, \ 'thumb_url': thumb_url, \ 'html': media_html, }))
def post(self): if not self.authenticate(author=True): return op = self.get_argument('op', None) if op == 'favorite': self.favorite() return self.user = self.get_author_user() access_token = self.user.facebook title = self.get_argument('title', '') view = self.get_argument('view', '') status = (content_remote.strip_html(title) + ('\n' if title and view else '') + content_remote.strip_html(view.replace('<br>', ' ')) + ('\n' if title or view else '') + self.get_argument('url')) post_args = {"message": status} thumb = self.get_argument('thumb', '') picture = None if thumb: if not thumb.startswith('http://'): thumb = url_factory.clean_filename(thumb) thumb = thumb[len(url_factory.resource_url(self)) + 1:] thumb = url_factory.resource_directory(self, thumb) picture = thumb basename = os.path.basename(thumb) dirname = os.path.dirname(thumb) if os.path.basename(dirname) == 'thumbs': parent_dir = os.path.dirname(dirname) original_dir = os.path.join(parent_dir, 'original') original_img = os.path.join(original_dir, basename) if os.path.exists(original_img): picture = original_img picture = picture[len(self.application.settings["static_path"]) + 1:] picture = self.static_url(picture, include_host=True) else: picture = thumb if picture: post_args['picture'] = picture video = re.compile(r'<iframe[^>]*(youtube|vimeo)[^>]*>.*?</iframe>', re.M | re.S).search(view) if video: video = video.group(0) is_youtube = re.compile(r'<iframe[^>]*(youtube)[^>]*>', re.M).search( view) if is_youtube: video_id = re.compile(r'<iframe[^>]*youtube.com/embed/([^\?]*)[^>]*>', re.M).search(view).group(1) source = 'http://www.youtube.com/e/' + video_id + '?autoplay=1' else: video_id = re.compile(r'<iframe[^>]*vimeo.com/video/([^\?"]*)[^>]*>', re.M).search(view).group(1) source = ('https://secure.vimeo.com/moogaloop.swf?clip_id=' + video_id + '&autoplay=1') post_args['source'] = source self.facebook_request( "/me/feed", self.status_update_result, access_token=access_token, post_args=post_args,)
def post(self): if not self.authenticate(author=True): return op = self.get_argument('op', None) if op == 'favorite': self.favorite() return access_token, tumblr_info = self.get_tumblr_info() title = content_remote.strip_html(self.get_argument('title', '')) body = url_factory.add_base_uris(self, self.get_argument('view', '')) \ + '\n' \ + self.get_argument('url') post_args = {"type": "text", "title": title, "body": body} # TODO, refactor out w FB logic thumb = self.get_argument('thumb', '') picture = None normal_picture = None if thumb: if not thumb.startswith('http://'): thumb = url_factory.clean_filename(thumb) thumb = thumb[len(url_factory.resource_url(self)) + 1:] thumb = url_factory.resource_directory(self, thumb) picture = thumb basename = os.path.basename(thumb) dirname = os.path.dirname(thumb) if os.path.basename(dirname) == 'thumbs': parent_dir = os.path.dirname(dirname) original_dir = os.path.join(parent_dir, 'original') original_img = os.path.join(original_dir, basename) if os.path.exists(original_img): picture = original_img normal_path = os.path.join(parent_dir, basename) if os.path.exists(normal_path): normal_picture = normal_path normal_picture = normal_picture[ len(self.application.settings["static_path"]) + 1:] normal_picture = self.static_url(normal_picture, include_host=True, include_sig=False) picture = picture[len(self.application.settings["static_path"] ) + 1:] picture = self.static_url(picture, include_host=True, include_sig=False) else: picture = thumb video = re.compile(r'<iframe[^>]*(youtube|vimeo)[^>]*>.*?</iframe>', re.M | re.S).search(body) if picture and normal_picture and not video: post_args["source"] = picture post_args["link"] = self.get_argument('url') post_args["caption"] = re.compile( r'(<figure>.*?<img.*?src="' + normal_picture + r'".*?>.*?</figure>)', re.M | re.U | re.S).sub('', body) post_args["type"] = "photo" if video: video = video.group(0) post_args["embed"] = video post_args["caption"] = body.replace(video, '') post_args["type"] = "video" section = self.get_argument('section', '') album = self.get_argument('album', '') tags = re.compile(r'#(\w+)(?![^<&]*(?:[>;]))', re.M | re.U).findall(body) post_args["tags"] = "" if tags: post_args["tags"] += ','.join(tags) if section: post_args["tags"] += "," + section if album: post_args["tags"] += "," + album self.tumblr_request( "http://api.tumblr.com/v2/blog/" + tumblr_info['primary_blog'] + "/post", self.status_update_result, access_token=access_token, post_args=post_args, )
def post(self): if not self.authenticate(author=True): return op = self.get_argument('op', None) if op == 'favorite': self.favorite() return self.user = self.get_author_user() access_token = self.user.facebook title = self.get_argument('title', '') view = self.get_argument('view', '') status = (content_remote.strip_html(title) + ('\n' if title and view else '') + content_remote.strip_html(view.replace('<br>', ' ')) + ('\n' if title or view else '') + self.get_argument('url')) post_args = {"message": status} thumb = self.get_argument('thumb', '') picture = None if thumb: if not thumb.startswith('http://'): thumb = url_factory.clean_filename(thumb) thumb = thumb[len(url_factory.resource_url(self)) + 1:] thumb = url_factory.resource_directory(self, thumb) picture = thumb basename = os.path.basename(thumb) dirname = os.path.dirname(thumb) if os.path.basename(dirname) == 'thumbs': parent_dir = os.path.dirname(dirname) original_dir = os.path.join(parent_dir, 'original') original_img = os.path.join(original_dir, basename) if os.path.exists(original_img): picture = original_img picture = picture[len(self.application.settings["static_path"] ) + 1:] picture = self.static_url(picture, include_host=True) else: picture = thumb if picture: post_args['picture'] = picture video = re.compile(r'<iframe[^>]*(youtube|vimeo)[^>]*>.*?</iframe>', re.M | re.S).search(view) if video: video = video.group(0) is_youtube = re.compile(r'<iframe[^>]*(youtube)[^>]*>', re.M).search(view) if is_youtube: video_id = re.compile( r'<iframe[^>]*youtube.com/embed/([^\?]*)[^>]*>', re.M).search(view).group(1) source = 'http://www.youtube.com/e/' + video_id + '?autoplay=1' else: video_id = re.compile( r'<iframe[^>]*vimeo.com/video/([^\?"]*)[^>]*>', re.M).search(view).group(1) source = ('https://secure.vimeo.com/moogaloop.swf?clip_id=' + video_id + '&autoplay=1') post_args['source'] = source self.facebook_request( "/me/feed", self.status_update_result, access_token=access_token, post_args=post_args, )
def post(self): if not self.authenticate(author=True): return op = self.get_argument('op', None) if op == 'favorite': self.favorite() return access_token, tumblr_info = self.get_tumblr_info() title = content_remote.strip_html(self.get_argument('title', '')) body = url_factory.add_base_uris(self, self.get_argument('view', '')) \ + '\n' \ + self.get_argument('url') post_args = {"type": "text", "title": title, "body": body} # TODO, refactor out w FB logic thumb = self.get_argument('thumb', '') picture = None normal_picture = None if thumb: if not thumb.startswith('http://'): thumb = url_factory.clean_filename(thumb) thumb = thumb[len(url_factory.resource_url(self)) + 1:] thumb = url_factory.resource_directory(self, thumb) picture = thumb basename = os.path.basename(thumb) dirname = os.path.dirname(thumb) if os.path.basename(dirname) == 'thumbs': parent_dir = os.path.dirname(dirname) original_dir = os.path.join(parent_dir, 'original') original_img = os.path.join(original_dir, basename) if os.path.exists(original_img): picture = original_img normal_path = os.path.join(parent_dir, basename) if os.path.exists(normal_path): normal_picture = normal_path normal_picture = normal_picture[len( self.application.settings["static_path"]) + 1:] normal_picture = self.static_url(normal_picture, include_host=True, include_sig=False) picture = picture[len(self.application.settings["static_path"]) + 1:] picture = self.static_url(picture, include_host=True, include_sig=False) else: picture = thumb video = re.compile(r'<iframe[^>]*(youtube|vimeo)[^>]*>.*?</iframe>', re.M | re.S).search(body) if picture and normal_picture and not video: post_args["source"] = picture post_args["link"] = self.get_argument('url') post_args["caption"] = re.compile(r'(<figure>.*?<img.*?src="' + normal_picture + r'".*?>.*?</figure>)', re.M | re.U | re.S).sub( '', body) post_args["type"] = "photo" if video: video = video.group(0) post_args["embed"] = video post_args["caption"] = body.replace(video, '') post_args["type"] = "video" section = self.get_argument('section', '') album = self.get_argument('album', '') tags = re.compile(r'#(\w+)(?![^<&]*(?:[>;]))', re.M | re.U).findall(body) post_args["tags"] = "" if tags: post_args["tags"] += ','.join(tags) if section: post_args["tags"] += "," + section if album: post_args["tags"] += "," + album self.tumblr_request( "http://api.tumblr.com/v2/blog/" + tumblr_info['primary_blog'] + "/post", self.status_update_result, access_token=access_token, post_args=post_args,)
def post(self): safe_user = False if self.authenticate(author=True): safe_user = True self.get_common_parameters() if safe_user: if media.detect_media_type( self.base_leafname) not in ('video', 'image', 'audio', 'web', 'zip'): raise tornado.web.HTTPError(400, "i call shenanigans") else: if media.detect_media_type(self.base_leafname) != 'image': raise tornado.web.HTTPError(400, "i call shenanigans") if self.get_argument('canvasImage', None): uploaded_file = self.get_argument('canvasImage') else: uploaded_file = self.request.files['file'][0] overwrite = True if self.get_argument('overwrite', False) else False if safe_user: self.media_section = url_factory.clean_filename( self.get_argument('section')) if self.media_section.startswith(url_factory.resource_url(self)): self.media_section = self.media_section[ len(url_factory.resource_url(self)) + 1:] self.parent_directory = url_factory.resource_directory( self, self.media_section) self.parent_url = url_factory.resource_url(self, self.media_section) if self.media_section == 'themes': test_zip_path_name = os.path.join(self.parent_directory, self.base_leafname) split_path = os.path.splitext(test_zip_path_name) if os.path.exists(test_zip_path_name): os.remove(test_zip_path_name) if os.path.exists(split_path[0]) and os.path.isdir( split_path[0]): shutil.rmtree(split_path[0]) else: self.parent_directory = os.path.join( self.application.settings["resource_path"], 'remote') self.parent_url = os.path.join( self.application.settings["resource_url"], 'remote') self.full_path = os.path.join(self.parent_directory, self.base_leafname) if not overwrite: self.full_path = media.get_unique_name(self.full_path) if not os.path.isdir(self.parent_directory): os.makedirs(self.parent_directory) if self.chunked_upload and safe_user: f = open(self.tmp_path, 'w') f.write(uploaded_file['body']) f.close() total_chunks_uploaded = 0 for f in os.listdir(self.tmp_dir): if f.startswith(self.base_leafname): total_chunks_uploaded += 1 if total_chunks_uploaded == max(self.total_size / self.chunk_size, 1): final_file = open(self.full_path, 'w') for f in os.listdir(self.tmp_dir): if f.startswith(self.base_leafname): chunk_path = os.path.join(self.tmp_dir, f) chunk_file = open(chunk_path, 'r') final_file.write(chunk_file.read()) chunk_file.close() os.unlink(chunk_path) final_file.close() original_size_url, url, thumb_url = media.save_locally( self.parent_url, self.full_path, None, skip_write=True, overwrite=overwrite) else: return else: original_size_url, url, thumb_url = media.save_locally( self.parent_url, self.full_path, uploaded_file['body'], disallow_zip=(not safe_user), overwrite=overwrite) media_html = media.generate_full_html(self, url, original_size_url) self.set_header("Content-Type", "text/plain; charset=UTF-8") self.write(json.dumps({ 'original_size_url': original_size_url, \ 'url': url, \ 'thumb_url': thumb_url, \ 'html': media_html, }))