jarvisbot_songfinder 1.0.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +9 -1
- data/Gemfile +3 -1
- data/Gemfile.lock +15 -13
- data/README.md +1 -1
- data/Rakefile +3 -1
- data/bin/console +5 -1
- data/changelog.md +22 -0
- data/fixtures/vcr_cassettes/query_customconfig.yml +107 -0
- data/fixtures/vcr_cassettes/query_customconfig_short_track.yml +107 -0
- data/fixtures/vcr_cassettes/query_text.yml +120 -16
- data/fixtures/vcr_cassettes/query_track_delegation.yml +122 -18
- data/fixtures/vcr_cassettes/query_youtube_url.yml +8 -8
- data/fixtures/vcr_cassettes/search_query_auxiliary_provider.yml +43 -43
- data/fixtures/vcr_cassettes/search_query_not_found.yml +9 -9
- data/fixtures/vcr_cassettes/search_query_preferred_and_auxiliary.yml +122 -18
- data/fixtures/vcr_cassettes/search_query_preferred_provider.yml +122 -18
- data/fixtures/vcr_cassettes/spotify_invalid_region_restricted.yml +57 -5
- data/fixtures/vcr_cassettes/spotify_invalid_search.yml +5 -5
- data/fixtures/vcr_cassettes/spotify_invalid_too_long.yml +57 -5
- data/fixtures/vcr_cassettes/spotify_invalid_url_relinked.yml +107 -0
- data/fixtures/vcr_cassettes/spotify_valid.yml +56 -4
- data/fixtures/vcr_cassettes/spotify_valid_clean_or_unknown.yml +56 -4
- data/fixtures/vcr_cassettes/spotify_valid_explicit.yml +57 -5
- data/fixtures/vcr_cassettes/spotify_valid_search.yml +61 -9
- data/fixtures/vcr_cassettes/url_query_known_provider.yml +14 -14
- data/fixtures/vcr_cassettes/youtube_invalid.yml +4 -4
- data/fixtures/vcr_cassettes/youtube_invalid_region_restricted.yml +8 -8
- data/fixtures/vcr_cassettes/youtube_invalid_search.yml +4 -4
- data/fixtures/vcr_cassettes/youtube_invalid_too_long.yml +130 -8
- data/fixtures/vcr_cassettes/youtube_invalid_wrong_category.yml +15 -15
- data/fixtures/vcr_cassettes/youtube_valid.yml +214 -214
- data/fixtures/vcr_cassettes/youtube_valid_search.yml +22 -22
- data/jarvisbot_songfinder.gemspec +6 -5
- data/lib/jarvisbot_songfinder.rb +3 -0
- data/lib/jarvisbot_songfinder/configuration.rb +7 -2
- data/lib/jarvisbot_songfinder/helpers/query.rb +23 -15
- data/lib/jarvisbot_songfinder/helpers/reply_message.rb +37 -26
- data/lib/jarvisbot_songfinder/helpers/search_query.rb +11 -5
- data/lib/jarvisbot_songfinder/helpers/url_query.rb +13 -8
- data/lib/jarvisbot_songfinder/providers/bandrequest.rb +5 -1
- data/lib/jarvisbot_songfinder/providers/provider.rb +25 -6
- data/lib/jarvisbot_songfinder/providers/spotify_api.rb +28 -35
- data/lib/jarvisbot_songfinder/providers/unknown_provider.rb +4 -0
- data/lib/jarvisbot_songfinder/providers/unknown_search_provider.rb +5 -1
- data/lib/jarvisbot_songfinder/providers/youtube_api.rb +37 -64
- data/lib/jarvisbot_songfinder/version.rb +3 -1
- metadata +28 -28
- data/fixtures/vcr_cassettes/spotify_vcr_test.yml +0 -55
- data/fixtures/vcr_cassettes/youtube_invalid_regionrestricted.yml +0 -147
- data/fixtures/vcr_cassettes/youtube_invalid_wrongcategory.yml +0 -254
@@ -1,55 +0,0 @@
|
|
1
|
-
---
|
2
|
-
http_interactions:
|
3
|
-
- request:
|
4
|
-
method: get
|
5
|
-
uri: https://api.spotify.com/v1/tracks/1M419iBUjVwPlefiOxxUm2
|
6
|
-
body:
|
7
|
-
encoding: US-ASCII
|
8
|
-
string: ''
|
9
|
-
headers:
|
10
|
-
Accept:
|
11
|
-
- "*/*"
|
12
|
-
Accept-Encoding:
|
13
|
-
- gzip, deflate
|
14
|
-
User-Agent:
|
15
|
-
- rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.0p0
|
16
|
-
Authorization:
|
17
|
-
- Bearer BQBs5fnYfNTTUJegiXaLnstIoEvAwQct5VXyNb8lGM_MleEZQQN55QI0AZUfl3Y-9WaEHVECpdlpR_vftN8
|
18
|
-
Host:
|
19
|
-
- api.spotify.com
|
20
|
-
response:
|
21
|
-
status:
|
22
|
-
code: 200
|
23
|
-
message: OK
|
24
|
-
headers:
|
25
|
-
Content-Type:
|
26
|
-
- application/json; charset=utf-8
|
27
|
-
Cache-Control:
|
28
|
-
- public, max-age=7200
|
29
|
-
Access-Control-Allow-Origin:
|
30
|
-
- "*"
|
31
|
-
Access-Control-Allow-Headers:
|
32
|
-
- Accept, Authorization, Origin, Content-Type, Retry-After
|
33
|
-
Access-Control-Allow-Methods:
|
34
|
-
- GET, POST, OPTIONS, PUT, DELETE, PATCH
|
35
|
-
Access-Control-Allow-Credentials:
|
36
|
-
- 'true'
|
37
|
-
Access-Control-Max-Age:
|
38
|
-
- '604800'
|
39
|
-
Content-Encoding:
|
40
|
-
- gzip
|
41
|
-
Date:
|
42
|
-
- Fri, 01 Feb 2019 09:46:05 GMT
|
43
|
-
Via:
|
44
|
-
- 1.1 google
|
45
|
-
Alt-Svc:
|
46
|
-
- clear
|
47
|
-
Transfer-Encoding:
|
48
|
-
- chunked
|
49
|
-
body:
|
50
|
-
encoding: ASCII-8BIT
|
51
|
-
string: !binary |-
|
52
|
-
H4sIAAAAAAAAAOxVTXOjRhC951eodMnFXhhAA6gqlVrJtixbsollOZVNpahmPqxZ87WAZCtb/u+BBklrr7C1lUMu0eEJunveND39pr/+1Ol0IQyWUbfT73wt3zbvfrFORWVs3EeNLytUXuSV488mvrSKp0JkMYT+MgvzHRP68jQplFwj1aIo0ryvaUkq4g+N4wNLIq2m1UxrvvAeJkFxdnnzxYwjeXYvPo+6Ddnz0Wa/RSbkC0JI1Qu+FWko8zbOLZfiyPReWAxRXY5pcv8IaufY1Qk33DmWmUJ7k1e/9vff+sbnzl+bOq9AhRCEwo8gexCbinc/nnSPSjxFvEG8rXCAlsEI8RzxGhFjhmgZThDRPvwD8VOFJ7j25LLC0yEiWk5nFZ6NEZFnNEDE53OMP59XOMasxrhqjLuMce0Yc7vAHS+8Ci9/r3CCPBNknmDMBHkmdxVOMYcp2qeY5xVyXiHP9bRCD/fy8Ls89HoY72H8bx8rvMH4GT7PMH6G9Zlh5re49ha/5RazmuPau6vu9hRa+/rArq6Uo/X4eHgl7pQhF9OZtw7/nq1G9KI58Gajgxq6Ysvb6BqippvfCYrgXrzW8EKo+0VRGamlf9PE4Yu8yqwYj8uUNCTRmAWOblAhuWUCAOFSGlI4IgiMnkksi3NGwGRkJ4tHxYtFs01Tg31JmPrhSUgOEiRljjBtyWzTshnXqQRKXUEFJYyBAU7Q25NEuc0bSVDr4Bx4IIkDtOf0pKFLSe1eYLmEcYuDGwRglRbQiYS9hXgl/u1dc7oS2bozTJZxka1/zjuzZbw5w0yEAnLhcyjqWEMn9rHuHutkX4ifZoKpXCUxBnNYb6KKpCgbvMiAPWBLELJx7B0A391qlbPf3uPY4fvGxr8W1/sj44fUdci4OGhYtIyKlkHx42Oi6ZP/R8R/PyK6XOXMj5dRIDLUTm1cZlCUSvMjPBLTprZO0SOe0lAxhXeLhDAXjbURguLf6KCr8oxhZ4wGo5NPxNbLH9lJqkU+h4kH5a6RqUVcNZh/vnv0QiHV9dPTPDJ2Wxyim/riaKNCmkY0b4bkfpgwCF8WZiukYZKE5VWoYlGHp0m6DCFTBX6mVZe9vOFWSjz6r2/qdHtTR6l53ERpgtqcCsN1iMmh/NfdQAdglAGDwILyyALgts5+ZYr/Qqjjmo7ZEzqhliAGECksCq5tSOCmbtVZYSm+64at7NFdR77WPLr6bcfx/A8AAAD//wMAbaZPwKYLAAA=
|
53
|
-
http_version:
|
54
|
-
recorded_at: Fri, 01 Feb 2019 09:46:05 GMT
|
55
|
-
recorded_with: VCR 4.0.0
|
@@ -1,147 +0,0 @@
|
|
1
|
-
---
|
2
|
-
http_interactions:
|
3
|
-
- request:
|
4
|
-
method: get
|
5
|
-
uri: https://www.googleapis.com/youtube/v3/videos?id=DMFAGv2uKv0&key=AIzaSyBopkXxz7Dzi9ZrFYPqjmL_JogByn-BBqI&part=status
|
6
|
-
body:
|
7
|
-
encoding: US-ASCII
|
8
|
-
string: ''
|
9
|
-
headers:
|
10
|
-
Content-Length:
|
11
|
-
- '0'
|
12
|
-
User-Agent:
|
13
|
-
- Yt::Request (gzip)
|
14
|
-
response:
|
15
|
-
status:
|
16
|
-
code: 200
|
17
|
-
message: OK
|
18
|
-
headers:
|
19
|
-
Expires:
|
20
|
-
- Fri, 01 Feb 2019 09:55:51 GMT
|
21
|
-
Date:
|
22
|
-
- Fri, 01 Feb 2019 09:55:51 GMT
|
23
|
-
Cache-Control:
|
24
|
-
- private, max-age=0, must-revalidate, no-transform
|
25
|
-
Etag:
|
26
|
-
- '"XpPGQXPnxQJhLgs6enD_n8JR4Qk/BnJJOyewClyJVcWsjsjGVz_b-E4"'
|
27
|
-
Vary:
|
28
|
-
- Origin
|
29
|
-
- X-Origin
|
30
|
-
Content-Type:
|
31
|
-
- application/json; charset=UTF-8
|
32
|
-
X-Content-Type-Options:
|
33
|
-
- nosniff
|
34
|
-
X-Frame-Options:
|
35
|
-
- SAMEORIGIN
|
36
|
-
X-Xss-Protection:
|
37
|
-
- 1; mode=block
|
38
|
-
Content-Length:
|
39
|
-
- '491'
|
40
|
-
Server:
|
41
|
-
- GSE
|
42
|
-
Alt-Svc:
|
43
|
-
- quic=":443"; ma=2592000; v="44,43,39"
|
44
|
-
body:
|
45
|
-
encoding: UTF-8
|
46
|
-
string: |
|
47
|
-
{
|
48
|
-
"kind": "youtube#videoListResponse",
|
49
|
-
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/BnJJOyewClyJVcWsjsjGVz_b-E4\"",
|
50
|
-
"pageInfo": {
|
51
|
-
"totalResults": 1,
|
52
|
-
"resultsPerPage": 1
|
53
|
-
},
|
54
|
-
"items": [
|
55
|
-
{
|
56
|
-
"kind": "youtube#video",
|
57
|
-
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/pep_02DkUKiUnWtH2NsJxzB5ltM\"",
|
58
|
-
"id": "DMFAGv2uKv0",
|
59
|
-
"status": {
|
60
|
-
"uploadStatus": "processed",
|
61
|
-
"privacyStatus": "public",
|
62
|
-
"license": "youtube",
|
63
|
-
"embeddable": true,
|
64
|
-
"publicStatsViewable": true
|
65
|
-
}
|
66
|
-
}
|
67
|
-
]
|
68
|
-
}
|
69
|
-
http_version:
|
70
|
-
recorded_at: Fri, 01 Feb 2019 09:55:51 GMT
|
71
|
-
- request:
|
72
|
-
method: get
|
73
|
-
uri: https://www.googleapis.com/youtube/v3/videos?id=DMFAGv2uKv0&key=AIzaSyBopkXxz7Dzi9ZrFYPqjmL_JogByn-BBqI&maxResults=50&part=contentDetails
|
74
|
-
body:
|
75
|
-
encoding: US-ASCII
|
76
|
-
string: ''
|
77
|
-
headers:
|
78
|
-
Content-Length:
|
79
|
-
- '0'
|
80
|
-
User-Agent:
|
81
|
-
- Yt::Request (gzip)
|
82
|
-
response:
|
83
|
-
status:
|
84
|
-
code: 200
|
85
|
-
message: OK
|
86
|
-
headers:
|
87
|
-
Expires:
|
88
|
-
- Fri, 01 Feb 2019 09:55:51 GMT
|
89
|
-
Date:
|
90
|
-
- Fri, 01 Feb 2019 09:55:51 GMT
|
91
|
-
Cache-Control:
|
92
|
-
- private, max-age=300, must-revalidate, no-transform
|
93
|
-
Etag:
|
94
|
-
- '"XpPGQXPnxQJhLgs6enD_n8JR4Qk/a9StzUvLNDQrUJMbUu-XXNDni2w"'
|
95
|
-
Vary:
|
96
|
-
- Origin
|
97
|
-
- X-Origin
|
98
|
-
Content-Type:
|
99
|
-
- application/json; charset=UTF-8
|
100
|
-
X-Content-Type-Options:
|
101
|
-
- nosniff
|
102
|
-
X-Frame-Options:
|
103
|
-
- SAMEORIGIN
|
104
|
-
X-Xss-Protection:
|
105
|
-
- 1; mode=block
|
106
|
-
Content-Length:
|
107
|
-
- '606'
|
108
|
-
Server:
|
109
|
-
- GSE
|
110
|
-
Alt-Svc:
|
111
|
-
- quic=":443"; ma=2592000; v="44,43,39"
|
112
|
-
body:
|
113
|
-
encoding: UTF-8
|
114
|
-
string: |
|
115
|
-
{
|
116
|
-
"kind": "youtube#videoListResponse",
|
117
|
-
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/a9StzUvLNDQrUJMbUu-XXNDni2w\"",
|
118
|
-
"pageInfo": {
|
119
|
-
"totalResults": 1,
|
120
|
-
"resultsPerPage": 1
|
121
|
-
},
|
122
|
-
"items": [
|
123
|
-
{
|
124
|
-
"kind": "youtube#video",
|
125
|
-
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/5uIvEzDHWFVAvX1rsmB4TmOXAhA\"",
|
126
|
-
"id": "DMFAGv2uKv0",
|
127
|
-
"contentDetails": {
|
128
|
-
"duration": "PT3M10S",
|
129
|
-
"dimension": "2d",
|
130
|
-
"definition": "sd",
|
131
|
-
"caption": "false",
|
132
|
-
"licensedContent": true,
|
133
|
-
"regionRestriction": {
|
134
|
-
"blocked": [
|
135
|
-
"PR",
|
136
|
-
"CA",
|
137
|
-
"US"
|
138
|
-
]
|
139
|
-
},
|
140
|
-
"projection": "rectangular"
|
141
|
-
}
|
142
|
-
}
|
143
|
-
]
|
144
|
-
}
|
145
|
-
http_version:
|
146
|
-
recorded_at: Fri, 01 Feb 2019 09:55:51 GMT
|
147
|
-
recorded_with: VCR 4.0.0
|
@@ -1,254 +0,0 @@
|
|
1
|
-
---
|
2
|
-
http_interactions:
|
3
|
-
- request:
|
4
|
-
method: get
|
5
|
-
uri: https://www.googleapis.com/youtube/v3/videos?id=lQvcoOzmLqs&key=AIzaSyBopkXxz7Dzi9ZrFYPqjmL_JogByn-BBqI&part=status
|
6
|
-
body:
|
7
|
-
encoding: US-ASCII
|
8
|
-
string: ''
|
9
|
-
headers:
|
10
|
-
Content-Length:
|
11
|
-
- '0'
|
12
|
-
User-Agent:
|
13
|
-
- Yt::Request (gzip)
|
14
|
-
response:
|
15
|
-
status:
|
16
|
-
code: 200
|
17
|
-
message: OK
|
18
|
-
headers:
|
19
|
-
Expires:
|
20
|
-
- Fri, 01 Feb 2019 09:55:52 GMT
|
21
|
-
Date:
|
22
|
-
- Fri, 01 Feb 2019 09:55:52 GMT
|
23
|
-
Cache-Control:
|
24
|
-
- private, max-age=0, must-revalidate, no-transform
|
25
|
-
Etag:
|
26
|
-
- '"XpPGQXPnxQJhLgs6enD_n8JR4Qk/aO_Udw6EuqKx4GKSDw4Xu9UUl3I"'
|
27
|
-
Vary:
|
28
|
-
- Origin
|
29
|
-
- X-Origin
|
30
|
-
Content-Type:
|
31
|
-
- application/json; charset=UTF-8
|
32
|
-
X-Content-Type-Options:
|
33
|
-
- nosniff
|
34
|
-
X-Frame-Options:
|
35
|
-
- SAMEORIGIN
|
36
|
-
X-Xss-Protection:
|
37
|
-
- 1; mode=block
|
38
|
-
Content-Length:
|
39
|
-
- '491'
|
40
|
-
Server:
|
41
|
-
- GSE
|
42
|
-
Alt-Svc:
|
43
|
-
- quic=":443"; ma=2592000; v="44,43,39"
|
44
|
-
body:
|
45
|
-
encoding: UTF-8
|
46
|
-
string: |
|
47
|
-
{
|
48
|
-
"kind": "youtube#videoListResponse",
|
49
|
-
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/aO_Udw6EuqKx4GKSDw4Xu9UUl3I\"",
|
50
|
-
"pageInfo": {
|
51
|
-
"totalResults": 1,
|
52
|
-
"resultsPerPage": 1
|
53
|
-
},
|
54
|
-
"items": [
|
55
|
-
{
|
56
|
-
"kind": "youtube#video",
|
57
|
-
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/58LfFchRN5HMMeOD6yiH4O76bVo\"",
|
58
|
-
"id": "lQvcoOzmLqs",
|
59
|
-
"status": {
|
60
|
-
"uploadStatus": "processed",
|
61
|
-
"privacyStatus": "public",
|
62
|
-
"license": "youtube",
|
63
|
-
"embeddable": true,
|
64
|
-
"publicStatsViewable": true
|
65
|
-
}
|
66
|
-
}
|
67
|
-
]
|
68
|
-
}
|
69
|
-
http_version:
|
70
|
-
recorded_at: Fri, 01 Feb 2019 09:55:52 GMT
|
71
|
-
- request:
|
72
|
-
method: get
|
73
|
-
uri: https://www.googleapis.com/youtube/v3/videos?id=lQvcoOzmLqs&key=AIzaSyBopkXxz7Dzi9ZrFYPqjmL_JogByn-BBqI&maxResults=50&part=contentDetails
|
74
|
-
body:
|
75
|
-
encoding: US-ASCII
|
76
|
-
string: ''
|
77
|
-
headers:
|
78
|
-
Content-Length:
|
79
|
-
- '0'
|
80
|
-
User-Agent:
|
81
|
-
- Yt::Request (gzip)
|
82
|
-
response:
|
83
|
-
status:
|
84
|
-
code: 200
|
85
|
-
message: OK
|
86
|
-
headers:
|
87
|
-
Expires:
|
88
|
-
- Fri, 01 Feb 2019 09:55:52 GMT
|
89
|
-
Date:
|
90
|
-
- Fri, 01 Feb 2019 09:55:52 GMT
|
91
|
-
Cache-Control:
|
92
|
-
- private, max-age=300, must-revalidate, no-transform
|
93
|
-
Etag:
|
94
|
-
- '"XpPGQXPnxQJhLgs6enD_n8JR4Qk/AeiQzK2SSme70r74lyCwVBW8X_s"'
|
95
|
-
Vary:
|
96
|
-
- Origin
|
97
|
-
- X-Origin
|
98
|
-
Content-Type:
|
99
|
-
- application/json; charset=UTF-8
|
100
|
-
X-Content-Type-Options:
|
101
|
-
- nosniff
|
102
|
-
X-Frame-Options:
|
103
|
-
- SAMEORIGIN
|
104
|
-
X-Xss-Protection:
|
105
|
-
- 1; mode=block
|
106
|
-
Content-Length:
|
107
|
-
- '513'
|
108
|
-
Server:
|
109
|
-
- GSE
|
110
|
-
Alt-Svc:
|
111
|
-
- quic=":443"; ma=2592000; v="44,43,39"
|
112
|
-
body:
|
113
|
-
encoding: UTF-8
|
114
|
-
string: |
|
115
|
-
{
|
116
|
-
"kind": "youtube#videoListResponse",
|
117
|
-
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/AeiQzK2SSme70r74lyCwVBW8X_s\"",
|
118
|
-
"pageInfo": {
|
119
|
-
"totalResults": 1,
|
120
|
-
"resultsPerPage": 1
|
121
|
-
},
|
122
|
-
"items": [
|
123
|
-
{
|
124
|
-
"kind": "youtube#video",
|
125
|
-
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/qTODa3DmtJlwxKFlCH0UNVYe7HM\"",
|
126
|
-
"id": "lQvcoOzmLqs",
|
127
|
-
"contentDetails": {
|
128
|
-
"duration": "PT8M27S",
|
129
|
-
"dimension": "2d",
|
130
|
-
"definition": "hd",
|
131
|
-
"caption": "false",
|
132
|
-
"licensedContent": false,
|
133
|
-
"projection": "rectangular"
|
134
|
-
}
|
135
|
-
}
|
136
|
-
]
|
137
|
-
}
|
138
|
-
http_version:
|
139
|
-
recorded_at: Fri, 01 Feb 2019 09:55:52 GMT
|
140
|
-
- request:
|
141
|
-
method: get
|
142
|
-
uri: https://www.googleapis.com/youtube/v3/videos?id=lQvcoOzmLqs&key=AIzaSyBopkXxz7Dzi9ZrFYPqjmL_JogByn-BBqI&part=snippet
|
143
|
-
body:
|
144
|
-
encoding: US-ASCII
|
145
|
-
string: ''
|
146
|
-
headers:
|
147
|
-
Content-Length:
|
148
|
-
- '0'
|
149
|
-
User-Agent:
|
150
|
-
- Yt::Request (gzip)
|
151
|
-
response:
|
152
|
-
status:
|
153
|
-
code: 200
|
154
|
-
message: OK
|
155
|
-
headers:
|
156
|
-
Expires:
|
157
|
-
- Fri, 01 Feb 2019 09:55:52 GMT
|
158
|
-
Date:
|
159
|
-
- Fri, 01 Feb 2019 09:55:52 GMT
|
160
|
-
Cache-Control:
|
161
|
-
- private, max-age=300, must-revalidate, no-transform
|
162
|
-
Etag:
|
163
|
-
- '"XpPGQXPnxQJhLgs6enD_n8JR4Qk/P8l0RvbOOiYBdy94g3Q82I-afgY"'
|
164
|
-
Vary:
|
165
|
-
- Origin
|
166
|
-
- X-Origin
|
167
|
-
Content-Type:
|
168
|
-
- application/json; charset=UTF-8
|
169
|
-
X-Content-Type-Options:
|
170
|
-
- nosniff
|
171
|
-
X-Frame-Options:
|
172
|
-
- SAMEORIGIN
|
173
|
-
X-Xss-Protection:
|
174
|
-
- 1; mode=block
|
175
|
-
Content-Length:
|
176
|
-
- '3444'
|
177
|
-
Server:
|
178
|
-
- GSE
|
179
|
-
Alt-Svc:
|
180
|
-
- quic=":443"; ma=2592000; v="44,43,39"
|
181
|
-
body:
|
182
|
-
encoding: UTF-8
|
183
|
-
string: |
|
184
|
-
{
|
185
|
-
"kind": "youtube#videoListResponse",
|
186
|
-
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/P8l0RvbOOiYBdy94g3Q82I-afgY\"",
|
187
|
-
"pageInfo": {
|
188
|
-
"totalResults": 1,
|
189
|
-
"resultsPerPage": 1
|
190
|
-
},
|
191
|
-
"items": [
|
192
|
-
{
|
193
|
-
"kind": "youtube#video",
|
194
|
-
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/IQSOOWtEUu6PjBnSksDcbl3Nssg\"",
|
195
|
-
"id": "lQvcoOzmLqs",
|
196
|
-
"snippet": {
|
197
|
-
"publishedAt": "2017-01-19T20:13:27.000Z",
|
198
|
-
"channelId": "UCZsTxqu5B_7bW4AAf0QVtuA",
|
199
|
-
"title": "Marble Machine - Triple Gears Lift (Three Blocks Marble Race)",
|
200
|
-
"description": "There are endless ways to lift a ball high enough to get your marble machine running. If you can get it to the top, gravity will do the rest. With a lift that lifts three or more marbles simultaneously, and releases them to three separate tracks. Two of those tracks are connected in series, so a marble will therefore alternate between those tracks. The third track loops back onto itself.The machine has been designed for 10 mm balls as marbles.\n\nModules: independent, interchangeable, such that each contains everything necessary to execute the desired functionality.\n\nFor Specifications and Shopping here\n\nFor Kit\n\nhttps://woodmarblemachine.com\n\nFor Plans\n\nhttps://woodmotion-plan.com\n\nFacebook\n\nhttps://www.facebook.com/woodmarblemachine/\n\nEmail: \n\ncontact@woodmarblemachine.com\n\ncontact@woodmotion-plan.com",
|
201
|
-
"thumbnails": {
|
202
|
-
"default": {
|
203
|
-
"url": "https://i.ytimg.com/vi/lQvcoOzmLqs/default.jpg",
|
204
|
-
"width": 120,
|
205
|
-
"height": 90
|
206
|
-
},
|
207
|
-
"medium": {
|
208
|
-
"url": "https://i.ytimg.com/vi/lQvcoOzmLqs/mqdefault.jpg",
|
209
|
-
"width": 320,
|
210
|
-
"height": 180
|
211
|
-
},
|
212
|
-
"high": {
|
213
|
-
"url": "https://i.ytimg.com/vi/lQvcoOzmLqs/hqdefault.jpg",
|
214
|
-
"width": 480,
|
215
|
-
"height": 360
|
216
|
-
},
|
217
|
-
"standard": {
|
218
|
-
"url": "https://i.ytimg.com/vi/lQvcoOzmLqs/sddefault.jpg",
|
219
|
-
"width": 640,
|
220
|
-
"height": 480
|
221
|
-
},
|
222
|
-
"maxres": {
|
223
|
-
"url": "https://i.ytimg.com/vi/lQvcoOzmLqs/maxresdefault.jpg",
|
224
|
-
"width": 1280,
|
225
|
-
"height": 720
|
226
|
-
}
|
227
|
-
},
|
228
|
-
"channelTitle": "Wood marble machine",
|
229
|
-
"tags": [
|
230
|
-
"amazing marble machine",
|
231
|
-
"amazing wood toy",
|
232
|
-
"Wood gear lifting",
|
233
|
-
"Best way to learn structures",
|
234
|
-
"how to lift marble",
|
235
|
-
"how it works",
|
236
|
-
"amazing marble race",
|
237
|
-
"Best structure",
|
238
|
-
"amazing lifting mechanisms",
|
239
|
-
"Wooden toy"
|
240
|
-
],
|
241
|
-
"categoryId": "28",
|
242
|
-
"liveBroadcastContent": "none",
|
243
|
-
"localized": {
|
244
|
-
"title": "Marble Machine - Triple Gears Lift (Three Blocks Marble Race)",
|
245
|
-
"description": "There are endless ways to lift a ball high enough to get your marble machine running. If you can get it to the top, gravity will do the rest. With a lift that lifts three or more marbles simultaneously, and releases them to three separate tracks. Two of those tracks are connected in series, so a marble will therefore alternate between those tracks. The third track loops back onto itself.The machine has been designed for 10 mm balls as marbles.\n\nModules: independent, interchangeable, such that each contains everything necessary to execute the desired functionality.\n\nFor Specifications and Shopping here\n\nFor Kit\n\nhttps://woodmarblemachine.com\n\nFor Plans\n\nhttps://woodmotion-plan.com\n\nFacebook\n\nhttps://www.facebook.com/woodmarblemachine/\n\nEmail: \n\ncontact@woodmarblemachine.com\n\ncontact@woodmotion-plan.com"
|
246
|
-
},
|
247
|
-
"defaultAudioLanguage": "en"
|
248
|
-
}
|
249
|
-
}
|
250
|
-
]
|
251
|
-
}
|
252
|
-
http_version:
|
253
|
-
recorded_at: Fri, 01 Feb 2019 09:55:52 GMT
|
254
|
-
recorded_with: VCR 4.0.0
|