1
+ // https://codetop.cc/api/questions/?page=${N}&search=&ordering=-frequency
2
+
3
+ let genUrl = ( N ) => {
4
+ return `https://codetop.cc/api/questions/?page=${ N } &search=&ordering=-frequency`
5
+ }
6
+
7
+ let pageRange = { min : 1 , max : 50 }
8
+
9
+ let fetchPage = ( N ) => {
10
+ let url = genUrl ( N )
11
+ console . log ( `Fetching ${ url } ...` ) ;
12
+ return fetch ( url ) . then ( r => r . json ( ) )
13
+ }
14
+
15
+ let fetchAllPages = ( range ) => {
16
+ let queryPeriod = 1000
17
+ let promises = [ ]
18
+ for ( let i = range . min ; i <= range . max ; i ++ ) {
19
+ promises . push ( fetchPage ( i ) )
20
+ }
21
+ return Promise . all ( promises )
22
+ }
23
+
24
+ let fetchAllQuestions = ( ) => {
25
+ return fetchAllPages ( pageRange ) . then ( pages => {
26
+ let questions = [ ]
27
+ for ( let page of pages ) {
28
+ console . log ( "Page: " , page ) ;
29
+ questions = questions . concat ( page . list )
30
+ }
31
+ return questions
32
+ } )
33
+ }
34
+
35
+ /**
36
+ * Response format:
37
+ * {
38
+ * count,
39
+ * list {
40
+ * id,
41
+ * value,
42
+ * leetcode? {
43
+ * id,
44
+ * title
45
+ * }
46
+ * }
47
+ * }
48
+ */
49
+
50
+ // Generate a list of {leet_id, value, title}
51
+ let genList = ( questions ) => {
52
+ let list = [ ]
53
+ for ( let q of questions ) {
54
+ let leetcode = q . leetcode
55
+ if ( leetcode ) {
56
+ let id = leetcode . id
57
+ let title = leetcode . title
58
+ let value = q . value
59
+ list . push ( { id, value, title} )
60
+ }
61
+ }
62
+ return list
63
+ }
64
+
65
+ // Sort the list by value
66
+ let sortList = ( list ) => {
67
+ return list . sort ( ( a , b ) => {
68
+ return b . value - a . value
69
+ } )
70
+ }
71
+
72
+ // Print to console
73
+ let printList = ( list ) => {
74
+ let out = ""
75
+ for ( let { id, value, title} of list ) {
76
+ out += `${ id } ,${ value } ,${ title } \n`
77
+ }
78
+ console . log ( out )
79
+ }
80
+
81
+ // Main
82
+ fetchAllQuestions ( ) . then ( questions => {
83
+ let list = genList ( questions )
84
+ let sortedList = sortList ( list )
85
+ printList ( sortedList )
86
+ } )
0 commit comments