소스 검색

filter langauges

marc 8 년 전
부모
커밋
c677aee58a
4개의 변경된 파일81개의 추가작업 그리고 72개의 파일을 삭제
  1. 9
    1
      searx/engines/gigablast.py
  2. 19
    15
      searx/engines/google.py
  3. 18
    50
      searx/languages.py
  4. 35
    6
      utils/update_languages.py

+ 9
- 1
searx/engines/gigablast.py 파일 보기

40
 title_xpath = './/title'
40
 title_xpath = './/title'
41
 content_xpath = './/sum'
41
 content_xpath = './/sum'
42
 
42
 
43
+supported_languages = ["en", "fr", "es", "ru", "tr", "ja", "zh-CN", "zh-TW", "ko", "de",
44
+                       "nl", "it", "fi", "sv", "no", "pt", "vi", "ar", "he", "id", "el",
45
+                       "th", "hi", "bn", "pl", "tl", "la", "eo", "ca", "bg", "tx", "sr",
46
+                       "hu", "da", "lt", "cs", "gl", "ka", "gd", "go", "ro", "ga", "lv",
47
+                       "hy", "is", "ag", "gv", "io", "fa", "te", "vv", "mg", "ku", "lb", "et"] 
48
+
43
 
49
 
44
 # do search-request
50
 # do search-request
45
 def request(query, params):
51
 def request(query, params):
48
     if params['language'] == 'all':
54
     if params['language'] == 'all':
49
         language = 'xx'
55
         language = 'xx'
50
     else:
56
     else:
51
-        language = params['language'].split('-')[0]
57
+        language = params['language'].replace('-', '_').lower()
58
+        if language.split('-')[0] != 'zh':
59
+            language = language.split('-')[0]
52
 
60
 
53
     if params['safesearch'] >= 1:
61
     if params['safesearch'] >= 1:
54
         safesearch = 1
62
         safesearch = 1

+ 19
- 15
searx/engines/google.py 파일 보기

23
 paging = True
23
 paging = True
24
 language_support = True
24
 language_support = True
25
 use_locale_domain = True
25
 use_locale_domain = True
26
-supported_languages = ['de', 'en', 'es', 'es_419', 'fr', 'hr', 'it', 'nl', 'pl', 'pt-BR',
27
-                       'pt-PT', 'vi', 'tr', 'ru', 'ar', 'th', 'ko', 'zh-CN', 'zh-TW', 'ja',
28
-                       'ach', 'af', 'ak', 'az', 'ms', 'ban', 'xx_bork', 'bs', 'br', 'ca',
29
-                       'ceb', 'ckb', 'cs', 'sn', 'co', 'cy', 'da', 'yo', 'et', 'xx_elmer',
30
-                       'eo', 'eu', 'ee', 'tl', 'fo', 'gaa', 'ga', 'gd', 'gl', 'gn', 'xx_hacker',
31
-                       'ht', 'ha', 'haw', 'bem', 'ig', 'rn', 'id', 'ia', 'zu', 'is', 'jw', 'rw',
32
-                       'sw', 'tlh', 'kg', 'mfe', 'kri', 'la', 'lv', 'to', 'lt', 'ln', 'loz',
33
-                       'lua', 'lg', 'hu', 'mg', 'mt', 'mi', 'pcm', 'no', 'nso', 'ny', 'nn',
34
-                       'uz', 'oc', 'om', 'xx_pirate', 'pt', 'ro', 'mo', 'rm', 'qu', 'nyn', 'crs',
35
-                       'sq', 'sd', 'sk', 'sl', 'so', 'st', 'sr_ME', 'sr_Latn', 'su', 'fi', 'sv',
36
-                       'tg', 'tt', 'tn', 'tum', 'tk', 'tw', 'fy', 'wo', 'xh', 'el', 'be', 'bg',
37
-                       'ky', 'kk', 'mk', 'mn', 'sr', 'uk', 'ka', 'hy', 'yi', 'iw', 'ug', 'ur',
38
-                       'ps', 'fa', 'ti', 'am', 'ne', 'mr', 'hi', 'bn', 'pa', 'gu', 'or', 'ta',
39
-                       'te', 'kn', 'ml', 'si', 'lo', 'my', 'km', 'chr']
26
+supported_languages = ["ach", "af", "ak", "az", "ms", "ban", "xx-bork", "bs", "br", "ca",
27
+                       "ceb", "ckb", "cs", "sn", "co", "cy", "da", "de", "yo", "et",
28
+                       "xx-elmer", "en", "es", "es-419", "eo", "eu", "ee", "tl", "fo", "fr",
29
+                       "gaa", "ga", "gd", "gl", "gn", "xx-hacker", "ht", "ha", "hr", "haw",
30
+                       "bem", "ig", "rn", "id", "ia", "zu", "is", "it", "jw", "rw", "sw",
31
+                       "tlh", "kg", "mfe", "kri", "la", "lv", "to", "lt", "ln", "loz",
32
+                       "lua", "lg", "hu", "mg", "mt", "mi", "nl", "pcm", "no", "nso",
33
+                       "ny", "nn", "uz", "oc", "om", "xx-pirate", "pl", "pt-BR", "pt-PT",
34
+                       "ro", "rm", "qu", "nyn", "crs", "sq", "sd", "sk", "sl", "so", "st",
35
+                       "sr-ME", "sr-Latn", "su", "fi", "sv", "tg", "tt", "vi", "tn", "tum",
36
+                       "tr", "tk", "tw", "fy", "wo", "xh", "el", "be", "bg", "ky", "kk", "mk",
37
+                       "mn", "ru", "sr", "uk", "ka", "hy", "yi", "iw", "ug", "ur", "ar", "ps",
38
+                       "fa", "ti", "am", "ne", "mr", "hi", "bn", "pa", "gu", "or", "ta", "te",
39
+                       "kn", "ml", "si", "th", "lo", "my", "km", "chr", "ko", "zh-CN", "zh-TW", "ja"]
40
 time_range_support = True
40
 time_range_support = True
41
 
41
 
42
 # based on https://en.wikipedia.org/wiki/List_of_Google_domains and tests
