add new uploads/batch endpoint for handling twitter galleries

This commit is contained in:
r888888888
2015-02-09 16:29:00 -08:00
parent 0c00bba65d
commit e57cad7b0a
9 changed files with 105 additions and 4 deletions

View File

@@ -4,6 +4,10 @@ div#c-uploads {
margin-bottom: 2em;
}
ul#links {
margin-bottom: 1em;
}
label[for="upload_as_pending"] {
display: inline;
}

View File

@@ -26,6 +26,13 @@ class UploadsController < ApplicationController
respond_with(@upload)
end
def batch
if params[:url] =~ /twitter/
@service = TwitterService.new
end
@urls = @service.image_urls(params[:url])
end
def index
@search = Upload.search(params[:search])
@uploads = @search.order("id desc").paginate(params[:page], :limit => params[:limit])

View File

@@ -6,7 +6,7 @@ module Downloads
end
def self.strategies
[Pixiv, NicoSeiga, Twitpic, DeviantArt, Tumblr, Moebooru, Twitter]
[Downloads::RewriteStrategies::Pixiv, Downloads::RewriteStrategies::NicoSeiga, Downloads::RewriteStrategies::Twitpic, Downloads::RewriteStrategies::DeviantArt, Downloads::RewriteStrategies::Tumblr, Downloads::RewriteStrategies::Moebooru, Downloads::RewriteStrategies::Twitter]
end
def rewrite(url, headers, data = {})

View File

@@ -0,0 +1,33 @@
class TwitterService
def client
raise "Twitter API keys not set" if Danbooru.config.twitter_api_key.nil?
@client ||= begin
rest_client = Twitter::REST::Client.new do |config|
config.consumer_key = Danbooru.config.twitter_api_key
config.consumer_secret = Danbooru.config.twitter_api_secret
if bearer_token = Cache.get("twitter-api-token")
config.bearer_token = bearer_token
end
end
Cache.put("twitter-api-token", rest_client.bearer_token)
rest_client
end
end
def image_urls(tweet_url)
attrs = client.status(tweet_url).attrs
urls = []
attrs[:entities][:media].each do |obj|
urls << obj[:media_url]
end
attrs[:extended_entities][:media].each do |obj|
urls << obj[:media_url]
end
urls.uniq
rescue
[]
end
end

View File

@@ -0,0 +1,31 @@
<div id="c-uploads">
<div id="a-new">
<h1>Batch Upload</h1>
<ul id="links">
<% @urls.each.with_index do |url, i| %>
<li><%= link_to "Image ##{i}", new_upload_path(:url => url, :ref => params[:url]), :target => "_blank" %></li>
<% end %>
</ul>
<p><%= link_to "Open all links in new windows", "#", :id => "link" %></p>
</div>
</div>
<% content_for(:page_title) do %>
Batch Upload - <%= Danbooru.config.app_name %>
<% end %>
<% content_for(:html_header) do %>
<script type="text/javascript">
$(function() {
$("#link").click(function() {
$("#links a").each(function(i, v) {
window.open(v.href);
});
});
})
</script>
<% end %>
<%= render "posts/partials/common/secondary_links" %>