diff options
| author | Omar Roth <omarroth@hotmail.com> | 2019-02-24 11:04:46 -0600 |
|---|---|---|
| committer | Omar Roth <omarroth@hotmail.com> | 2019-02-24 11:04:46 -0600 |
| commit | 1692f7640c74d83d909e121356b0f4c593c5ac59 (patch) | |
| tree | 61c14750785959fbaf3694f1a5fd81863f59cb38 /src | |
| parent | ebcb21dbfe73e4d74465e796d595e0e4e704436c (diff) | |
| download | invidious-1692f7640c74d83d909e121356b0f4c593c5ac59.tar.gz invidious-1692f7640c74d83d909e121356b0f4c593c5ac59.tar.bz2 invidious-1692f7640c74d83d909e121356b0f4c593c5ac59.zip | |
Remove JS from download widget
Diffstat (limited to 'src')
| -rw-r--r-- | src/invidious.cr | 22 | ||||
| -rw-r--r-- | src/invidious/views/watch.ecr | 22 |
2 files changed, 30 insertions, 14 deletions
diff --git a/src/invidious.cr b/src/invidious.cr index cbb36742..9f0f6a3f 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -3904,12 +3904,20 @@ end # YouTube /videoplayback links expire after 6 hours, # so we have a mechanism here to redirect to the latest version get "/latest_version" do |env| - id = env.params.query["id"]? - itag = env.params.query["itag"]? + if env.params.query["download_widget"]? + download_widget = JSON.parse(env.params.query["download_widget"]) + id = download_widget["id"].as_s + itag = download_widget["itag"].as_s + title = download_widget["title"].as_s + local = "true" + end + + id ||= env.params.query["id"]? + itag ||= env.params.query["itag"]? region = env.params.query["region"]? - local = env.params.query["local"]? + local ||= env.params.query["local"]? local ||= "false" local = local == "true" @@ -3934,6 +3942,10 @@ get "/latest_version" do |env| url = URI.parse(url).full_path.not_nil! end + if title + url += "&title=#{title}" + end + env.redirect url end @@ -4038,6 +4050,10 @@ get "/videoplayback" do |env| client.get(url, headers) do |response| env.response.status_code = response.status_code + if title = env.params.query["title"]? + env.response.headers["Content-Disposition"] = "attachment; filename=#{title}" + end + response.headers.each do |key, value| env.response.headers[key] = value end diff --git a/src/invidious/views/watch.ecr b/src/invidious/views/watch.ecr index 9432eb4e..3949245d 100644 --- a/src/invidious/views/watch.ecr +++ b/src/invidious/views/watch.ecr @@ -54,29 +54,29 @@ <div class="h-box"> <p><a href="https://www.youtube.com/watch?v=<%= video.id %>"><%= translate(locale, "Watch video on Youtube") %></a></p> - <form class="pure-form pure-form-stacked"> + <form class="pure-form pure-form-stacked" action="/latest_version" method="get" rel="noopener" target="_blank"> <div class="pure-control-group"> <label for="download_widget"><%= translate(locale, "Download as: ") %></label> <select style="width:100%" name="download_widget" id="download_widget"> <% video_streams.each do |option| %> - <option data-url="/latest_version?id=<%= video.id %>&itag=<%= option["itag"] %>&local=true"><%= option["quality_label"] %> - <%= option["type"].split(";")[0] %> @ <%= option["fps"] %>fps - video only</option> + <option value='{"id":"<%= video.id %>","itag":"<%= option["itag"] %>","title":"<%= video.title.dump_unquoted %>-<%= video.id %>.mp4"}'> + <%= option["quality_label"] %> - <%= option["type"].split(";")[0] %> @ <%= option["fps"] %>fps - video only + </option> <% end %> <% audio_streams.each do |option| %> - <option data-url="/latest_version?id=<%= video.id %>&itag=<%= option["itag"] %>&local=true"><%= option["type"].split(";")[0] %> @ <%= option["bitrate"] %>k - audio only</option> + <option value='{"id":"<%= video.id %>","itag":"<%= option["itag"] %>","title":"<%= video.title.dump_unquoted %>-<%= video.id %>.mp4"}'> + <%= option["type"].split(";")[0] %> @ <%= option["bitrate"] %>k - audio only + </option> <% end %> <% fmt_stream.each do |option| %> - <option data-url="/latest_version?id=<%= video.id %>&itag=<%= option["itag"] %>&local=true"><%= itag_to_metadata?(option["itag"]).try &.["height"]? || "~240" %>p - <%= option["type"].split(";")[0] %></option> + <option value='{"id":"<%= video.id %>","itag":"<%= option["itag"] %>","title":"<%= video.title.dump_unquoted %>-<%= video.id %>.mp4"}'> + <%= itag_to_metadata?(option["itag"]).try &.["height"]? || "~240" %>p - <%= option["type"].split(";")[0] %> + </option> <% end %> </select> </div> - <div id="progress-container" style="width:100%; display:none"> - <div id="download-progress"> - </div> - </div> - - <button type="button" data-title="<%= video.title.dump_unquoted %>-<%= video.id %>.mp4" onclick="download_video(this)" - class="pure-button pure-button-primary"> + <button type="submit" class="pure-button pure-button-primary"> <b><%= translate(locale, "Download") %></b> </button> </form> |