42
 # based on https://en.wikipedia.org/wiki/List_of_Google_domains and tests
181
         language = 'en'
181
         language = 'en'
182
         country = 'US'
182
         country = 'US'
183
         url_lang = ''
183
         url_lang = ''
184
+    elif params['language'][:2] == 'jv':
185
+        language = 'jw'
186
+        country = 'ID'
187
+        url_lang = 'lang_jw'
184
     else:
188
     else:
185
-        language_array = params['language'].lower().split('_')
189
+        language_array = params['language'].lower().split('-')
186
         if len(language_array) == 2:
190
         if len(language_array) == 2:
187
             country = language_array[1]
191
             country = language_array[1]
188
         else:
192
         else:

+ 18
- 50
searx/languages.py 파일 보기

32
     (u"en-NZ", u"English", u"", u"English"),
32
     (u"en-NZ", u"English", u"", u"English"),
33
     (u"got", u"𐌲𐌿𐍄𐌹𐍃𐌺", u"", u"Gothic"),
33
     (u"got", u"𐌲𐌿𐍄𐌹𐍃𐌺", u"", u"Gothic"),
34
     (u"vls", u"West-Vlams", u"", u"West Flemish"),
34
     (u"vls", u"West-Vlams", u"", u"West Flemish"),
35
-    (u"ro", u"Română", u"", u"Romanian"),
36
     (u"bxr", u"Буряад", u"", u"Buryat"),
35
     (u"bxr", u"Буряад", u"", u"Buryat"),
37
-    (u"fiu-vro", u"Võro", u"", u"Võro"),
38
     (u"diq", u"Zazaki", u"", u"Zazaki"),
36
     (u"diq", u"Zazaki", u"", u"Zazaki"),
39
     (u"zh", u"中文", u"", u"Chinese"),
37
     (u"zh", u"中文", u"", u"Chinese"),
40
     (u"pms", u"Piemontèis", u"", u"Piedmontese"),
38
     (u"pms", u"Piemontèis", u"", u"Piedmontese"),
42
     (u"zh-HK", u"中文", u"", u"Chinese"),
40
     (u"zh-HK", u"中文", u"", u"Chinese"),
43
     (u"zu", u"isiZulu", u"", u"Zulu"),
41
     (u"zu", u"isiZulu", u"", u"Zulu"),
44
     (u"tet", u"Tetun", u"", u"Tetum"),
42
     (u"tet", u"Tetun", u"", u"Tetum"),
45
-    (u"es-PE", u"Español", u"", u"Spanish"),
43
+    (u"zh-CN", u"中文 (简体)", u"", u""),
46
     (u"new", u"नेपाल भाषा", u"", u"Newar"),
44
     (u"new", u"नेपाल भाषा", u"", u"Newar"),
45
+    (u"ro-RO", u"Română", u"", u"Romanian"),
47
     (u"lez", u"Лезги чІал (Lezgi č’al)", u"", u"Lezgian"),
46
     (u"lez", u"Лезги чІал (Lezgi č’al)", u"", u"Lezgian"),
48
     (u"glk", u"گیلکی", u"", u"Gilaki"),
47
     (u"glk", u"گیلکی", u"", u"Gilaki"),
49
     (u"ko-KR", u"한국어", u"", u"Korean"),
48
     (u"ko-KR", u"한국어", u"", u"Korean"),
50
     (u"id-ID", u"Bahasa Indonesia", u"", u"Indonesian"),
49
     (u"id-ID", u"Bahasa Indonesia", u"", u"Indonesian"),
51
-    (u"cho", u"Choctaw", u"", u"Choctaw"),
52
     (u"chr", u"ᏣᎳᎩ", u"", u"Cherokee"),
50
     (u"chr", u"ᏣᎳᎩ", u"", u"Cherokee"),
53
     (u"vi", u"Tiếng Việt", u"", u"Vietnamese"),
51
     (u"vi", u"Tiếng Việt", u"", u"Vietnamese"),
54
     (u"chy", u"Tsetsêhestâhese", u"", u"Cheyenne"),
52
     (u"chy", u"Tsetsêhestâhese", u"", u"Cheyenne"),
55
-    (u"is", u"Íslenska", u"", u"Icelandic"),
56
     (u"tk", u"تركمن / Туркмен", u"", u"Turkmen"),
53
     (u"tk", u"تركمن / Туркмен", u"", u"Turkmen"),
57
     (u"da-DK", u"Dansk", u"", u"Danish"),
54
     (u"da-DK", u"Dansk", u"", u"Danish"),
58
     (u"pfl", u"Pälzisch", u"", u"Palatinate German"),
55
     (u"pfl", u"Pälzisch", u"", u"Palatinate German"),
59
     (u"hu-HU", u"Magyar", u"", u"Hungarian"),
56
     (u"hu-HU", u"Magyar", u"", u"Hungarian"),
60
-    (u"he-IL", u"עברית", u"", u"Hebrew"),
61
     (u"mg", u"Malagasy", u"", u"Malagasy"),
57
     (u"mg", u"Malagasy", u"", u"Malagasy"),
62
     (u"ml", u"മലയാളം", u"", u"Malayalam"),
58
     (u"ml", u"മലയാളം", u"", u"Malayalam"),
63
     (u"mo", u"Молдовеняскэ", u"", u"Moldovan"),
59
     (u"mo", u"Молдовеняскэ", u"", u"Moldovan"),
64
     (u"mn", u"Монгол", u"", u"Mongolian"),
60
     (u"mn", u"Монгол", u"", u"Mongolian"),
65
     (u"mi", u"Māori", u"", u"Maori"),
61
     (u"mi", u"Māori", u"", u"Maori"),
66
-    (u"mh", u"Ebon", u"", u"Marshallese"),
67
     (u"mk", u"Македонски", u"", u"Macedonian"),
62
     (u"mk", u"Македонски", u"", u"Macedonian"),
68
     (u"mt", u"Malti", u"", u"Maltese"),
63
     (u"mt", u"Malti", u"", u"Maltese"),
69
     (u"ms", u"Bahasa Melayu", u"", u"Malay"),
