From ef59ae88863dbe3245416e3b1fb3f6662acd9414 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Wed, 26 Aug 2015 13:54:14 -0700 Subject: [PATCH 1/3] enable audio for videos #2499 --- app/assets/stylesheets/common/000_vars.css.scss | 10 ++++++++++ app/assets/stylesheets/specific/posts.css.scss | 6 +++++- app/models/upload.rb | 6 +++--- app/presenters/post_presenter.rb | 1 + 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/assets/stylesheets/common/000_vars.css.scss b/app/assets/stylesheets/common/000_vars.css.scss index 65374d0b1..a4d1f2b64 100644 --- a/app/assets/stylesheets/common/000_vars.css.scss +++ b/app/assets/stylesheets/common/000_vars.css.scss @@ -77,3 +77,13 @@ $preview_flagged_color: #F00; text-align: center; } +@mixin audio-icon { + content: "♪"; + position: absolute; + width: 20px; + height: 20px; + color: white; + background-color: rgba(0,0,0,0.5); + margin: 2px; + text-align: center; +} diff --git a/app/assets/stylesheets/specific/posts.css.scss b/app/assets/stylesheets/specific/posts.css.scss index 901f2f6f8..e92639b62 100644 --- a/app/assets/stylesheets/specific/posts.css.scss +++ b/app/assets/stylesheets/specific/posts.css.scss @@ -26,9 +26,13 @@ article.post-preview { margin: auto; } - &[data-tags~=animated]:before, &[data-file-ext=swf]:before, &[data-file-ext=webm]:before, &[data-file-ext=zip]:before { + &[data-tags~=animated]:before, &[data-file-ext=swf]:before, &[data-file-ext=webm]:before, &[data-file-ext=mp4]:before, &[data-file-ext=zip]:before { @include animated-icon; } + + &[data-has-audio=true]:before { + @include audio-icon; + } } #iqdb-similar { diff --git a/app/models/upload.rb b/app/models/upload.rb index e0c0c0c97..1a5d02c16 100644 --- a/app/models/upload.rb +++ b/app/models/upload.rb @@ -85,9 +85,9 @@ class Upload < ActiveRecord::Base end end - def validate_no_audio + def tag_audio if is_video? && video.audio_channels.present? - raise "video must not have audio channels" + self.tag_string = "#{tag_string} audio" end end @@ -112,7 +112,7 @@ class Upload < ActiveRecord::Base calculate_hash(file_path) validate_md5_uniqueness validate_md5_confirmation - validate_no_audio + tag_audio validate_video_duration calculate_file_size(file_path) if has_dimensions? diff --git a/app/presenters/post_presenter.rb b/app/presenters/post_presenter.rb index c1c1a13de..5e8e200ec 100644 --- a/app/presenters/post_presenter.rb +++ b/app/presenters/post_presenter.rb @@ -68,6 +68,7 @@ class PostPresenter < Presenter def self.data_attributes(post) %{ data-id="#{post.id}" + data-has-audio="#{post.has_tag?('audio')}" data-tags="#{h(post.tag_string)}" data-pools="#{post.pool_string}" data-uploader="#{h(post.uploader_name)}" From 03bc0ef78bd15ce657512a9e887fc6e35967d27d Mon Sep 17 00:00:00 2001 From: r888888888 Date: Wed, 26 Aug 2015 14:13:38 -0700 Subject: [PATCH 2/3] fix audio icon css for comments #2499 --- app/assets/stylesheets/specific/comments.css.scss | 12 +++++++++++- app/assets/stylesheets/specific/mod_queue.css.scss | 8 +++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/specific/comments.css.scss b/app/assets/stylesheets/specific/comments.css.scss index b48570eea..b02f27ee9 100644 --- a/app/assets/stylesheets/specific/comments.css.scss +++ b/app/assets/stylesheets/specific/comments.css.scss @@ -98,7 +98,7 @@ div#c-comments { } div.post-preview { - &[data-tags~=animated], &[data-file-ext=swf], &[data-file-ext=webm], &[data-file-ext=zip] { + &[data-tags~=animated], &[data-file-ext=swf], &[data-file-ext=webm], &[data-file-ext=zip], &[data-file-ext=mp4] { div.preview { position: relative; @@ -107,6 +107,16 @@ div#c-comments { } } } + + &[data-has-audio=true] { + div.preview { + position: relative; + + &:before { + @include audio-icon; + } + } + } } div.post { diff --git a/app/assets/stylesheets/specific/mod_queue.css.scss b/app/assets/stylesheets/specific/mod_queue.css.scss index 96e529d62..538537d89 100644 --- a/app/assets/stylesheets/specific/mod_queue.css.scss +++ b/app/assets/stylesheets/specific/mod_queue.css.scss @@ -29,11 +29,17 @@ div#c-moderator-post-queues { width: 800px; } - &[data-tags~=animated], &[data-file-ext=swf], &[data-file-ext=webm], &[data-file-ext=zip] { + &[data-tags~=animated], &[data-file-ext=swf], &[data-file-ext=webm], &[data-file-ext=zip], &[data-file-ext=mp4] { aside:before { @include animated-icon; } } + + &[data-has-audio=true] { + aside:before { + @include audio-icon; + } + } } div#moderation-guideline { From cbe627b01adf5c6ee22c4fd886e3db560354cc31 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Thu, 27 Aug 2015 14:56:25 -0700 Subject: [PATCH 3/3] fixes #2494: Twitter bookmarklet: support uploading video --- app/assets/stylesheets/common/000_vars.css.scss | 2 +- app/assets/stylesheets/specific/comments.css.scss | 4 ++-- app/assets/stylesheets/specific/mod_queue.css.scss | 4 ++-- app/assets/stylesheets/specific/posts.css.scss | 4 ++-- app/logical/sources/strategies/twitter.rb | 2 +- app/logical/twitter_service.rb | 8 +++++++- app/models/upload.rb | 2 +- app/presenters/post_presenter.rb | 2 +- 8 files changed, 17 insertions(+), 11 deletions(-) diff --git a/app/assets/stylesheets/common/000_vars.css.scss b/app/assets/stylesheets/common/000_vars.css.scss index a4d1f2b64..203985f24 100644 --- a/app/assets/stylesheets/common/000_vars.css.scss +++ b/app/assets/stylesheets/common/000_vars.css.scss @@ -77,7 +77,7 @@ $preview_flagged_color: #F00; text-align: center; } -@mixin audio-icon { +@mixin sound-icon { content: "♪"; position: absolute; width: 20px; diff --git a/app/assets/stylesheets/specific/comments.css.scss b/app/assets/stylesheets/specific/comments.css.scss index b02f27ee9..72debd349 100644 --- a/app/assets/stylesheets/specific/comments.css.scss +++ b/app/assets/stylesheets/specific/comments.css.scss @@ -108,12 +108,12 @@ div#c-comments { } } - &[data-has-audio=true] { + &[data-has-sound=true] { div.preview { position: relative; &:before { - @include audio-icon; + @include sound-icon; } } } diff --git a/app/assets/stylesheets/specific/mod_queue.css.scss b/app/assets/stylesheets/specific/mod_queue.css.scss index 538537d89..1a96ac28c 100644 --- a/app/assets/stylesheets/specific/mod_queue.css.scss +++ b/app/assets/stylesheets/specific/mod_queue.css.scss @@ -35,9 +35,9 @@ div#c-moderator-post-queues { } } - &[data-has-audio=true] { + &[data-has-sound=true] { aside:before { - @include audio-icon; + @include sound-icon; } } } diff --git a/app/assets/stylesheets/specific/posts.css.scss b/app/assets/stylesheets/specific/posts.css.scss index e92639b62..189a5c250 100644 --- a/app/assets/stylesheets/specific/posts.css.scss +++ b/app/assets/stylesheets/specific/posts.css.scss @@ -30,8 +30,8 @@ article.post-preview { @include animated-icon; } - &[data-has-audio=true]:before { - @include audio-icon; + &[data-has-sound=true]:before { + @include sound-icon; } } diff --git a/app/logical/sources/strategies/twitter.rb b/app/logical/sources/strategies/twitter.rb index b9f796342..c73a0c8e4 100644 --- a/app/logical/sources/strategies/twitter.rb +++ b/app/logical/sources/strategies/twitter.rb @@ -25,7 +25,7 @@ module Sources::Strategies attrs = TwitterService.new.client.status(status_id).attrs @artist_name = attrs[:user][:name] @profile_url = "https://twitter.com/" + attrs[:user][:screen_name] - @image_url = attrs[:entities][:media][0][:media_url] + ":orig" + @image_url = image_urls.first @artist_commentary_title = "" @artist_commentary_desc = attrs[:text] end diff --git a/app/logical/twitter_service.rb b/app/logical/twitter_service.rb index 1b793e4d5..fa0e317d5 100644 --- a/app/logical/twitter_service.rb +++ b/app/logical/twitter_service.rb @@ -24,7 +24,13 @@ class TwitterService urls << obj[:media_url] + ":orig" end attrs[:extended_entities][:media].each do |obj| - urls << obj[:media_url] + ":orig" + if obj[:video_info] + largest = obj[:video_info][:variants].select {|x| x[:url] =~ /\.mp4$/}.max_by {|x| x[:bitrate]} + urls.clear + urls << largest[:url] if largest + else + urls << obj[:media_url] + ":orig" + end end urls.uniq rescue diff --git a/app/models/upload.rb b/app/models/upload.rb index 1a5d02c16..a743a5db5 100644 --- a/app/models/upload.rb +++ b/app/models/upload.rb @@ -87,7 +87,7 @@ class Upload < ActiveRecord::Base def tag_audio if is_video? && video.audio_channels.present? - self.tag_string = "#{tag_string} audio" + self.tag_string = "#{tag_string} video_with_sound" end end diff --git a/app/presenters/post_presenter.rb b/app/presenters/post_presenter.rb index 5e8e200ec..d15985e4d 100644 --- a/app/presenters/post_presenter.rb +++ b/app/presenters/post_presenter.rb @@ -68,7 +68,7 @@ class PostPresenter < Presenter def self.data_attributes(post) %{ data-id="#{post.id}" - data-has-audio="#{post.has_tag?('audio')}" + data-has-sound="#{post.has_tag?('video_with_sound|flash_with_sound')}" data-tags="#{h(post.tag_string)}" data-pools="#{post.pool_string}" data-uploader="#{h(post.uploader_name)}"