YouTubeで見た動画を記憶する









youtube.comは、私が見たビデオを「忘れる」ことに直面しました。

私は多くの教育チャンネルを見て、それを見たかどうかを覚えなければなりません。

私は講義を見ましたが、数日後(月、年)に「 閲覧済み 」のステータスが消えました。

または、反対に、2分間の講義を視聴して就寝し、午前中に講義のステータスが「視聴済み」になります。



だから私は自分の手でyoutubeの視聴に関する情報を管理することにしました。

YouTubeに関係なく、この情報を保存します。



YouTubeでさまざまなデバイスから動画を視聴し、ローカルコンピューターに縛られないように、サイトをオンラインに投稿しました。

http://memtube.com

そしてそこからすべてを見てください。

誰が欲望を持っている、参加してください。 このサイトでは、いつでも閲覧履歴付きのExcelファイルをダウンロードできます。





あなたがあなた自身のウェブサイトを作りたいならば、詳細はカットの下にあります。



スクリーンショット



時々、スクリーンショットは記事自体よりもよく説明します。

したがって、私はそれらを最初に持ってきます:





興味のあるチャンネルを追加できます。











任意のWebプログラミング言語での実装



そのため、私たちはあなたのyoutubeにビューを記憶する能力と優秀な講師を書きます。

YouTubeはgoogle APIから情報を受け取り、あなたとYouTubeの間の一種のレイヤーになります。

また、データベースに視聴情報を保存します。



これをpythonとフラスコフレームワークで作成しました。記事の下部にある70行、githubへのリンクがあります。

しかし、PHP、perl、およびその他のWeb用言語で再作成できるため、まず一般的な原則...



Google APIを使用する



youtubeのgoogle APIキーを取得します。 ここでできます



チャンネル情報

サイトを作成するには、チャネルに関する情報を受け取る必要があります。

たとえば、次のリンクをご覧ください。

www.youtube.com/channel/UC640y4UvDAlya_WOj5U4pfA

UC640y4UvDAlya_WOj5U4pfAはチャネルIDです。

APIを使用します。



curl 'https://www.googleapis.com/youtube/v3/channels?part=snippet&id=UC640y4UvDAlya_WOj5U4pfA&key=__API'
      
      





そして、このような応答をJSON形式で取得します
 { "kind": "youtube#channelListResponse", "etag": "\"kYnGHzMaBhcGeLrcKRx6PAIUosY/YqjVAeQ4_JORc2ijoBKla3hrDXE\"", "pageInfo": { "totalResults": 1, "resultsPerPage": 1 }, "items": [ { "kind": "youtube#channel", "etag": "\"kYnGHzMaBhcGeLrcKRx6PAIUosY/OE6leaeClJlkthEEiPP5KVJQZPQ\"", "id": "UC640y4UvDAlya_WOj5U4pfA", "snippet": { "title": "nptelhrd", "description": "Your favorite courses available for certification! study, write an exam and get a certificate from the IITs! Check http://nptel.ac.in/noc\n\nThis channel provides technical lectures from seven Indian Institutes of Technology (IITs) and Indian Institute of Science (IISc) Bangalore.\n\nPlease visit the NPTEL Channel List below to view the complete list of courses. (24 Channels)", "publishedAt": "2007-11-28T04:54:13.000Z", "thumbnails": { "default": { "url": "https://yt3.ggpht.com/-VO_A5Tys4WY/AAAAAAAAAAI/AAAAAAAAAAA/mBvvbUvh0A8/s88-ck-no/photo.jpg" }, "medium": { "url": "https://yt3.ggpht.com/-VO_A5Tys4WY/AAAAAAAAAAI/AAAAAAAAAAA/mBvvbUvh0A8/s240-ck-no/photo.jpg" }, "high": { "url": "https://yt3.ggpht.com/-VO_A5Tys4WY/AAAAAAAAAAI/AAAAAAAAAAA/mBvvbUvh0A8/s240-ck-no/photo.jpg" } }, "localized": { "title": "nptelhrd", "description": "Your favorite courses available for certification! study, write an exam and get a certificate from the IITs! Check http://nptel.ac.in/noc\n\nThis channel provides technical lectures from seven Indian Institutes of Technology (IITs) and Indian Institute of Science (IISc) Bangalore.\n\nPlease visit the NPTEL Channel List below to view the complete list of courses. (24 Channels)" } } } ] }
      
      









ここから、「タイトル」フィールドを引き出して、チャンネルの名前として使用できます。



チャンネルから動画のリストを取得します

 curl 'https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCEBb1b_L6zDS3xTUrIALZOw&order=date&key=__API'
      
      