64
     (u"ms", u"Bahasa Melayu", u"", u"Malay"),
75
     (u"pl-PL", u"Polski", u"", u"Polish"),
70
     (u"pl-PL", u"Polski", u"", u"Polish"),
76
     (u"sl-SL", u"Slovenščina", u"", u"Slovenian"),
71
     (u"sl-SL", u"Slovenščina", u"", u"Slovenian"),
77
     (u"csb", u"Kaszëbsczi", u"", u"Kashubian"),
72
     (u"csb", u"Kaszëbsczi", u"", u"Kashubian"),
78
-    (u"cbk-zam", u"Chavacano de Zamboanga", u"", u"Zamboanga Chavacano"),
79
     (u"nyn", u"Runyankore", u"", u""),
73
     (u"nyn", u"Runyankore", u"", u""),
80
     (u"ig", u"Igbo", u"", u"Igbo"),
74
     (u"ig", u"Igbo", u"", u"Igbo"),
81
     (u"fr", u"Français", u"", u"French"),
75
     (u"fr", u"Français", u"", u"French"),
88
     (u"fj", u"Na Vosa Vakaviti", u"", u"Fijian"),
82
     (u"fj", u"Na Vosa Vakaviti", u"", u"Fijian"),
89
     (u"fo", u"Føroyskt", u"", u"Faroese"),
83
     (u"fo", u"Føroyskt", u"", u"Faroese"),
90
     (u"ss", u"SiSwati", u"", u"Swati"),
84
     (u"ss", u"SiSwati", u"", u"Swati"),
91
-    (u"roa-tara", u"Tarandíne", u"", u"Tarantino"),
85
+    (u"sr", u"Српски / Srpski", u"", u"Serbian"),
92
     (u"sq", u"Shqip", u"", u"Albanian"),
86
     (u"sq", u"Shqip", u"", u"Albanian"),
93
     (u"sw", u"Kiswahili", u"", u"Swahili"),
87
     (u"sw", u"Kiswahili", u"", u"Swahili"),
94
     (u"sv", u"Svenska", u"", u"Swedish"),
88
     (u"sv", u"Svenska", u"", u"Swedish"),
104
     (u"sc", u"Sardu", u"", u"Sardinian"),
98
     (u"sc", u"Sardu", u"", u"Sardinian"),
105
     (u"pt-BR", u"português (Brasil)", u"", u""),
99
     (u"pt-BR", u"português (Brasil)", u"", u""),
106
     (u"sa", u"संस्कृतम्", u"", u"Sanskrit"),
100
     (u"sa", u"संस्कृतम्", u"", u"Sanskrit"),
107
-    (u"sg", u"Sängö", u"", u"Sango"),
101
+    (u"he-IL", u"עברית", u"", u"Hebrew"),
108
     (u"se", u"Sámegiella", u"", u"Northern Sami"),
102
     (u"se", u"Sámegiella", u"", u"Northern Sami"),
109
     (u"sd", u"سنڌي، سندھی ، सिन्ध", u"", u"Sindhi"),
103
     (u"sd", u"سنڌي، سندھی ، सिन्ध", u"", u"Sindhi"),
110
     (u"fr-CH", u"Français", u"", u"French"),
104
     (u"fr-CH", u"Français", u"", u"French"),
112
     (u"it-CH", u"Italiano", u"", u"Italian"),
106
     (u"it-CH", u"Italiano", u"", u"Italian"),
113
     (u"wuu", u"吴语", u"", u"Wu"),
107
     (u"wuu", u"吴语", u"", u"Wu"),
114
     (u"fr-CA", u"Français", u"", u"French"),
108
     (u"fr-CA", u"Français", u"", u"French"),
115
-    (u"ar-XA", u"العربية", u"", u"Arabic"),
116
     (u"kbd", u"Адыгэбзэ (Adighabze)", u"", u"Kabardian Circassian"),
109
     (u"kbd", u"Адыгэбзэ (Adighabze)", u"", u"Kabardian Circassian"),
117
     (u"no-NO", u"Norsk (Bokmål)", u"", u"Norwegian (Bokmål)"),
110
     (u"no-NO", u"Norsk (Bokmål)", u"", u"Norwegian (Bokmål)"),
118
     (u"ca-ES", u"Català", u"", u"Catalan"),
111
     (u"ca-ES", u"Català", u"", u"Catalan"),
130
     (u"yi", u"ייִדיש", u"", u"Yiddish"),
123
     (u"yi", u"ייִדיש", u"", u"Yiddish"),
131
     (u"ceb", u"Sinugboanong Binisaya", u"", u"Cebuano"),
124
     (u"ceb", u"Sinugboanong Binisaya", u"", u"Cebuano"),
132
     (u"yo", u"Yorùbá", u"", u"Yoruba"),
125
     (u"yo", u"Yorùbá", u"", u"Yoruba"),
133
-    (u"ro-RO", u"Română", u"", u"Romanian"),
126
+    (u"ru-RU", u"Русский", u"", u"Russian"),
134
     (u"bar", u"Boarisch", u"", u"Bavarian"),
127
     (u"bar", u"Boarisch", u"", u"Bavarian"),
135
     (u"nov", u"Novial", u"", u"Novial"),
128
     (u"nov", u"Novial", u"", u"Novial"),
136
     (u"sr-ME", u"srpski (Crna Gora)", u"", u""),
129
     (u"sr-ME", u"srpski (Crna Gora)", u"", u""),
137
     (u"es-CL", u"Español", u"", u"Spanish"),
130
     (u"es-CL", u"Español", u"", u"Spanish"),
138
     (u"es-CO", u"Español", u"", u"Spanish"),
131
     (u"es-CO", u"Español", u"", u"Spanish"),
139
     (u"nl-NL", u"Nederlands", u"", u"Dutch"),
132
     (u"nl-NL", u"Nederlands", u"", u"Dutch"),
140
-    (u"map-bms", u"Basa Banyumasan", u"", u"Banyumasan"),
141
     (u"el", u"Ελληνικά", u"", u"Greek"),
133
     (u"el", u"Ελληνικά", u"", u"Greek"),
