質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.11%

pythonでURLから動画をダウンロードする方法

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 80

Yuiti628

score 21

下記のようなサイトでインスタのURlを貼り付けて「抜き出し」を押すと、サーバーのURLのようなものが取得できると思います。

https://awakest.net/instagram-image-save/


https://www.instagram.com/p/CCC8rUfB_Ez/?utm_source=ig_web_copy_link
を入れると
https://scontent-nrt1-1.cdninstagram.com/v/t50.2886-16/106587554_617039228916198_8908515426947992526_n.mp4?_nc_ht=scontent-nrt1-1.cdninstagram.com&_nc_cat=106&_nc_ohc=nhZhn5yhCYUAX8V3Vr-&oe=5EFD2DE3&oh=fb83f6230b258d139a73bc4fd7fae606
のurlが出来てます。

この出てきたURLを押すとwebサイトで動画を見ることができ、右クリックなどで名前を付けてダウンロードをすることが出来ます。

イメージ説明

これをpythonで行いたいのですが、初心者なもので何を調べてたら良いのか分からなくなりました。

サーバーのURL?のようなものはスクレイピングで取得することができたのですが、ここからはどのな方法なのでしょうか?

ffmpeg.input('url').output('path').run()

に入れてやってみたのですが
Server returned 403 Forbidden (access denied)
でダメでした。

何を勉強したら良いなどの手がかりだけでも欲しいですm(_ _)m

追記
回答いただいた、cookieやJSを探したのですが、分かりませんでした。
http://v16m-default.akamaized.net/5af56636ff6682a8f8dea34defd3296d/5efb342c/video/tos/useast2a/tos-useast2a-v-0053/ace972e6f19c455d9b9eaf701c8c36d2/?a=0&br=200&bt=100&cr=0&cs=0&dr=0&ds=5&er=&l=20200630064548010189085203368B420D&lr=&mime_type=video_mp4&qs=5&rc=M2w1ZmxtcXM6ajMzNmczM0ApOjM7Nmg3OzszN2loMzU5OWc2ZmdocF5gc2dfLS1eLjZzczVeXjU0XzQxNV81NDBjNDE6Yw%3D%3D&vl=&vr=

このurl何ですが、どのようなすれば良いでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

Server returned 403 Forbidden (access denied)

ということはアクセス権の問題です
リクエストには URL だけでなく、認可のためのなんらかの情報を含める必要があります

ffmpeg.input('url').output('path').run()

上記の url がブラウザでは閲覧可能であれば、
開発者ツールの [Network] タブを開いた状態のブラウザで上記の url をリクエストしてみて
開発者ツールの [Network] タブに表示されたリクエストをクリック → [Headers] タブで
[Request Headers] の内容を観察します

一概には言えませんが、例えば cookie: という項目に文字列があれば、
その文字列を使って次のコードでダウンロードできるかもしれません:

# 1. ダウンロードしたいメディアの URL を設定してください
url_media = 'https://'
# 2. 出力先の URL を設定してください
path_to_output = '/path/to/output.mp4'
# 3. Cookie の文字列を設定してください
cookies_string = ''

stream = ffmpeg.input(url_media , headers=f'Cookie: {cookies_string}\r\n', copytb='1')
stream = ffmpeg.output(stream, str(path_to_output), f='mp4', c='copy')
ffmpeg.run(stream)

これでうまくいかない場合は、
cookie の文字列をプログラムで動的に生成する必要があったり、
さらに他の内容をリクエストに追加する必要があります

メディアの URL のリクエストにどのような情報を追加する必要があるかは、
開発者ツールで JavaScript のコードを読んでいき、
メディアの URL にリクエストしている箇所を確認することで解析できます

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/06/30 15:44

    なるほど。
    ありがとうございます。

    確認してみます

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.11%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる