9
9
<div class =" VideoSearch" >
10
10
<editor-input-field-pickable
11
11
v-model =" videoSearchWord"
12
+ selector =" video"
12
13
:title ="
13
14
$t('components.editing_screen.labels.video_keyword', {
14
- source: 'NHK For School ',
15
+ source: '',
15
16
})
16
17
"
17
18
:placeholder =" $t('components.editing_screen.placeholder.video_keyword')"
18
19
icon-name =" mdi-magnify"
19
20
:button-text =" $t('components.editing_screen.search_videos.search')"
20
21
@clickButton =" handleVideoSearchWord"
22
+ @changeMovie =" handleChangeMovie"
21
23
/>
22
24
23
25
<div v-if =" videoSearchResult.length > 0" class =" SearchResult" >
24
26
<h3 class =" SearchResultTitle" >
25
27
{{
26
28
$t('components.editing_screen.search_videos.search_result', {
27
- source: 'NHK For School ',
29
+ source: '',
28
30
})
29
31
}}
30
32
</h3 >
@@ -114,6 +116,7 @@ export default class EditLessonScreenInner3 extends Vue {
114
116
})
115
117
public value! : formData
116
118
119
+ videoSourceType: string = ' '
117
120
videoSearchWord: string = ' '
118
121
videoSearchResult: formData [] = []
119
122
page: number = 1
@@ -122,11 +125,11 @@ export default class EditLessonScreenInner3 extends Vue {
122
125
displayLists: formData [] = []
123
126
124
127
mounted() {
125
- fetch (' /data/movies.json' )
126
- .then ((res ) => res .json ())
127
- .then ((data ) => {
128
- movies = data
129
- })
128
+ // fetch('/data/movies.json')
129
+ // .then((res) => res.json())
130
+ // .then((data) => {
131
+ // movies = data
132
+ // })
130
133
}
131
134
132
135
private get form(): formData {
@@ -147,6 +150,15 @@ export default class EditLessonScreenInner3 extends Vue {
147
150
this .tempFormData = this .value
148
151
}
149
152
153
+ private handleChangeMovie(selected ) {
154
+ this .videoSourceType = selected .sourceType
155
+ fetch (` /data/${selected .dataFile } ` )
156
+ .then ((res ) => res .json ())
157
+ .then ((data ) => {
158
+ movies = data
159
+ })
160
+ }
161
+
150
162
private handleVideoSearchWord() {
151
163
if (this .videoSearchWord ) {
152
164
this .page = 1
@@ -158,33 +170,16 @@ export default class EditLessonScreenInner3 extends Vue {
158
170
return fullText .includes (this .videoSearchWord )
159
171
})
160
172
.map ((v ) => {
161
- const videoId = v [' 教材_ID' ]
162
- const videoType = parseInt (videoId .slice (5 , 6 ))
163
- const nfsMovieUrl = ' https://www2.nhk.or.jp/school/movie/'
164
- const videoDirectory = videoId .slice (0 , 8 )
165
- let videoThumbnailUrl = ` https://www.nhk.or.jp/das/image/${videoDirectory }/${videoId }_S_005.jpg `
166
- let videoUrl
167
- switch (videoType ) {
168
- case 1 :
169
- case 2 :
170
- videoUrl = ` ${nfsMovieUrl }bangumi.cgi?das_id=${videoId }&p=box `
173
+ let videoInfo
174
+ switch (this .videoSourceType ) {
175
+ case ' NHK' :
176
+ videoInfo = this .mapNhk (v )
171
177
break
172
- case 3 :
173
- case 4 :
174
- videoUrl = ` ${nfsMovieUrl }clip.cgi?das_id=${videoId }&p=box `
178
+ case ' junyiacademy' :
179
+ videoInfo = this .mapJunyiacademy (v )
175
180
break
176
- default :
177
- videoUrl = null
178
- videoThumbnailUrl = ' '
179
- }
180
- return {
181
- videoUrl ,
182
- videoTitle: v [' 教材_タイトル' ],
183
- videoSubTitle: v [' 教材_サブタイトル' ],
184
- videoDescription: v [' 教材_説明' ],
185
- videoPlayTime: v [' 教材_再生時間' ],
186
- videoThumbnailUrl ,
187
181
}
182
+ return videoInfo
188
183
})
189
184
190
185
this .length = Math .ceil (this .videoSearchResult .length / this .pageSize )
@@ -204,6 +199,47 @@ export default class EditLessonScreenInner3 extends Vue {
204
199
)
205
200
}
206
201
202
+ private mapNhk(v ) {
203
+ const videoId = v .inherentProperties .教材_ID
204
+ const videoType = parseInt (videoId .slice (5 , 6 ))
205
+ const nfsMovieUrl = ' https://www2.nhk.or.jp/school/movie/'
206
+ const videoDirectory = videoId .slice (0 , 8 )
207
+ let videoThumbnailUrl = ` https://www.nhk.or.jp/das/image/${videoDirectory }/${videoId }_S_005.jpg `
208
+ let videoUrl
209
+ switch (videoType ) {
210
+ case 1 :
211
+ case 2 :
212
+ videoUrl = ` ${nfsMovieUrl }bangumi.cgi?das_id=${videoId }&p=box `
213
+ break
214
+ case 3 :
215
+ case 4 :
216
+ videoUrl = ` ${nfsMovieUrl }clip.cgi?das_id=${videoId }&p=box `
217
+ break
218
+ default :
219
+ videoUrl = null
220
+ videoThumbnailUrl = ' '
221
+ }
222
+ return {
223
+ videoUrl ,
224
+ videoTitle: v .title ,
225
+ videoSubTitle: v .inherentProperties .教材_ サブタイトル,
226
+ videoDescription: v .description ,
227
+ videoPlayTime: v .inherentProperties .教材_ 再生時間,
228
+ videoThumbnailUrl ,
229
+ }
230
+ }
231
+
232
+ private mapJunyiacademy(v ) {
233
+ return {
234
+ videoUrl: v .inherentProperties .url ,
235
+ videoTitle: v .title ,
236
+ videoSubTitle: ' ' ,
237
+ videoDescription: v .description ,
238
+ videoPlayTime: ' ' ,
239
+ videoThumbnailUrl: v .inherentProperties .thumbnailUrl ,
240
+ }
241
+ }
242
+
207
243
/* CORS 回避必須
208
244
@Watch('form.videoUrl')
209
245
onChangeVideoUrl() {
0 commit comments