142
     (u"eo", u"Esperanto", u"", u"Esperanto"),
134
     (u"eo", u"Esperanto", u"", u"Esperanto"),
143
     (u"en", u"English", u"", u"English"),
135
     (u"en", u"English", u"", u"English"),
151
     (u"rw", u"Ikinyarwanda", u"", u"Kinyarwanda"),
143
     (u"rw", u"Ikinyarwanda", u"", u"Kinyarwanda"),
152
     (u"rm", u"Rumantsch", u"", u"Romansh"),
144
     (u"rm", u"Rumantsch", u"", u"Romansh"),
153
     (u"rn", u"Kirundi", u"", u"Kirundi"),
145
     (u"rn", u"Kirundi", u"", u"Kirundi"),
154
-    (u"es-419", u"español (Latinoamérica)", u"", u""),
146
+    (u"ro", u"Română", u"", u"Romanian"),
155
     (u"dsb", u"Dolnoserbski", u"", u"Lower Sorbian"),
147
     (u"dsb", u"Dolnoserbski", u"", u"Lower Sorbian"),
156
     (u"ast", u"Asturianu", u"", u"Asturian"),
148
     (u"ast", u"Asturianu", u"", u"Asturian"),
157
     (u"lmo", u"Lumbaart", u"", u"Lombard"),
149
     (u"lmo", u"Lumbaart", u"", u"Lombard"),
161
     (u"koi", u"Перем Коми (Perem Komi)", u"", u"Komi-Permyak"),
153
     (u"koi", u"Перем Коми (Perem Komi)", u"", u"Komi-Permyak"),
162
     (u"tr-TR", u"Türkçe", u"", u"Turkish"),
154
     (u"tr-TR", u"Türkçe", u"", u"Turkish"),
163
     (u"pnt", u"Ποντιακά", u"", u"Pontic"),
155
     (u"pnt", u"Ποντιακά", u"", u"Pontic"),
164
-    (u"es-XL", u"Español", u"", u"Spanish"),
165
     (u"fi-FI", u"Suomi", u"", u"Finnish"),
156
     (u"fi-FI", u"Suomi", u"", u"Finnish"),
166
     (u"pnb", u"شاہ مکھی پنجابی (Shāhmukhī Pañjābī)", u"", u"Western Punjabi"),
157
     (u"pnb", u"شاہ مکھی پنجابی (Shāhmukhī Pañjābī)", u"", u"Western Punjabi"),
167
-    (u"udm", u"Удмурт кыл", u"", u"Udmurt"),
158
+    (u"ar-SA", u"العربية", u"", u"Arabic"),
168
     (u"bem", u"Ichibemba", u"", u""),
159
     (u"bem", u"Ichibemba", u"", u""),
169
-    (u"roa-rup", u"Armãneashce", u"", u"Aromanian"),
170
-    (u"sr-Latn", u"srpski (latinica)", u"", u""),
160
+    (u"en-ZA", u"English", u"", u"English"),
171
     (u"stq", u"Seeltersk", u"", u"Saterland Frisian"),
161
     (u"stq", u"Seeltersk", u"", u"Saterland Frisian"),
172
-    (u"sr", u"Српски / Srpski", u"", u"Serbian"),
173
     (u"ang", u"Englisc", u"", u"Anglo-Saxon"),
162
     (u"ang", u"Englisc", u"", u"Anglo-Saxon"),
174
-    (u"ru-RU", u"Русский", u"", u"Russian"),
175
     (u"lbe", u"Лакку", u"", u"Lak"),
163
     (u"lbe", u"Лакку", u"", u"Lak"),
176
     (u"min", u"Minangkabau", u"", u"Minangkabau"),
164
     (u"min", u"Minangkabau", u"", u"Minangkabau"),
177
     (u"es-US", u"Español", u"", u"Spanish"),
165
     (u"es-US", u"Español", u"", u"Spanish"),
184
     (u"kg", u"KiKongo", u"", u"Kongo"),
172
     (u"kg", u"KiKongo", u"", u"Kongo"),
185
     (u"ckb", u"Soranî / کوردی", u"", u"Sorani"),
173
     (u"ckb", u"Soranî / کوردی", u"", u"Sorani"),
186
     (u"kk", u"Қазақша", u"", u"Kazakh"),
174
     (u"kk", u"Қазақша", u"", u"Kazakh"),
187
-    (u"kj", u"Kuanyama", u"", u"Kuanyama"),
175
+    (u"sg", u"Sängö", u"", u"Sango"),
188
     (u"ki", u"Gĩkũyũ", u"", u"Kikuyu"),
176
     (u"ki", u"Gĩkũyũ", u"", u"Kikuyu"),
189
     (u"ko", u"한국어", u"", u"Korean"),
177
     (u"ko", u"한국어", u"", u"Korean"),
190
     (u"kn", u"ಕನ್ನಡ", u"", u"Kannada"),
178
     (u"kn", u"ಕನ್ನಡ", u"", u"Kannada"),
191
     (u"tpi", u"Tok Pisin", u"", u"Tok Pisin"),
179
     (u"tpi", u"Tok Pisin", u"", u"Tok Pisin"),
192
     (u"kl", u"Kalaallisut", u"", u"Greenlandic"),
180
     (u"kl", u"Kalaallisut", u"", u"Greenlandic"),
193
     (u"ks", u"कश्मीरी / كشميري", u"", u"Kashmiri"),
181
     (u"ks", u"कश्मीरी / كشميري", u"", u"Kashmiri"),
194
-    (u"kr", u"Kanuri", u"", u"Kanuri"),
195
     (u"ext", u"Estremeñu", u"", u"Extremaduran"),
182
     (u"ext", u"Estremeñu", u"", u"Extremaduran"),
196
     (u"kw", u"Kernewek/Karnuack", u"", u"Cornish"),
183
     (u"kw", u"Kernewek/Karnuack", u"", u"Cornish"),
197
     (u"kv", u"Коми", u"", u"Komi"),
184
     (u"kv", u"Коми", u"", u"Komi"),
202
     (u"en-GB", u"English", u"", u"English"),