そして、このような応答をJSON形式で取得します
 { "kind": "youtube#searchListResponse", "etag": "\"kYnGHzMaBhcGeLrcKRx6PAIUosY/vGlosUUKRoHE50sX08btNSJuUT0\"", "nextPageToken": "CAUQAA", "pageInfo": { "totalResults": 3493, "resultsPerPage": 5 }, "items": [ { "kind": "youtube#searchResult", "etag": "\"kYnGHzMaBhcGeLrcKRx6PAIUosY/f-Aj24y6ay5s_ofPTa82fwx3hP0\"", "id": { "kind": "youtube#video", "videoId": "NtMOab_nhs0" }, "snippet": { "publishedAt": "2015-04-02T00:35:45.000Z", "channelId": "UCEBb1b_L6zDS3xTUrIALZOw", "title": "Octave/MATLAB for Beginners, Part 2: Fitting Data and Plotting", "description": "MIT 22.15 Essential Numerical Methods, Fall 2014 View the complete course: http://ocw.mit.edu/22-15F14 Instructor: Ian Hutchinson Plotting the line that results ...", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/NtMOab_nhs0/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/NtMOab_nhs0/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/NtMOab_nhs0/hqdefault.jpg" } }, "channelTitle": "MIT", "liveBroadcastContent": "none" } }, { "kind": "youtube#searchResult", "etag": "\"kYnGHzMaBhcGeLrcKRx6PAIUosY/qLJGwF303RMmdl03IbivB2VkIQ4\"", "id": { "kind": "youtube#video", "videoId": "WUxImdA7k8E" }, "snippet": { "publishedAt": "2015-04-02T00:35:45.000Z", "channelId": "UCEBb1b_L6zDS3xTUrIALZOw", "title": "Octave/MATLAB for Beginners, Part 3: Cleaning Up & Saving Plots", "description": "MIT 22.15 Essential Numerical Methods, Fall 2014 View the complete course: http://ocw.mit.edu/22-15F14 Instructor: Ian Hutchinson Cleaning up and saving ...", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/WUxImdA7k8E/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/WUxImdA7k8E/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/WUxImdA7k8E/hqdefault.jpg" } }, "channelTitle": "MIT", "liveBroadcastContent": "none" } }, { "kind": "youtube#searchResult", "etag": "\"kYnGHzMaBhcGeLrcKRx6PAIUosY/mKjnuWcbJIZE_fKn12kg7B-lrN0\"", "id": { "kind": "youtube#video", "videoId": "LhPZwdhutgU" }, "snippet": { "publishedAt": "2015-04-02T00:35:45.000Z", "channelId": "UCEBb1b_L6zDS3xTUrIALZOw", "title": "Octave/MATLAB for Beginners, Part 1: Starting from Scratch", "description": "MIT 22.15 Essential Numerical Methods, Fall 2014 View the complete course: http://ocw.mit.edu/22-15F14 Instructor: Ian Hutchinson Create adjacent windows ...", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/LhPZwdhutgU/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/LhPZwdhutgU/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/LhPZwdhutgU/hqdefault.jpg" } }, "channelTitle": "MIT", "liveBroadcastContent": "none" } }, { "kind": "youtube#searchResult", "etag": "\"kYnGHzMaBhcGeLrcKRx6PAIUosY/EteK6EKK5CG4IAAX3JjzWUD0oAQ\"", "id": { "kind": "youtube#playlist", "playlistId": "PLUl4u3cNGP63_OOz8w5qDEoqErZ8Hj-fc" }, "snippet": { "publishedAt": "2015-04-02T00:34:03.000Z", "channelId": "UCEBb1b_L6zDS3xTUrIALZOw", "title": "MIT 22.15 Essential Numerical Methods, Fall 2014", "description": "View the complete course: http://ocw.mit.edu/22-15F14 Instructor: Ian Hutchinson Three short tutorial videos which demonstrate basic operation of Octave software, used in this graduate-level...", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/LhPZwdhutgU/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/LhPZwdhutgU/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/LhPZwdhutgU/hqdefault.jpg" } }, "channelTitle": "MIT", "liveBroadcastContent": "none" } }, { "kind": "youtube#searchResult", "etag": "\"kYnGHzMaBhcGeLrcKRx6PAIUosY/jI4Bwr7emgpt45cnFetFPewI7qU\"", "id": { "kind": "youtube#playlist", "playlistId": "PLUl4u3cNGP62FPGcyFJkzhqq9c5cHCK32" }, "snippet": { "publishedAt": "2015-03-23T21:38:55.000Z", "channelId": "UCEBb1b_L6zDS3xTUrIALZOw", "title": "MIT 8.421 Atomic and Optical Physics I, Spring 2014", "description": "MIT 8.421 Atomic and Optical Physics I, Spring 2014 View the complete course: http://ocw.mit.edu/8-421S14 Instructor: Wolfgang Ketterle This is the first of a ...", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/iwQ49oG-DO8/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/iwQ49oG-DO8/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/iwQ49oG-DO8/hqdefault.jpg" } }, "channelTitle": "MIT", "liveBroadcastContent": "none" } } ] }
      
      







デフォルトでは、チャンネルから最後の5ビデオを一度に出力します。

これを変更するには、たとえばパラメーター&maxResults = 10を追加します。

JSONのチャンネルページをナビゲートするには、次の値が返されます。

「NextPageToken」および「prevPageToken」。

次または前のページに移動する必要がある場合は、追加のパラメーター&pageToken =を入力します

ここで値「nextPageToken」または「prevPageToken」に置き換えます。



単一のビデオに関する情報

一般に、私のサイトではこのリクエストを使用しませんでしたが、役に立つかもしれません。

したがって、私はそれをもたらします:

 curl 'https://ww.googleapis.com/youtube/v3/videos?part=snippet&id=EhNWzcUwqGbI&key=__API'
      
      







そして、このような応答をJSON形式で取得します
 { "kind": "youtube#videoListResponse", "etag": "\"IHLB7Mi__JPvvG2zLQWAg8l36UU/2kAxpYyny-CEVVbQ2cOjO-XSscQ\"", "pageInfo": { "totalResults": 1, "resultsPerPage": 1 }, "items": [ { "kind": "youtube#video", "etag": "\"IHLB7Mi__JPvvG2zLQWAg8l36UU/vAIAewyN9KKpNPERU4b4tOjuPL4\"", "id": "EhNWzcUqGbI", "snippet": { "publishedAt": "2013-03-16T06:58:52.000Z", "channelId": "UCuLLf8HBxpa-RV1sf9CRmDg", "title": "50 MPH 52v Electric Mountain Bike", "description": "http://voltbicycles.com This is our Alite 1000 Electric Mountain bike powered by a black lighting brushless rear hub electric motor with a 52v battery system. This electric bike will do around 50 MPH and will run 30+ miles on a single charge. \n\nGOING GREEN DOESN'T HAVE TO BE BORING", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/EhNWzcUqGbI/default.jpg", "width": 120, "height": 90 }, "medium": { "url": "https://i.ytimg.com/vi/EhNWzcUqGbI/mqdefault.jpg", "width": 320, "height": 180 }, "high": { "url": "https://i.ytimg.com/vi/EhNWzcUqGbI/hqdefault.jpg", "width": 480, "height": 360 }, "standard": { "url": "https://i.ytimg.com/vi/EhNWzcUqGbI/sddefault.jpg", "width": 640, "height": 480 }, "maxres": { "url": "https://i.ytimg.com/vi/EhNWzcUqGbI/maxresdefault.jpg", "width": 1280, "height": 720 } }, "channelTitle": "bradscottphotography", "categoryId": "28", "liveBroadcastContent": "none", "localized": { "title": "50 MPH 52v Electric Mountain Bike", "description": "http://voltbicycles.com This is our Alite 1000 Electric Mountain bike powered by a black lighting brushless rear hub electric motor with a 52v battery system. This electric bike will do around 50 MPH and will run 30+ miles on a single charge. \n\nGOING GREEN DOESN'T HAVE TO BE BORING" } } } ] }
      
      









現在の閲覧履歴はどうですか?



現在の閲覧履歴は次の場所に保存されます。

www.youtube.com/feed/history

そこに保存されているストーリー全体がロードされるまで、「More」ボタンを勝利の最後まで押します。

次に、htmlファイルに保存します。

perlで小さなパーサーをスケッチし、保存された履歴ファイルからすべてのビデオのIDを取得します。

 use strict; use warnings; use utf8; use Mojo::DOM; use File::Slurp; use feature 'say'; my $body = read_file( 'youtube_history.html', binmode => ':utf8' ); my $dom = Mojo::DOM->new($body); for my $e ( $dom->find('div.yt-uix-tile')->each ) { say $e->{'data-context-item-id'}; }
      
      







出力は、youtube_history.htmlにあったYouTube上のすべてのIDのリストです。

ローカルデータベースにアップロードして、ビデオを視聴済みとしてマークできます。



フラスコフレームワークの実装について少し



githubへのリンク:

github.com/Alexmod/memtube

ハブには、 フラスコに関する一連の記事がありましたので、詳しくは説明しません。

ただし、このファイルを実行する場合は、仮想環境を配置し、起動に必要なすべてのモジュールをインストールし、

次のコマンドで実行します:

 python main.py
      
      





すべてが正常であれば、次のように表示されます。

  * Running on http://0.0.0.0:5000/ * Restarting with reloader
      
      





youtube.comのローカルバージョンが準備できました。

最初の起動後、video.dbファイルは、表示情報が保存されるディレクトリと同じディレクトリに作成されます。



All Articles