<%= render MediaAssetComponent.new(media_asset: @media_asset, current_user: CurrentUser.user, outer_classes: "sticky h-full relative top-0", inner_classes: "mx-auto", dynamic_height: true) do |component| %> <% component.with_header do %>
<%= link_to chevron_left_icon, media_assets_path(search: { id: ">#{@media_asset.id}", order: "id_asc" }, limit: 1, redirect: true), class: "paginator-prev flex items-center justify-center text-xl absolute left-0 z-10", "data-shortcut": "a left" %> <%= link_to chevron_right_icon, media_assets_path(search: { id: "<#{@media_asset.id}", order: "id_desc" }, limit: 1, redirect: true), class: "paginator-next flex items-center justify-center text-xl absolute right-0 z-10", "data-shortcut": "d right" %>
<% end %> <% if policy(@media_asset).can_see_image? %> <% component.with_footer do %>
<% if @media_asset.post.present? %> <%= link_to image_icon_tag("danbooru-logo.png", class: "h-4"), @media_asset.post, class: "inline-block align-top" %> <% end %> <% @media_asset.source_urls.take(5).each do |url| %> <%= external_link_to url, external_site_icon(Source::URL.site_name(url), class: "h-4"), title: url, class: "inline-block align-top" %> <% end %> <%= link_to @media_asset.original.file_url do %> <%= number_to_human_size(@media_asset.file_size) %> .<%= @media_asset.file_ext %>, <%= @media_asset.image_width %>x<%= @media_asset.image_height %> <% if @media_asset.duration.present? %> (<%= duration_to_hhmmss(@media_asset.duration) %>) <% end %> <% end %> <%= render PopupMenuComponent.new(hide_on_click: false) do |menu| %> <% menu.item(hide_on_click: true) do %> <%= link_to "#{@media_asset.original.file_url}?download=1", download: @media_asset.original.file_name do %> <%= download_icon %> Download <% end %> <% end %> <% menu.item do %>
<% end %> <% menu.item do %> <%= external_link_to "https://saucenao.com/search.php?url=#{CGI.escape(@media_asset.original.file_url)}", target: "_blank" do %> <%= search_icon %> SauceNAO <% end %> <% end %> <% menu.item do %> <%= external_link_to "https://ascii2d.net/search/url/#{CGI.escape(@media_asset.original.file_url)}", target: "_blank" do %> <%= search_icon %> Ascii2D <% end %> <% end %> <% menu.item do %> <%= external_link_to "https://yandex.com/images/search?rpt=imageview&url=#{CGI.escape(@media_asset.original.file_url)}", target: "_blank" do %> <%= search_icon %> Yandex <% end %> <% end %> <% menu.item do %> <%= external_link_to "https://lens.google.com/uploadbyurl?url=#{CGI.escape(@media_asset.original.file_url)}", target: "_blank" do %> <%= search_icon %> Google <% end %> <% end %> <% menu.item do %> <%= external_link_to "https://www.bing.com/images/searchbyimage?cbir=sbi&imgurl=#{CGI.escape(@media_asset.original.file_url)}", target: "_blank" do %> <%= search_icon %> Bing <% end %> <% end %> <% menu.item do %> <%= link_to iqdb_queries_path(search: { media_asset_id: @media_asset.id }), target: "_blank" do %> <%= search_icon %> <%= Danbooru.config.app_name %> <% end %> <% end %> <% if policy(@media_asset).destroy? && @media_asset.post.nil? && !@media_asset.deleted? && !@media_asset.expunged? %> <% menu.item do %>
<% end %> <% menu.item do %> <%= link_to media_asset_path(@media_asset), class: "text-danger", remote: true, xhr: true, method: :delete, "data-confirm": "This will permanently delete this file. Are you sure?" do %> <%= delete_icon %> Delete file <% end %> <% end %> <% end %> <% end %>
<% end %> <% end %> <% end %>
<% if @media_asset.ai_tags.present? %>

Tags

    <% @media_asset.ai_tags.undeprecated.sort_by { |tag| [TagCategory.split_header_list.index(tag.category_name.downcase), tag.name.starts_with?("rating:") ? 0 : 1, tag.name] }.each do |ai_tag| %> <%= tag.li class: "tag-type-#{ai_tag.category} space-x-1 text-sm", "data-tag-name": ai_tag.name do %> <% if ai_tag.tag.artist? %> <%= link_to "?", show_or_new_artists_path(name: ai_tag.name) %> <% elsif ai_tag.name =~ /\A\d+\z/ %> <%= link_to "?", wiki_page_path("~#{ai_tag.name}") %> <% else %> <%= link_to "?", wiki_page_path(ai_tag.name) %> <% end %> <%= link_to ai_tag.pretty_name, media_assets_path(search: { ai_tags_match: ai_tag.name }), class: "break-word" %> <%= tag.span "#{ai_tag.score}%", class: ["text-muted text-xs"] %> <% end %> <% end %>
<% end %>
<% if @post.present? %> <% end %> <% if policy(@media_asset).can_see_image? %> <% end %> <% if @media_asset.duration.present? %> <% end %> <% if policy(@media_asset).can_see_image? %> <% @media_asset.source_urls.each do |url| %> <% end %> <% end %> <% @media_asset.metadata.to_h.group_by { |key, value| key.split(":").first }.sort.each do |group, pairs| %> <% pairs.sort.each do |key, value| %> <% end %> <% end %>
Metadata
Post <%= link_to "##{@post.id}", @post %>
MD5 <%= @media_asset.md5 %>
File Type <%= @media_asset.mime_type %>
File Size <%= number_to_human_size(@media_asset.file_size) %>
Resolution <%= @media_asset.image_width %>x<%= @media_asset.image_height %>
Duration <%= duration_to_hhmmss(@media_asset.duration) %>
Source <%= external_link_to url %>
<%= group.split(/[ _-]/).map(&:upcase_first).join(" ") %>
<%= key.split(":").second.scan(/(?:[A-Z][a-z]+|[A-Z]+(?![a-z]))/).join(" ") %> <%= link_to value, media_assets_path(search: { metadata: { key => value }}) %>
<% content_for(:html_header) do %> <%= render OpenGraphComponent.new(media_asset: @media_asset, current_user: CurrentUser.user) %> <% end %> <%= render "uploads/secondary_links" %>