189
     (u"en-GB", u"English", u"", u"English"),
203
     (u"xmf", u"მარგალური (Margaluri)", u"", u"Mingrelian"),
190
     (u"xmf", u"მარგალური (Margaluri)", u"", u"Mingrelian"),
204
     (u"jam", u"Jamaican Creole English", u"", u"Patois"),
191
     (u"jam", u"Jamaican Creole English", u"", u"Patois"),
205
-    (u"ar-SA", u"العربية", u"", u"Arabic"),
192
+    (u"udm", u"Удмурт кыл", u"", u"Udmurt"),
206
     (u"ksh", u"Ripoarisch", u"", u"Ripuarian"),
193
     (u"ksh", u"Ripoarisch", u"", u"Ripuarian"),
207
     (u"ms-MY", u"Bahasa Melayu", u"", u"Malay"),
194
     (u"ms-MY", u"Bahasa Melayu", u"", u"Malay"),
208
     (u"de", u"Deutsch", u"", u"German"),
195
     (u"de", u"Deutsch", u"", u"German"),
219
     (u"rmy", u"romani - रोमानी", u"", u"Romani"),
206
     (u"rmy", u"romani - रोमानी", u"", u"Romani"),
220
     (u"arc", u"ܐܪܡܝܐ", u"", u"Aramaic"),
207
     (u"arc", u"ܐܪܡܝܐ", u"", u"Aramaic"),
221
     (u"th-TH", u"ไทย", u"", u"Thai"),
208
     (u"th-TH", u"ไทย", u"", u"Thai"),
222
-    (u"mus", u"Muskogee", u"", u"Muscogee"),
223
     (u"lua", u"Luba-Lulua", u"", u""),
209
     (u"lua", u"Luba-Lulua", u"", u""),
224
-    (u"en-ZA", u"English", u"", u"English"),
225
     (u"wa", u"Walon", u"", u"Walloon"),
210
     (u"wa", u"Walon", u"", u"Walloon"),
226
     (u"wo", u"Wolof", u"", u"Wolof"),
211
     (u"wo", u"Wolof", u"", u"Wolof"),
227
     (u"jv", u"Basa Jawa", u"", u"Javanese"),
212
     (u"jv", u"Basa Jawa", u"", u"Javanese"),
228
-    (u"jw", u"Javanese", u"", u""),
229
     (u"fr-BE", u"Français", u"", u"French"),
213
     (u"fr-BE", u"Français", u"", u"French"),
230
     (u"tum", u"chiTumbuka", u"", u"Tumbuka"),
214
     (u"tum", u"chiTumbuka", u"", u"Tumbuka"),
231
     (u"ja", u"日本語", u"", u"Japanese"),
215
     (u"ja", u"日本語", u"", u"Japanese"),
233
     (u"ilo", u"Ilokano", u"", u"Ilokano"),
217
     (u"ilo", u"Ilokano", u"", u"Ilokano"),
234
     (u"tlh", u"Klingon", u"", u""),
218
     (u"tlh", u"Klingon", u"", u""),
235
     (u"pdc", u"Deitsch", u"", u"Pennsylvania German"),
219
     (u"pdc", u"Deitsch", u"", u"Pennsylvania German"),
236
-    (u"aa", u"Afar", u"", u"Afar"),
237
     (u"ch", u"Chamoru", u"", u"Chamorro"),
220
     (u"ch", u"Chamoru", u"", u"Chamorro"),
238
     (u"co", u"Corsu", u"", u"Corsican"),
221
     (u"co", u"Corsu", u"", u"Corsican"),
239
-    (u"simple", u"Simple English", u"", u"Simple English"),
240
     (u"ca", u"Català", u"", u"Catalan"),
222
     (u"ca", u"Català", u"", u"Catalan"),
241
-    (u"xx-pirate", u"Pirate", u"", u""),
242
     (u"ce", u"Нохчийн", u"", u"Chechen"),
223
     (u"ce", u"Нохчийн", u"", u"Chechen"),
243
     (u"cy", u"Cymraeg", u"", u"Welsh"),
224
     (u"cy", u"Cymraeg", u"", u"Welsh"),
244
     (u"sah", u"Саха тыла (Saxa Tyla)", u"", u"Sakha"),
225
     (u"sah", u"Саха тыла (Saxa Tyla)", u"", u"Sakha"),
254
     (u"frp", u"Arpitan", u"", u"Franco-Provençal"),
235
     (u"frp", u"Arpitan", u"", u"Franco-Provençal"),
255
     (u"xal", u"Хальмг", u"", u"Kalmyk"),
236
     (u"xal", u"Хальмг", u"", u"Kalmyk"),
256
     (u"pi", u"पाऴि", u"", u"Pali"),
237
     (u"pi", u"पाऴि", u"", u"Pali"),
257
-    (u"it-IT", u"Italiano", u"", u"Italian"),
238
+    (u"ak", u"Akana", u"", u"Akan"),
258
     (u"pl", u"Polski", u"", u"Polish"),
239
     (u"pl", u"Polski", u"", u"Polish"),
259
     (u"nrm", u"Nouormand/Normaund", u"", u"Norman"),
240
     (u"nrm", u"Nouormand/Normaund", u"", u"Norman"),
260
     (u"en-US", u"English", u"", u"English"),
241
     (u"en-US", u"English", u"", u"English"),
261
     (u"gan", u"贛語", u"", u"Gan"),
242
     (u"gan", u"贛語", u"", u"Gan"),
262
-    (u"bat-smg", u"Žemaitėška", u"", u"Samogitian"),
263
-    (u"en-UK", u"English", u"", u"English"),
264
     (u"gag", u"Gagauz", u"", u"Gagauz"),
243
     (u"gag", u"Gagauz", u"", u"Gagauz"),
265
     (u"an", u"Aragonés", u"", u"Aragonese"),
244
     (u"an", u"Aragonés", u"", u"Aragonese"),
266
     (u"gaa", u"Ga", u"", u""),
245
     (u"gaa", u"Ga", u"", u""),
267
     (u"fur", u"Furlan", u"", u"Friulian"),
