add new uploads/batch endpoint for handling twitter galleries
This commit is contained in:
@@ -4,6 +4,10 @@ div#c-uploads {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
ul#links {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
label[for="upload_as_pending"] {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
@@ -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])
|
||||
|
||||
@@ -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 = {})
|
||||
|
||||
33
app/logical/twitter_service.rb
Normal file
33
app/logical/twitter_service.rb
Normal 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
|
||||
31
app/views/uploads/batch.html.erb
Normal file
31
app/views/uploads/batch.html.erb
Normal 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" %>
|
||||
Reference in New Issue
Block a user