teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

コードの修正

2017/11/15 04:26

投稿

penguin_mask
penguin_mask

スコア14

title CHANGED
File without changes
body CHANGED
@@ -17,7 +17,7 @@
17
17
  ```json
18
18
  --省略--
19
19
  "contentDetails": {
20
- "duration": "PT1S", <-- ここ
20
+ "duration": "PT5M9S", <-- ここ
21
21
  "dimension": "2d",
22
22
  "definition": "hd",
23
23
  "caption": "false",

2

コードの追加

2017/11/15 04:25

投稿

penguin_mask
penguin_mask

スコア14

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,31 @@
1
1
  rubyでYoutube Data api から動画の再生時間をとってくるコードを書きました
2
+ Youtube Data apiでは
3
+ https://www.googleapis.com/youtube/v3/videos?id=動画URLの末尾11桁&key=APIキー&part=snippet,contentDetails,statistics,status
4
+ にアクセスすると動画の再生時間やタイトル、視聴回数などがJSON方式で取得できます
5
+ ```ruby
6
+ def get_duration(id)
7
+ require 'net/http'
8
+ uri = URI.parse('https://www.googleapis.com/youtube/v3/videos?id='+ id +
9
+ '&key=(私のAPIキー)&part=snippet,
10
+ contentDetails,statistics,status')
11
+ json = Net::HTTP.get(uri)
12
+ videoInfo = JSON.parse(json)
13
+ duration = videoInfo['items'][0]['contentDetails']['duration']
14
+ return duration
15
+ end
16
+ ```
17
+ ```json
18
+ --省略--
19
+ "contentDetails": {
20
+ "duration": "PT1S", <-- ここ
21
+ "dimension": "2d",
22
+ "definition": "hd",
23
+ "caption": "false",
24
+ "licensedContent": true,
25
+ "projection": "rectangular"
26
+ },
27
+ --省略--
28
+ ```
2
29
  5分9秒の動画では”PT5M9S”という文字列が得られました
3
30
  この文字列を秒数に変換したいです(この場合数値型の309にしたいです)
4
31
  また試しにYouTubeで一番長いと言われる動画の再生時間をとってくると"P3W2DT19H1M41S"という文字列が得られました

1

誤字の修正

2017/11/15 04:22

投稿

penguin_mask
penguin_mask

スコア14

title CHANGED
File without changes
body CHANGED
@@ -3,4 +3,4 @@
3
3
  この文字列を秒数に変換したいです(この場合数値型の309にしたいです)
4
4
  また試しにYouTubeで一番長いと言われる動画の再生時間をとってくると"P3W2DT19H1M41S"という文字列が得られました
5
5
  更にYouTubeで一番短いと言われる動画の再生時間をとってくると"PT1S"という文字列が得られました
6
- これらのコードを数値型にするにはどうすればいいでしょうか?
6
+ これらの文字列を数値型にするにはどうすればいいでしょうか?