246
     (u"fur", u"Furlan", u"", u"Friulian"),
268
-    (u"kr-KR", u"Kanuri", u"", u"Kanuri"),
269
-    (u"zh-CN", u"中文 (简体)", u"", u""),
247
+    (u"es-PE", u"Español", u"", u"Spanish"),
270
     (u"tl-PH", u"Tagalog", u"", u"Tagalog"),
248
     (u"tl-PH", u"Tagalog", u"", u"Tagalog"),
271
     (u"en-IN", u"English", u"", u"English"),
249
     (u"en-IN", u"English", u"", u"English"),
272
     (u"ve", u"Tshivenda", u"", u"Venda"),
250
     (u"ve", u"Tshivenda", u"", u"Venda"),
273
     (u"en-ID", u"English", u"", u"English"),
251
     (u"en-ID", u"English", u"", u"English"),
274
     (u"en-IE", u"English", u"", u"English"),
252
     (u"en-IE", u"English", u"", u"English"),
275
-    (u"xx-bork", u"Bork, bork, bork!", u"", u""),
253
+    (u"is", u"Íslenska", u"", u"Icelandic"),
276
     (u"iu", u"ᐃᓄᒃᑎᑐᑦ", u"", u"Inuktitut"),
254
     (u"iu", u"ᐃᓄᒃᑎᑐᑦ", u"", u"Inuktitut"),
277
     (u"it", u"Italiano", u"", u"Italian"),
255
     (u"it", u"Italiano", u"", u"Italian"),
278
     (u"iw", u"עברית", u"", u""),
256
     (u"iw", u"עברית", u"", u""),
279
     (u"vo", u"Volapük", u"", u"Volapük"),
257
     (u"vo", u"Volapük", u"", u"Volapük"),
280
-    (u"ii", u"ꆇꉙ", u"", u"Sichuan Yi"),
281
     (u"ik", u"Iñupiak", u"", u"Inupiak"),
258
     (u"ik", u"Iñupiak", u"", u"Inupiak"),
282
     (u"io", u"Ido", u"", u"Ido"),
259
     (u"io", u"Ido", u"", u"Ido"),
283
     (u"ia", u"Interlingua", u"", u"Interlingua"),
260
     (u"ia", u"Interlingua", u"", u"Interlingua"),
288
     (u"pap", u"Papiamentu", u"", u"Papiamentu"),
265
     (u"pap", u"Papiamentu", u"", u"Papiamentu"),
289
     (u"pag", u"Pangasinan", u"", u"Pangasinan"),
266
     (u"pag", u"Pangasinan", u"", u"Pangasinan"),
290
     (u"pam", u"Kapampangan", u"", u"Kapampangan"),
267
     (u"pam", u"Kapampangan", u"", u"Kapampangan"),
291
-    (u"lv-LV", u"Latviešu", u"", u"Latvian"),
268
+    (u"nl", u"Nederlands", u"", u"Dutch"),
292
     (u"mzn", u"مَزِروني", u"", u"Mazandarani"),
269
     (u"mzn", u"مَزِروني", u"", u"Mazandarani"),
293
     (u"nl-BE", u"Nederlands", u"", u"Dutch"),
270
     (u"nl-BE", u"Nederlands", u"", u"Dutch"),
294
     (u"sk-SK", u"Slovenčina", u"", u"Slovak"),
271
     (u"sk-SK", u"Slovenčina", u"", u"Slovak"),
297
     (u"de-DE", u"Deutsch", u"", u"German"),
274
     (u"de-DE", u"Deutsch", u"", u"German"),
298
     (u"jbo", u"Lojban", u"", u"Lojban"),
275
     (u"jbo", u"Lojban", u"", u"Lojban"),
299
     (u"mfe", u"kreol morisien", u"", u""),
276
     (u"mfe", u"kreol morisien", u"", u""),
277
+    (u"tcy", u"Tulu", u"", u"ತುಳು"),
300
     (u"hak", u"Hak-kâ-fa / 客家話", u"", u"Hakka"),
278
     (u"hak", u"Hak-kâ-fa / 客家話", u"", u"Hakka"),
301
     (u"ny", u"Chichewa", u"", u"Chichewa"),
279
     (u"ny", u"Chichewa", u"", u"Chichewa"),
302
     (u"ady", u"Адыгэбзэ", u"", u"Adyghe"),
280
     (u"ady", u"Адыгэбзэ", u"", u"Adyghe"),
308
     (u"en-MY", u"English", u"", u"English"),
286
     (u"en-MY", u"English", u"", u"English"),
309
     (u"sv-SE", u"Svenska", u"", u"Swedish"),
287
     (u"sv-SE", u"Svenska", u"", u"Swedish"),
310
     (u"de-AT", u"Deutsch", u"", u"German"),
288
     (u"de-AT", u"Deutsch", u"", u"German"),
311
-    (u"xx-elmer", u"Elmer Fudd", u"", u""),
312
     (u"hsb", u"Hornjoserbsce", u"", u"Upper Sorbian"),
289
     (u"hsb", u"Hornjoserbsce", u"", u"Upper Sorbian"),
313
     (u"be", u"Беларуская", u"", u"Belarusian"),
290
     (u"be", u"Беларуская", u"", u"Belarusian"),
314
     (u"bg", u"Български", u"", u"Bulgarian"),
291
     (u"bg", u"Български", u"", u"Bulgarian"),
328
     (u"ach", u"Acoli", u"", u""),
305
     (u"ach", u"Acoli", u"", u""),
329
     (u"oc", u"Occitan", u"", u"Occitan"),
306
     (u"oc", u"Occitan", u"", u"Occitan"),
330
     (u"kri", u"Krio (Sierra Leone)", u"", u""),
307
     (u"kri", u"Krio (Sierra Leone)", u"", u""),
331
-    (u"be-tarask", u"Беларуская (тарашкевіца)", u"", u"Belarusian (Taraškievica)"),
332
     (u"krc", u"Къарачай-Малкъар (Qarachay-Malqar)", u"", u"Karachay-Balkar"),
308
     (u"krc", u"Къарачай-Малкъар (Qarachay-Malqar)", u"", u"Karachay-Balkar"),
333
     (u"nds", u"Plattdüütsch", u"", u"Low Saxon"),
309
     (u"nds", u"Plattdüütsch", u"", u"Low Saxon"),
334
     (u"os", u"Иронау", u"", u"Ossetian"),
310
     (u"os", u"Иронау", u"", u"Ossetian"),
335
     (u"or", u"ଓଡ଼ିଆ", u"", u"Oriya"),
311
     (u"or", u"ଓଡ଼ିଆ", u"", u"Oriya"),
336
     (u"nso", u"Sepedi", u"", u"Northern Sotho"),
312
     (u"nso", u"Sepedi", u"", u"Northern Sotho"),
337
     (u"bjn", u"Bahasa Banjar", u"", u"Banjar"),
313
     (u"bjn", u"Bahasa Banjar", u"", u"Banjar"),
338
-    (u"xx-hacker", u"Hacker", u"", u""),
339
-    (u"zh-min-nan", u"Bân-lâm-gú", u"", u"Min Nan"),
340
     (u"pa", u"ਪੰਜਾਬੀ", u"", u"Punjabi"),
314
     (u"pa", u"ਪੰਜਾਬੀ", u"", u"Punjabi"),
341
     (u"loz", u"Lozi", u"", u""),
315
     (u"loz", u"Lozi", u"", u""),
342
     (u"war", u"Winaray", u"", u"Waray-Waray"),
316
     (u"war", u"Winaray", u"", u"Waray-Waray"),
343
-    (u"hz", u"Otsiherero", u"", u"Herero"),
344
     (u"hy", u"Հայերեն", u"", u"Armenian"),
317
     (u"hy", u"Հայերեն", u"", u"Armenian"),
345
     (u"hr", u"Hrvatski", u"", u"Croatian"),
318
     (u"hr", u"Hrvatski", u"", u"Croatian"),
346
     (u"ht", u"Krèyol ayisyen", u"", u"Haitian"),
319
     (u"ht", u"Krèyol ayisyen", u"", u"Haitian"),
347
     (u"hu", u"Magyar", u"", u"Hungarian"),
320
     (u"hu", u"Magyar", u"", u"Hungarian"),
348
     (u"hi", u"हिन्दी", u"", u"Hindi"),
321
     (u"hi", u"हिन्दी", u"", u"Hindi"),
349
-    (u"ho", u"Hiri Motu", u"", u"Hiri Motu"),
350
     (u"ha", u"هَوُسَ", u"", u"Hausa"),
322
     (u"ha", u"هَوُسَ", u"", u"Hausa"),
351
     (u"bug", u"Basa Ugi", u"", u"Buginese"),
323
     (u"bug", u"Basa Ugi", u"", u"Buginese"),
352
     (u"he", u"עברית", u"", u"Hebrew"),
324
     (u"he", u"עברית", u"", u"Hebrew"),
359
     (u"pih", u"Norfuk", u"", u"Norfolk"),
331
     (u"pih", u"Norfuk", u"", u"Norfolk"),
360
     (u"ab", u"Аҧсуа", u"", u"Abkhazian"),
332
     (u"ab", u"Аҧсуа", u"", u"Abkhazian"),
361
     (u"af", u"Afrikaans", u"", u"Afrikaans"),
333
     (u"af", u"Afrikaans", u"", u"Afrikaans"),
362
-    (u"ak", u"Akana", u"", u"Akan"),
334
+    (u"it-IT", u"Italiano", u"", u"Italian"),
363
     (u"am", u"አማርኛ", u"", u"Amharic"),
335
     (u"am", u"አማርኛ", u"", u"Amharic"),
364
     (u"myv", u"Эрзянь (Erzjanj Kelj)", u"", u"Erzya"),
336
     (u"myv", u"Эрзянь (Erzjanj Kelj)", u"", u"Erzya"),
365
     (u"as", u"অসমীয়া", u"", u"Assamese"),
337
     (u"as", u"অসমীয়া", u"", u"Assamese"),
370
     (u"ay", u"Aymar", u"", u"Aymara"),
342
     (u"ay", u"Aymar", u"", u"Aymara"),
371
     (u"az", u"Azərbaycanca", u"", u"Azerbaijani"),
343
     (u"az", u"Azərbaycanca", u"", u"Azerbaijani"),
372
     (u"es-ES", u"Español", u"", u"Spanish"),
344
     (u"es-ES", u"Español", u"", u"Spanish"),
373
-    (u"nl", u"Nederlands", u"", u"Dutch"),
345
+    (u"lv-LV", u"Latviešu", u"", u"Latvian"),
374
     (u"nn", u"Nynorsk", u"", u"Norwegian (Nynorsk)"),
346
     (u"nn", u"Nynorsk", u"", u"Norwegian (Nynorsk)"),
375
     (u"no", u"Norsk (Bokmål)", u"", u"Norwegian (Bokmål)"),
347
     (u"no", u"Norsk (Bokmål)", u"", u"Norwegian (Bokmål)"),
376
     (u"na", u"dorerin Naoero", u"", u"Nauruan"),
348
     (u"na", u"dorerin Naoero", u"", u"Nauruan"),
377
     (u"nah", u"Nāhuatl", u"", u"Nahuatl"),
349
     (u"nah", u"Nāhuatl", u"", u"Nahuatl"),
378
     (u"ne", u"नेपाली", u"", u"Nepali"),
350
     (u"ne", u"नेपाली", u"", u"Nepali"),
379
-    (u"ng", u"Oshiwambo", u"", u"Ndonga"),
380
     (u"en-AU", u"English", u"", u"English"),
351
     (u"en-AU", u"English", u"", u"English"),
381
     (u"nap", u"Nnapulitano", u"", u"Neapolitan"),
352
     (u"nap", u"Nnapulitano", u"", u"Neapolitan"),
382
     (u"nv", u"Diné bizaad", u"", u"Navajo"),
353
     (u"nv", u"Diné bizaad", u"", u"Navajo"),
383
     (u"ku", u"Kurdî / كوردی", u"", u"Kurdish"),
354
     (u"ku", u"Kurdî / كوردی", u"", u"Kurdish"),
384
     (u"cs-CZ", u"Čeština", u"", u"Czech"),
355
     (u"cs-CZ", u"Čeština", u"", u"Czech"),
385
-    (u"zh-yue", u"粵語", u"", u"Cantonese"),
386
     (u"en-SG", u"English", u"", u"English"),
356
     (u"en-SG", u"English", u"", u"English"),
387
-    (u"zh-classical", u"古文 / 文言文", u"", u"Classical Chinese"),
388
-    (u"bcl", u"Bikol", u"", u"Central Bicolano"),
389
-    (u"en-XA", u"English", u"", u"English")
357
+    (u"bcl", u"Bikol", u"", u"Central Bicolano")
390
 )
358
 )

+ 35
- 6
utils/update_languages.py 파일 보기

11
 
11
 
12
 from requests import get
12
 from requests import get
13
 from re import sub
13
 from re import sub
14
-from lxml.html import fromstring
14
+from lxml.html import fromstring, tostring
15
 from json import loads
15
 from json import loads
16
 from sys import path
16
 from sys import path
17
 path.append('../searx')
17
 path.append('../searx')
25
 
25
 
26
 languages = {}
26
 languages = {}
27
 
27
 
28
+
29
+# To filter out invalid codes and dialects.
30
+def valid_code(lang_code):
31
+    # filter invalid codes
32
+    if lang_code[:2] == 'xx'\
33
+       or lang_code == 'jw'\
34
+       or lang_code[-2:] == 'UK'\
35
+       or lang_code[-2:] == 'XA'\
36
+       or lang_code[-2:] == 'XL':
37
+        return False
38
+
39
+    # filter dialects
40
+    lang_code = lang_code.split('-')
41
+    if len(lang_code) > 2 or len(lang_code[0]) > 3:
42
+        return False
43
+    if len(lang_code) == 2 and len(lang_code[1]) > 2:
44
+        print lang_code
45
+        return False
46
+        
47
+    return True
48
+
49
+
28
 # Get language names from Wikipedia.
50
 # Get language names from Wikipedia.
29
 def get_wikipedia_languages():
51
 def get_wikipedia_languages():
30
     response = get(wiki_languages_url)
52
     response = get(wiki_languages_url)
38
             code = td[3].xpath('./a')[0].text
60
             code = td[3].xpath('./a')[0].text
39
             name = td[2].xpath('./a')[0].text
61
             name = td[2].xpath('./a')[0].text
40
             english_name = td[1].xpath('./a')[0].text
62
             english_name = td[1].xpath('./a')[0].text
63
+            articles = int(td[4].xpath('./a/b')[0].text.replace(',',''))
41
             
64
             
42
-            if code not in languages:
65
+            # exclude languages with few articles and language variants
66
+            if code not in languages and articles >= 100 and valid_code(code):
43
                 languages[code] = (name, '', english_name)
67
                 languages[code] = (name, '', english_name)
44
 
68
 
69
+
45
 # Get language names from Google.
70
 # Get language names from Google.
46
 def get_google_languages():
71
 def get_google_languages():
47
     response = get(google_languages_url)
72
     response = get(google_languages_url)
51
         code = option.xpath('./@value')[0]
76
         code = option.xpath('./@value')[0]
52
         name = option.text[:-1]
77
         name = option.text[:-1]
53
 
78
 
54
-        if code not in languages:
79
+        if code not in languages and valid_code(code):
55
             languages[code] = (name, '', '')
80
             languages[code] = (name, '', '')
56
 
81
 
82
+
57
 # Join all language lists.
83
 # Join all language lists.
58
 # iterate all languages supported by each engine
84
 # iterate all languages supported by each engine
59
 def join_language_lists():
85
 def join_language_lists():
60
     for engine_name in engines:
86
     for engine_name in engines:
61
         for locale in engines[engine_name].supported_languages:
87
         for locale in engines[engine_name].supported_languages:
62
             locale = locale.replace('_', '-')
88
             locale = locale.replace('_', '-')
63
-            if locale not in languages:
89
+            if locale not in languages and valid_code(locale):
64
                 # try to get language name
90
                 # try to get language name
65
                 language = languages.get(locale.split('-')[0], None)
91
                 language = languages.get(locale.split('-')[0], None)
66
                 if language == None:
92
                 if language == None:
67
-                    print engine_name + ": " + locale
93
+                    # print engine_name + ": " + locale
68
                     continue
94
                     continue
69
 
95
 
70
                 (name, country, english) = language
96
                 (name, country, english) = language
71
                 languages[locale] = (name, country, english)
97
                 languages[locale] = (name, country, english)
72
 
98
 
99
+
73
 # Write languages.py.
100
 # Write languages.py.
74
 def write_languages_file():
101
 def write_languages_file():
75
     new_file = open('languages.py', 'w')
102
     new_file = open('languages.py', 'w')
81
         (name, country, english) = languages[code]
108
         (name, country, english) = languages[code]
82
         file_content += '\n    (u"' + code + '"'\
109
         file_content += '\n    (u"' + code + '"'\
83
                         + ', u"' + name + '"'\
110
                         + ', u"' + name + '"'\
84
-                        + ', u"' + country[1:-1] + '"'\
111
+                        + ', u"' + country + '"'\
85
                         + ', u"' + english + '"),'
112
                         + ', u"' + english + '"),'
86
     # remove last comma
113
     # remove last comma
87
     file_content = file_content[:-1]
114
     file_content = file_content[:-1]
89
     new_file.write(file_content.encode('utf8'))
116
     new_file.write(file_content.encode('utf8'))
90
     new_file.close()
117
     new_file.close()
91
 
118
 
119
+
92
 def main():
120
 def main():
93
     get_wikipedia_languages()
121
     get_wikipedia_languages()
94
     get_google_languages()
122
     get_google_languages()
95
     join_language_lists()
123
     join_language_lists()
96
     write_languages_file()
124
     write_languages_file()
97
 
125
 
126
+
98
 if __name__ == "__main__":
127
 if __name__ == "__main__":
99
     main()
128
     main()