├── LICENSE ├── README.md ├── setup.py └── zoro_dl ├── __init__.py ├── anime_api.py ├── processor.py ├── static ├── N_m3u8DL-RE ├── N_m3u8DL-RE.exe └── languages_info.json └── utils.py /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Aditya 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Logo](https://i.imgur.com/VR5m7DR.png) 2 | 3 |
4 | aditya76-git / 5 | zoro-dl 6 |
7 | 8 |
9 | 10 | # 🔥ZORO-DL - A Python Package to Download Anime from ZORO [DUAL AUDIO] [MULTI SUBS] 11 | 12 | ZORO-DL is a powerful Python package designed to simplify the process of downloading your favorite anime content from ZORO 13 | 14 | You can Download Anime in DUAL AUDIO (JPN-ENG) with MULTI-SUBS 15 | 16 | # ✅Status 17 | 18 | ![Status](https://consumet-api-status.vercel.app/?url=https://api.consumet.org/anime/zoro/watch?episodeId=death-note-60$episode$1464$dub) 19 | 20 | The project heavily relies on the [CONSUMET API](https://consumet.org/). If the API experiences downtime, the project won't function. Kindly wait until the developers restore the API to its operational state. 21 | 22 | # 📋Details 23 | 24 | - [🔎Why ZORO-DL](#why-zoro-dl) 25 | - [⚠️ Disclaimer](#disclaimer) 26 | - [💡Pre Requisite](#pre-requisite) 27 | - [🔨FFmpeg](#ffmpeg) 28 | - [⚙️Installation](#installation) 29 | - [🚀Initialization](#initialization) 30 | - [📚USAGE GUIDE](#usage-guide) 31 | - [🌍DUAL-AUDIO MULTI-SUBS](#both) 32 | - [🎧JPN AUDIO MULTI-SUBS](#sub) 33 | - [🔊ENG AUDIO](#dub) 34 | - [📋TERMINAL OUTPUT](#terminal-output) 35 | - [📂MEDIAINFO](#mediainfo) 36 | - [🌟Show Your Support](#show-your-support) 37 | - [👨‍💻Developement](#developement) 38 | - [🤝Contributors](#contributors) 39 | - [🙌🏼Thanks To](#thanks-to) 40 | - [💻Authors](#authors) 41 | 42 | # 🔎Why ZORO-DL 43 | 44 | Navigating through the ads on ZORO.to can be a bit of a hassle, Pop-ups left and right, interrupting your anime viewing experience While ad blockers work online, what if you want to enjoy your shows offline? That's where ZORO-DL comes into play. 45 | 46 | Most sites offer those massive Video files that eat up your storage. But ZORO? They've got thier own encodes which are very tiny. They just have a small watermark for once or twice, hardly noticeable.You can get both the Audios Japanese and English with Multi Subs in around 300 MB for 1080p modern animes 47 | 48 | Perfect for ZORO fans who want their favorite episodes ready to watch anytime, anywhere. No more hassle, just straightforward anime enjoyment. 49 | 50 | # ⚠️ Disclaimer 51 | 52 | `ZORO-DL` is a tool that uses the `API` provided by [consumet.org](https://consumet.org/) to fetch streaming links from `ZORO.to`. It does not claim any `ownership` or `affiliation` with ZORO.to or consumet.org. ZORO-DL is solely developed to enhance the user experience by providing a convenient way to download and enjoy anime content from `ZORO.to`. Use this tool responsibly and in accordance with the terms of use of the respective websites. 53 | 54 | The essence of this `project` lies in the seamless integration of `automation` and `efficiency` to harness the content available on the internet. It's important to note that all the content accessed through this project is sourced from `external`, `non-affiliated` platforms. 55 | 56 | # 💡Pre Requisite 57 | 58 | ## 🔨FFmpeg 59 | 60 | Before using this tool, please ensure that you have `FFmpeg` installed and added to your system's PATH. `FFmpeg` is a crucial component for video processing and manipulation, which ZORO-DL relies on. Follow the steps below to install `FFmpeg` on different operating systems: 61 | 62 | ## Linux (Ubuntu/Debian): 63 | 64 | ```bash 65 | sudo apt install ffmpeg 66 | ``` 67 | 68 | ## MacOS: 69 | 70 | - Open Terminal 71 | - Install Homebrew if you haven't already. Paste this command and press Enter: 72 | 73 | ```bash 74 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 75 | ``` 76 | 77 | - Install FFmpeg by typing: 78 | 79 | ```bash 80 | brew install ffmpeg 81 | ``` 82 | 83 | ## Windows: 84 | 85 | Click [here](https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z) to download the zip file of the latest version. 86 | ![STEP 1](https://media.geeksforgeeks.org/wp-content/uploads/20210912143634/Screenshotfrom20210912142407.png) 87 | Unzip this file by using any file archiver such as Winrar or 7z. 88 | ![STEP 2](https://media.geeksforgeeks.org/wp-content/uploads/20210912212008/1.png) 89 | Rename the extracted folder to ffmpeg and move it into the root of C: drive. 90 | ![STEP 3](https://media.geeksforgeeks.org/wp-content/uploads/20210912212010/3.png) 91 | Now, run `cmd` as an administrator and set the environment path variable for `ffmpeg` by running the following `command`: 92 | 93 | ```bash 94 | setx /m PATH "C:\ffmpeg\bin;%PATH%" 95 | ``` 96 | 97 | ![STEP 4](https://media.geeksforgeeks.org/wp-content/uploads/20210912212036/Screenshotfrom20210912211815.png) 98 | 99 | > GUIDE SOURCE - [GEEKSFORGEEKS](https://www.geeksforgeeks.org/how-to-install-ffmpeg-on-windows/) 100 | 101 | # ⚙️Installation 102 | 103 | Open your terminal or command prompt and enter the following command: 104 | 105 | ```bash 106 | pip install git+https://github.com/aditya76-git/zoro-dl@main 107 | ``` 108 | 109 | # 🚀Initialization 110 | 111 | To get started, you need to initialize an instance of the `ZORO` class 112 | 113 | ```python3 114 | from zoro_dl import ZORO 115 | 116 | # Initialize ZORO class with required parameters 117 | zoro = ZORO( 118 | url="ZORO_URL", 119 | season="1", 120 | episode="1-5", 121 | resolution="1080p", 122 | dl_type="both", 123 | group_tag="YourGroupTag" 124 | ) 125 | 126 | ``` 127 | 128 | | Parameter | Type | Description | Example | 129 | | :----------- | :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------- | 130 | | `url ` | `str` | **Required**. The URL of the anime series on ZORO.to that you want to download from. | https://aniwatch.to/watch/baki-hanma-son-of-ogre-15723 | 131 | | `season` | `str` | **Optional**. The season which will be added to the filename. Defaults to "1". Since ZORO have different URL for different seasons of a particular, This is important to be passed inorder to generate appropiate filenames | 1 | 132 | | `episode` | `str` or `None` | **Optional**. Episodes to be downloaded. Can be a range of episodes (e.g., "1-5"), a single episode (e.g., "10"), or None to download the complete season. Defaults to None. | 1-5 | 133 | | `resolution` | `str` or `None` | **Optional**. The resolution for downloading (e.g., "1080p" , "720p"). Defaults to "1080p". | 720p | 134 | | `dl_type` | `str` or `None` | **Optional**. Download type: "sub", "dub", or "both". Defaults to "both". "sub" will download in JPN Audio with All Available Subtitles, "dub" will download only in ENG Audio and "both" with download in JPN-ENG with All Available Subtitles. Make sure to verify the series which you want to DL in "both",If it has same duration in both sub and dub player on ZORO, Only then it will work or else you will have audio sync issues | both | 135 | | `group_tag` | `str` or `None` | **Optional**. Custom group tag for metadata. Defaults to "NOGRP" | S3BS | 136 | 137 | # 📚USAGE GUIDE 138 | 139 | ## 🌍DUAL-AUDIO MULTI-SUBS 140 | 141 | Make sure to verify the `series` which you want to `DL` in "both",If it has same duration in both `sub` and `dub` player on `ZORO`, Only then it will work or else you will have audio sync issues 142 | 143 | Will download in JPN-ENG Audio with All Available Subtitles 144 | 145 | ``` 146 | dl_type = "both" 147 | ``` 148 | 149 | ```python3 150 | from zoro_dl import ZORO 151 | 152 | zoro = ZORO( 153 | url="ZORO_URL", 154 | season="1", 155 | episode="1-5", 156 | resolution="1080p", 157 | dl_type="both", 158 | group_tag="YourGroupTag" 159 | ) 160 | zoro.start_dl() 161 | 162 | ``` 163 | 164 | ## 🎧JPN AUDIO MULTI-SUBS 165 | 166 | Will download in JPN Audio with All Available Subtitles 167 | 168 | ``` 169 | dl_type = "sub" 170 | ``` 171 | 172 | ```python3 173 | from zoro_dl import ZORO 174 | 175 | zoro = ZORO( 176 | url="ZORO_URL", 177 | season="1", 178 | episode="1-5", 179 | resolution="1080p", 180 | dl_type="sub", 181 | group_tag="YourGroupTag" 182 | ) 183 | zoro.start_dl() 184 | 185 | ``` 186 | 187 | ## 🔊ENG AUDIO 188 | 189 | Will download in ENG Audio with No Subtitles 190 | 191 | ``` 192 | dl_type = "dub" 193 | ``` 194 | 195 | ```python3 196 | from zoro_dl import ZORO 197 | 198 | zoro = ZORO( 199 | url="ZORO_URL", 200 | season="1", 201 | episode="1-5", 202 | resolution="1080p", 203 | dl_type="dub", 204 | group_tag="YourGroupTag" 205 | ) 206 | zoro.start_dl() 207 | 208 | ``` 209 | 210 | # 📋 TERMINAL OUTPUT 211 | 212 | ``` 213 | ---------------------------------------------------------------------- 214 | EXTRACTING STREAMS 215 | [+] DOWNLOADING - Baki Hanma: Son of Ogre S01E01 The World's Strongest Senior - 1080p 216 | [+] DOWNLOADING JPN VIDEO SOURCE 217 | [+] DOWNLOADING ENG VIDEO SOURCE 218 | [+] DOWNLOADING SUBTITLES (TOTAL - 34 FOUND) 219 | [+] MUXING FILES 220 | [+] TASK COMPLETED IN 41s 221 | [+] FILE [Conan76] Baki Hanma: Son of Ogre S01E01 The World's Strongest Senior [1080p] [WEB] [JPN-ENG] [MULTI-SUBS].mkv 222 | [+] Cleaning Temp Video Files 223 | [+] Cleaning Temp Subtitle Files 224 | ``` 225 | 226 | # 📂 MEDIAINFO 227 | 228 | ``` 229 | Unique ID : 27636542821203888231540861625285126985 (0x14CA9AC2FE6B696FCA68967ED0FEAB49) 230 | Complete name : /content/[Conan76] Baki: Dai Raitaisai-hen S01E03 Revived! [1080p] [WEB] [JPN-ENG] [MULTI-SUBS].mkv 231 | Format : Matroska 232 | Format version : Version 4 233 | File size : 286 MiB 234 | Duration : 23 min 57 s 235 | Overall bit rate : 1 670 kb/s 236 | Encoded by : Conan76 237 | Writing application : Lavf58.76.100 238 | Writing library : Lavf58.76.100 239 | ErrorDetectionType : Per level 1 240 | DATE : 2023-08-29T19:40:38.1290870+00:00 241 | 242 | Video 243 | ID : 1 244 | Format : AVC 245 | Format/Info : Advanced Video Codec 246 | Format profile : High@L5 247 | Format settings : CABAC / 5 Ref Frames 248 | Format settings, CABAC : Yes 249 | Format settings, Reference frames : 5 frames 250 | Codec ID : V_MPEG4/ISO/AVC 251 | Duration : 23 min 57 s 252 | Width : 1 920 pixels 253 | Height : 1 080 pixels 254 | Display aspect ratio : 16:9 255 | Frame rate mode : Constant 256 | Frame rate : 25.000 FPS 257 | Color space : YUV 258 | Chroma subsampling : 4:2:0 259 | Bit depth : 8 bits 260 | Scan type : Progressive 261 | Title : Conan76 - Sourced from ZORO 262 | Writing library : x264 core 148 r2795 aaa9aa8 263 | Encoding settings : cabac=1 / ref=5 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=8 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=24 / lookahead_threads=4 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=50 / rc=crf / mbtree=1 / crf=25.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00 264 | Default : Yes 265 | Forced : No 266 | VENDOR_ID : [0][0][0][0] 267 | 268 | Audio #1 269 | ID : 2 270 | Format : AAC LC 271 | Format/Info : Advanced Audio Codec Low Complexity 272 | Codec ID : A_AAC-2 273 | Duration : 23 min 57 s 274 | Channel(s) : 2 channels 275 | Channel layout : L R 276 | Sampling rate : 48.0 kHz 277 | Frame rate : 46.875 FPS (1024 SPF) 278 | Compression mode : Lossy 279 | Delay relative to video : -80 ms 280 | Title : Conan76 281 | Language : Japanese 282 | Default : Yes 283 | Forced : No 284 | VENDOR_ID : [0][0][0][0] 285 | 286 | Audio #2 287 | ID : 3 288 | Format : AAC LC 289 | Format/Info : Advanced Audio Codec Low Complexity 290 | Codec ID : A_AAC-2 291 | Duration : 23 min 57 s 292 | Channel(s) : 2 channels 293 | Channel layout : L R 294 | Sampling rate : 48.0 kHz 295 | Frame rate : 46.875 FPS (1024 SPF) 296 | Compression mode : Lossy 297 | Delay relative to video : -80 ms 298 | Title : Conan76 299 | Language : English 300 | Default : No 301 | Forced : No 302 | VENDOR_ID : [0][0][0][0] 303 | 304 | Text #1 305 | ID : 4 306 | Format : D_WEBVTT/SUBTITLES 307 | Codec ID : D_WEBVTT/SUBTITLES 308 | Duration : 23 min 43 s 309 | Title : Arabic 310 | Language : Arabic 311 | Default : Yes 312 | Forced : No 313 | 314 | Text #2 315 | ID : 5 316 | Format : D_WEBVTT/SUBTITLES 317 | Codec ID : D_WEBVTT/SUBTITLES 318 | Duration : 23 min 43 s 319 | Title : Chinese 320 | Language : Chinese 321 | Default : No 322 | Forced : No 323 | 324 | ..... (OTHER 27 SUBTITLE TRACKS) 325 | 326 | ``` 327 | 328 | # 🌟Show Your Support 329 | 330 | - If you find this project useful or interesting, please consider giving it a star on GitHub. It's a simple way to show your support and help others discover the project. 331 | 332 | ![Github Stars](https://img.shields.io/github/stars/aditya76-git/zoro-dl?style=social "Github Stars") 333 | 334 | # 👨‍💻Developement 335 | 336 | Thank you for your interest in contributing to this project! There are several ways you can get involved: 337 | 338 | - **Opening Issues**: If you encounter a bug, have a feature request, or want to suggest an improvement, please open an issue. We appreciate your feedback! 339 | - **Cloning the Project**: To work on the project locally, you can clone the repository by running: 340 | 341 | ```bash 342 | git clone https://github.com/aditya76-git/zoro-dl.git 343 | ``` 344 | 345 | - **Sending Pull Requests**: If you'd like to contribute directly to the codebase, you can fork the repository, make your changes, and then send a pull request. We welcome your contributions! 346 | 347 | # 🤝Contributors 348 | 349 | A Big **Thanks** to those who helped make our project better. 350 | 351 | **Karan Adhikari** 352 | 353 | - GitHub: [@weebzone](https://github.com/weebzone) 354 | 355 | # 🙌🏼Thanks To 356 | 357 | - ZORO 358 | - CONSUMET API - [https://github.com/consumet/api.consumet.org](https://github.com/consumet/api.consumet.org) 359 | 360 | # 💻Authors 361 | 362 | - Copyright © 2023 - [aditya76-git](https://github.com/aditya76-git) / [zoro-dl](https://github.com/aditya76-git/zoro-dl) 363 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | import setuptools 2 | 3 | with open("README.md", "r", encoding="utf-8") as fh: 4 | long_description = fh.read() 5 | 6 | setuptools.setup( 7 | name="zoro_dl", 8 | version="1.0.2", 9 | author="aditya76-git", 10 | author_email="cdr.aditya.76@gmail.com", 11 | description="ZORO-DL - Download DUAL-AUDIO Multi SUBS Anime from ZORO", 12 | long_description=long_description, 13 | long_description_content_type="text/markdown", 14 | url="https://github.com/aditya76-git/zoro-dl", 15 | include_package_data=True, 16 | package_data={'zoro_dl': ['static/*']}, 17 | project_urls={ 18 | "Tracker": "https://github.com/aditya76-git/zoro-dl/issues", 19 | }, 20 | classifiers=[ 21 | "Programming Language :: Python :: 3", 22 | "Operating System :: OS Independent", 23 | ], 24 | install_requires=[ 25 | "requests", "BeautifulSoup4", 26 | ], 27 | packages=setuptools.find_packages(), 28 | python_requires=">=3.6", 29 | ) 30 | -------------------------------------------------------------------------------- /zoro_dl/__init__.py: -------------------------------------------------------------------------------- 1 | from .processor import ZORO 2 | -------------------------------------------------------------------------------- /zoro_dl/anime_api.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | 4 | class AnimeAPI: 5 | """ 6 | A class to interact with the Consumet Anime API (https://consumet.org) for ZORO (Currently AniWatch) and retrieve information about episodes and streams. 7 | 8 | Attributes: 9 | base_url (str): The base Endpoint for Consumet API for ZORO 10 | """ 11 | 12 | def __init__(self): 13 | self.base_url = "https://api.consumet.org/anime/zoro" 14 | 15 | def get_episodes(self, id): 16 | response = requests.get(f"{self.base_url}/info?id={id}").json() 17 | return response.get("episodes", []) 18 | 19 | def get_info(self, id, key): 20 | response = requests.get(f"{self.base_url}/info?id={id}").json() 21 | return response.get(key, "") 22 | 23 | def get_watch_info(self, episode_id): 24 | response = requests.get(f"{self.base_url}/watch?episodeId={episode_id}").json() 25 | return response 26 | -------------------------------------------------------------------------------- /zoro_dl/processor.py: -------------------------------------------------------------------------------- 1 | import requests, uuid, subprocess, os, time 2 | from pathlib import Path 3 | from concurrent.futures import ThreadPoolExecutor 4 | from .utils import ( 5 | extract_zoro_id, 6 | colored_text, 7 | is_sub_dub, 8 | get_language_code, 9 | n_m3u8_dl_path, 10 | get_video_resolution, 11 | get_readable_time, 12 | ) 13 | from .anime_api import AnimeAPI 14 | 15 | 16 | def download_file(url, save_path): 17 | """ 18 | Download a file from a given URL and save it to the specified path. 19 | 20 | This function performs an HTTP GET request to download the file from the provided URL. 21 | The file is saved to the specified local path. 22 | 23 | Args: 24 | url (str): The URL of the file to download. 25 | save_path (str): The local path where the downloaded file should be saved. 26 | """ 27 | response = requests.get(url, stream=True) 28 | if response.status_code == 200: 29 | with open(save_path, "wb") as file: 30 | for chunk in response.iter_content(chunk_size=8192): 31 | file.write(chunk) 32 | else: 33 | print("Failed to download the file.") 34 | 35 | 36 | class ZORO: 37 | """ 38 | A class to handle Processing and Downloading anime episodes from ZORO. 39 | """ 40 | 41 | def __init__( 42 | self, 43 | url, 44 | season="1", 45 | episode=None, 46 | resolution="1080p", 47 | dl_type="both", 48 | group_tag="NOGRP", 49 | ): 50 | """ 51 | Initialize the ZORO class with required parameters. 52 | 53 | Args: 54 | url (str): The URL from ZORO that needs to be processed. 55 | season (str, optional): The season which will be added to the filename. Defaults to "1". 56 | episode (str or None, optional): Episodes to be downloaded. Can be a range of episodes (e.g., "1-5"), a single episode (e.g., "10"), or None to download the complete season. Defaults to None. 57 | resolution (str, optional): The resolution for downloading (e.g., "1080p"). Defaults to "1080p". 58 | dl_type (str, optional): Download type: "sub", "dub", or "both". Defaults to "both". "sub" will download in JPN Audio with All Available Subtitles, "dub" will download in ENG Audio with All Available Subtitles and "both" with download in JPN-ENG with All Available Subtitles. Make sure to verify the series which you want to DL in "both",If it has same duration in both sub and dub player on ZORO, Only then it will work or else you will have audio sync issues 59 | group_tag (str, optional): Custom group tag for metadata. Defaults to "Conan76". 60 | """ 61 | self.zoro_url = url 62 | self.season = season 63 | self.requested_episode = episode 64 | self.resolution = resolution.replace("p", "") 65 | self.dl_type = dl_type 66 | self.zoro_id = extract_zoro_id(self.zoro_url) 67 | self.end_code = str(uuid.uuid4()) 68 | self.custom_group_tag = group_tag 69 | self.separator = "-" * 70 70 | 71 | self.api = AnimeAPI() 72 | self.episodes = self.api.get_episodes(self.zoro_id) 73 | self.setup_episode_start_end() 74 | 75 | def setup_episode_start_end(self): 76 | """ 77 | Set up the starting and ending episode numbers based on the requested episode range. 78 | 79 | If the requested episode is None, the method sets the episode range to cover all available episodes. 80 | If the requested episode is specified as a range (e.g., "1-5"), the method extracts the starting and ending 81 | episode numbers from the range. 82 | If the requested episode is a single number, it's set as the starting episode, and the ending episode is set to 0. 83 | 84 | This method populates the 'episode_start' and 'episode_end' attributes accordingly. 85 | """ 86 | 87 | if self.requested_episode is None: 88 | self.episode_start = 1 89 | self.episode_end = int(len(self.episodes)) 90 | elif "-" in self.requested_episode: 91 | self.episode_start, self.episode_end = map( 92 | int, self.requested_episode.split("-") 93 | ) 94 | else: 95 | self.episode_start = int(self.requested_episode) 96 | self.episode_end = 0 97 | 98 | def get_stream_data(self, episode_number): 99 | """ 100 | Retrieve streaming and subtitle data for a specific episode. 101 | 102 | This method extracts the streams and subtitles for the specified episode. 103 | It also constructs the complete data dictionary containing various episode details. 104 | 105 | Args: 106 | episode_number (int): The episode number for which to retrieve data. 107 | 108 | Returns: 109 | None 110 | """ 111 | 112 | print(colored_text("EXTRACTING STREAMS", "green")) 113 | 114 | episode_index = int(episode_number) - 1 115 | episode = self.episodes[episode_index] 116 | episode_id = episode["url"].split("?ep=")[-1] 117 | find_is_sub_dub = is_sub_dub(episode_id) 118 | title_season = ( 119 | "0{}".format(self.season) 120 | if int(self.season) < 10 121 | else "{}".format(self.season) 122 | ) 123 | title_episode = ( 124 | "0{}".format(episode_number) 125 | if int(episode_number) < 10 126 | else "{}".format(episode_number) 127 | ) 128 | 129 | watch_id = episode["id"].split("$episode")[0] 130 | watch_id_list = [] 131 | 132 | if self.dl_type == "both" and find_is_sub_dub == "both": 133 | watch_id_list.extend( 134 | [ 135 | f"{watch_id}$episode${episode_id}$sub", 136 | f"{watch_id}$episode${episode_id}$dub", 137 | ] 138 | ) 139 | 140 | elif self.dl_type == "dub": 141 | watch_id_list.extend([f"{watch_id}$episode${episode_id}$dub"]) 142 | 143 | elif self.dl_type == "sub": 144 | watch_id_list.extend([f"{watch_id}$episode${episode_id}$sub"]) 145 | 146 | sources = [] 147 | subtitles = [] 148 | complete_data = { 149 | "sources": sources, 150 | "subtitles": subtitles, 151 | "malID": self.api.get_info(self.zoro_id, "malID"), 152 | "title": self.api.get_info(self.zoro_id, "title"), 153 | "episodeTitle": episode["title"], 154 | "season": int(self.season), 155 | "episode": episode_number, 156 | "name": f"{self.api.get_info(self.zoro_id, 'title')} S{title_season}E{title_episode} - {episode['title']}", 157 | } 158 | 159 | # Using ThreadPoolExecutor for fetching watch and subtitle information concurrently 160 | with ThreadPoolExecutor(max_workers=2) as executor: 161 | executor.submit(self.fetch_video_sources, watch_id_list, sources) 162 | 163 | if self.dl_type == "both" or self.dl_type == "sub": 164 | 165 | executor.submit( 166 | self.fetch_subtitles_sources, watch_id_list[0], subtitles 167 | ) 168 | 169 | self.complete_data = complete_data 170 | self.video_sources = complete_data["sources"] 171 | self.subtitle_sources = complete_data["subtitles"] 172 | 173 | self.lang_file_name_data = ( 174 | "JPN-ENG" 175 | if len(self.video_sources) > 1 176 | else ("JPN" if self.video_sources[0]["subOrdub"] == "sub" else "ENG") 177 | ) 178 | 179 | self.subs_file_name_data = ( 180 | "MULTI-SUBS" if len(self.subtitle_sources) > 1 else ("ENG-SUBS" if len(self.subtitle_sources) == 1 else "NO-SUBS") 181 | ) 182 | 183 | def fetch_video_sources(self, watch_id_list, sources): 184 | """ 185 | Fetch video sources for the specified watch IDs and store them in the 'sources' list. 186 | 187 | This method queries the AnimeAPI for watch information using the provided watch IDs. 188 | It extracts the URL of the first video source from Consumet API and determines whether it is a subtitle or dub source. 189 | The retrieved video source details are then appended to the 'sources' list. 190 | 191 | Args: 192 | watch_id_list (list): List of watch IDs to fetch video sources for. 193 | sources (list): List to store the fetched video source dictionaries. 194 | 195 | Returns: 196 | None 197 | """ 198 | for wID in watch_id_list: 199 | watch_info = self.api.get_watch_info(wID) 200 | stream_dict = { 201 | "url": watch_info["sources"][0]["url"], 202 | "subOrdub": wID.split("$")[-1], 203 | } 204 | sources.append(stream_dict) 205 | 206 | def fetch_subtitles_sources(self, watch_id, subtitles): 207 | """ 208 | Fetch subtitle sources for the specified watch ID and store them in the 'subtitles' list. 209 | 210 | This method queries the AnimeAPI for subtitle information using the provided watch ID.It extracts subtitle details such as language, language code, 211 | and URL for each available subtitle track. The retrieved subtitle details are then appended to the 'subtitles' list. 212 | 213 | Args: 214 | watch_id (str): Watch ID to fetch subtitle sources for. 215 | subtitles (list): List to store the fetched subtitle dictionaries. 216 | 217 | Returns: 218 | None 219 | """ 220 | subtitle_info = self.api.get_watch_info(watch_id.replace("dub", "sub")) 221 | subtitles_dict = [ 222 | { 223 | "lang": sub_data["lang"], 224 | "lang_639_2": get_language_code(sub_data["lang"].split(" - ")[0]), 225 | "url": sub_data["url"], 226 | } 227 | for sub_data in subtitle_info["subtitles"] 228 | if sub_data["lang"] != "Thumbnails" 229 | ] 230 | subtitles.extend(subtitles_dict) 231 | 232 | def download_video(self): 233 | """ 234 | Download video sources for each stream in the 'video_sources' list. 235 | 236 | This method iterates through each video source in the 'video_sources' list. 237 | It constructs a command to invoke the 'n_m3u8_dl' tool with appropriate parameters 238 | to download the video stream. The downloaded file is saved with a name based on 239 | the MAL ID, sub/dub information, and a unique code. 240 | 241 | Returns: 242 | None 243 | """ 244 | for data in self.video_sources: 245 | 246 | print( 247 | colored_text("[+] DOWNLOADING", "green"), 248 | colored_text("JPN" if data["subOrdub"] == "sub" else "ENG", "blue"), 249 | colored_text("VIDEO SOURCE", "green"), 250 | ) 251 | 252 | cmd = [ 253 | n_m3u8_dl_path, 254 | data["url"], 255 | "-sv", 256 | "res={}".format(self.resolution), 257 | "--save-name", 258 | "{}_{}_{}".format( 259 | self.complete_data["malID"], data["subOrdub"], self.end_code 260 | ), 261 | # '--save-dir', 262 | # '{} - S{}'.format(self.complete_data['malID'] , self.complete_data['season']) 263 | ] 264 | self.out_folder_structure = "{} - S{}".format( 265 | self.complete_data["title"], self.complete_data["season"] 266 | ) 267 | subprocess.check_call(cmd) 268 | 269 | def download_subs(self): 270 | """ 271 | Download subtitle files for each subtitle source in the 'subtitle_sources' list. 272 | 273 | This method iterates through each subtitle source in the 'subtitle_sources' list. 274 | It invokes the 'download_file' function to download the subtitle file from the provided URL. 275 | The downloaded subtitle file is saved with a name based on the language code and a unique code. 276 | 277 | Returns: 278 | None 279 | """ 280 | 281 | print( 282 | colored_text( 283 | "[+] DOWNLOADING SUBTITLES (TOTAL - {} FOUND)".format( 284 | len(self.subtitle_sources) 285 | ), 286 | "green", 287 | ) 288 | ) 289 | 290 | for subs in self.subtitle_sources: 291 | download_file( 292 | subs["url"], 293 | "subtitle_{}_{}.vtt".format(subs["lang_639_2"], self.end_code), 294 | ) 295 | 296 | def mux_files(self): 297 | """ 298 | Mux video and subtitle files into a single MKV file using FFmpeg. 299 | 300 | This method constructs FFmpeg commands to mux video and subtitle files into a single MKV file. 301 | It maps video, audio, and subtitle streams accordingly. Metadata such as language and titles 302 | are added to the resulting MKV file. The final MKV file is named based on various parameters, 303 | including the custom group tag, video and subtitle language, and resolution. 304 | 305 | Returns: 306 | str: The filename of the resulting muxed MKV file. 307 | """ 308 | print(colored_text("[+] MUXING FILES", "green")) 309 | 310 | ffmpeg_opts = [ 311 | "ffmpeg", 312 | "-y", 313 | ] 314 | 315 | # Adding Video Files 316 | 317 | for source in self.complete_data["sources"]: 318 | video_filename = f"{self.complete_data['malID']}_{source['subOrdub']}_{self.end_code}.mp4" 319 | ffmpeg_opts.extend(["-i", video_filename]) 320 | 321 | # Adding Subtitles Files 322 | 323 | if len(self.subtitle_sources) >= 1: 324 | for source in self.subtitle_sources: 325 | ffmpeg_opts.extend( 326 | [ 327 | "-i", 328 | "subtitle_{}_{}.vtt".format( 329 | source["lang_639_2"], self.end_code 330 | ), 331 | ] 332 | ) 333 | 334 | # Mapping 1st Video can be JPN if dl_type == sub or ENG if dl_type == dub 335 | ffmpeg_opts.extend(["-map", "0:v:0"]) 336 | 337 | # Mapping Audio from the 1st Video Source. It can be JPN or ENG acc to the dl_type 338 | ffmpeg_opts.extend(["-map", "0:a:0"]) 339 | 340 | # Mapping Audio from the 2nd Video Source Only If dl_type == both only since then it will have the second Video Source 341 | 342 | if self.dl_type == "both": 343 | 344 | ffmpeg_opts.extend(["-map", "1:a:0"]) 345 | 346 | # Mapping Subtitle Source only if dl_type == both 347 | 348 | if len(self.subtitle_sources) >= 1: 349 | for i in range(len(self.subtitle_sources)): 350 | ffmpeg_opts.extend(["-map", f"{len(self.video_sources)+i}:s:0"]) 351 | 352 | # Adding Language Metadata of Subtitles only if dl_type == both 353 | 354 | if len(self.subtitle_sources) >= 1: 355 | for i in range(len(self.subtitle_sources)): 356 | ffmpeg_opts.extend( 357 | [ 358 | "-metadata:s:s:{0}".format(i), 359 | f"language={self.subtitle_sources[i]['lang_639_2']}", 360 | ] 361 | ) 362 | 363 | # Adding Audio Metadata 364 | 365 | language_value = {"sub": "jpn", "dub": "eng", "both": "jpn"}.get( 366 | self.dl_type, "" 367 | ) 368 | 369 | ffmpeg_opts.extend(["-metadata:s:a:0", f"language={language_value}"]) 370 | 371 | if self.dl_type == "both": 372 | ffmpeg_opts.extend(["-metadata:s:a:1", "language=eng"]) 373 | 374 | # Adding Encoded by, Audio Title and Video Title Metadata 375 | 376 | ffmpeg_opts.extend(["-metadata", f"encoded_by={self.custom_group_tag}"]) 377 | ffmpeg_opts.extend(["-metadata:s:a", f"title={self.custom_group_tag}"]) 378 | ffmpeg_opts.extend( 379 | ["-metadata:s:v", f"title={self.custom_group_tag} - Sourced from ZORO"] 380 | ) 381 | 382 | # Adding Subtitle Title metadata 383 | 384 | if len(self.subtitle_sources) >= 1: 385 | for i in range(len(self.subtitle_sources)): 386 | ffmpeg_opts.extend( 387 | [ 388 | "-metadata:s:s:{0}".format(i), 389 | f"title={self.subtitle_sources[i]['lang']}", 390 | ] 391 | ) 392 | 393 | out_name = "{}.mkv".format(self.end_code) 394 | 395 | ffmpeg_opts.extend(["-c", "copy", out_name]) 396 | 397 | subprocess.check_call(ffmpeg_opts) 398 | 399 | _, height = get_video_resolution(out_name) 400 | 401 | out_file_name = ( 402 | "[{gr}] {name} [{resolution}p] [WEB] [{audio}]{subs}.mkv".format( 403 | gr=self.custom_group_tag, 404 | name=self.complete_data["name"], 405 | resolution=height, 406 | audio=self.lang_file_name_data, 407 | subs=" [{}]".format(self.subs_file_name_data) if self.subs_file_name_data != "NO-SUBS" else "", 408 | ) 409 | ) 410 | 411 | os.rename(out_name, out_file_name) 412 | 413 | return out_file_name 414 | 415 | def clean_up(self): 416 | """ 417 | Clean up temporary video and subtitle files generated during the download process. 418 | 419 | This method removes the temporary video and subtitle files that were downloaded during 420 | the process. It iterates through the 'video_sources' list and 'subtitle_sources' list, 421 | and deletes the corresponding video and subtitle files. 422 | 423 | Returns: 424 | None 425 | """ 426 | 427 | print(colored_text("[+] Cleaning Temp Video Files", "green")) 428 | 429 | for data in self.video_sources: 430 | video_filename = "{}_{}_{}.mp4".format( 431 | self.complete_data["malID"], data["subOrdub"], self.end_code 432 | ) 433 | self.remove_file(video_filename) 434 | 435 | print(colored_text("[+] Cleaning Temp Subtitle Files", "green")) 436 | 437 | for data in self.subtitle_sources: 438 | subtitle_filename = "subtitle_{}_{}.vtt".format( 439 | data["lang_639_2"], self.end_code 440 | ) 441 | self.remove_file(subtitle_filename) 442 | 443 | def remove_file(self, file_name): 444 | """ 445 | Remove a file from the filesystem if it exists. 446 | 447 | Args: 448 | file_name (str): The name of the file to be removed. 449 | 450 | Returns: 451 | None 452 | """ 453 | try: 454 | Path(file_name).unlink() 455 | except FileNotFoundError: 456 | pass 457 | 458 | def processor(self, episode_number): 459 | """ 460 | Process a single episode for downloading, including streams extraction, downloading video, subtitles, muxing files, and cleanup. 461 | 462 | This method manages the entire download process for a specified episode. 463 | It first retrieves stream data using the 'get_stream_data' method and processes any exceptions. 464 | Then, it attempts to download the video using the 'download_video' method and handles any exceptions. 465 | If multiple subtitles are available, it tries to download subtitles using the 'download_subs' method. 466 | After downloading, it attempts to mux the downloaded video and subtitles using the 'mux_files' method. 467 | Finally, it prints completion information and cleans up temporary files using the 'clean_up' method. 468 | 469 | Args: 470 | episode_number (int): The episode number to be processed. 471 | 472 | Returns: 473 | None 474 | """ 475 | 476 | process_start = time.time() 477 | try: 478 | self.get_stream_data(episode_number) 479 | except Exception as e: 480 | print(colored_text("[+] ERROR - Getting Streams", "red")) 481 | print(colored_text("[+] ERROR - {}".format(e), "red")) 482 | return 483 | 484 | if hasattr(self, "complete_data"): # Check if complete_data exists 485 | print( 486 | colored_text("[+] DOWNLOADING", "green"), 487 | colored_text("- {}".format(self.complete_data["name"]), "blue"), 488 | colored_text("- {}p".format(self.resolution), "yellow"), 489 | ) 490 | else: 491 | print(colored_text("[+] ERROR - Missing complete_data", "red")) 492 | return 493 | 494 | try: 495 | self.download_video() 496 | except Exception as e: 497 | print(colored_text("[+] ERROR - Downloading Video", "red")) 498 | print(colored_text("[+] ERROR - {}".format(e), "red")) 499 | 500 | if len(self.subtitle_sources) >= 1: 501 | try: 502 | self.download_subs() 503 | except Exception as e: 504 | print(colored_text("[+] ERROR - Downloading Subs", "red")) 505 | print(colored_text("[+] ERROR - {}".format(e), "red")) 506 | 507 | try: 508 | final_muxed_path = self.mux_files() 509 | print( 510 | colored_text( 511 | f"[+] TASK COMPLETED IN {get_readable_time(time.time() - process_start)}", 512 | "yellow", 513 | ) 514 | ) 515 | print(colored_text(f"[+] FILE {final_muxed_path}", "blue")) 516 | except Exception as e: 517 | print(colored_text("[+] ERROR - Muxing Files", "red")) 518 | print(colored_text("[+] ERROR - {}".format(e), "red")) 519 | 520 | self.clean_up() 521 | 522 | def start_dl(self): 523 | """ 524 | Start the download process for episodes based on the specified download type and episode range. 525 | 526 | This method initiates the download process according to the specified 'dl_type' and episode range. 527 | It checks if the 'dl_type' is valid and provides usage instructions for invalid types. 528 | If only a single episode is requested, the 'processor' method is called for that episode. 529 | If a range of episodes is requested, the 'processor' method is called for each episode within the range. 530 | 531 | Returns: 532 | None 533 | """ 534 | 535 | if self.dl_type not in ["sub", "dub", "both"]: 536 | 537 | print(colored_text("[+] ERROR - Invalid dl_type", "red")) 538 | print( 539 | colored_text( 540 | "[+] dl_type = dub - TO DOWNLOAD IN ENG AUDIO WITH NO SUBS", "green" 541 | ) 542 | ) 543 | print( 544 | colored_text( 545 | "[+] dl_type = sub - TO DOWNLOAD IN JPN AUDIO WITH ALL AVAILABLE SUBS", 546 | "green", 547 | ) 548 | ) 549 | print( 550 | colored_text( 551 | "[+] dl_type = both - TO DOWNLOAD IN JPN-ENG AUDIO WITH ALL AVAILABLE SUBS", 552 | "green", 553 | ) 554 | ) 555 | return 556 | 557 | # If Single Episode Requested 558 | if self.episode_end == 0: 559 | print(self.separator) 560 | self.processor(self.episode_start) 561 | 562 | # If In Range Episodes Requested 563 | for ep_index in range(self.episode_start, (self.episode_end + 1)): 564 | print(self.separator) 565 | print(f"Processing episode {ep_index}...") 566 | self.processor(ep_index) 567 | -------------------------------------------------------------------------------- /zoro_dl/static/N_m3u8DL-RE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya76-git/zoro-dl/2a115cb7a6cfc2ecc9b33275e322c9539def85db/zoro_dl/static/N_m3u8DL-RE -------------------------------------------------------------------------------- /zoro_dl/static/N_m3u8DL-RE.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya76-git/zoro-dl/2a115cb7a6cfc2ecc9b33275e322c9539def85db/zoro_dl/static/N_m3u8DL-RE.exe -------------------------------------------------------------------------------- /zoro_dl/static/languages_info.json: -------------------------------------------------------------------------------- 1 | {"aar":{"639-1":"aa","639-2":"aar","de":["Danakil-Sprache"],"en":["Afar"],"fr":["afar"],"wikiUrl":"https://en.wikipedia.org/wiki/Afar_language"},"abk":{"639-1":"ab","639-2":"abk","de":["Abchasisch"],"en":["Abkhazian"],"fr":["abkhaze"],"wikiUrl":"https://en.wikipedia.org/wiki/Abkhazian_language"},"ace":{"639-2":"ace","de":["Aceh-Sprache"],"en":["Achinese"],"fr":["aceh"],"wikiUrl":"https://en.wikipedia.org/wiki/Achinese_language"},"ach":{"639-2":"ach","de":["Acholi-Sprache"],"en":["Acoli"],"fr":["acoli"],"wikiUrl":"https://en.wikipedia.org/wiki/Acoli_language"},"ada":{"639-2":"ada","de":["Adangme-Sprache"],"en":["Adangme"],"fr":["adangme"],"wikiUrl":"https://en.wikipedia.org/wiki/Adangme_language"},"ady":{"639-2":"ady","de":["Adygisch"],"en":["Adyghe","Adygei"],"fr":["adyghé"],"wikiUrl":"https://en.wikipedia.org/wiki/Adyghe_language"},"afa":{"639-2":"afa","de":["Hamitosemitische Sprachen (Andere)"],"en":["Afro-Asiatic languages"],"fr":["afro-asiatiques, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Afro-Asiatic_languages"},"afh":{"639-2":"afh","de":["Afrihili"],"en":["Afrihili"],"fr":["afrihili"],"wikiUrl":"https://en.wikipedia.org/wiki/Afrihili_language"},"afr":{"639-1":"af","639-2":"afr","de":["Afrikaans"],"en":["Afrikaans"],"fr":["afrikaans"],"wikiUrl":"https://en.wikipedia.org/wiki/Afrikaans_language"},"ain":{"639-2":"ain","de":["Ainu-Sprache"],"en":["Ainu"],"fr":["aïnou"],"wikiUrl":"https://en.wikipedia.org/wiki/Ainu_language_(Japan)"},"aka":{"639-1":"ak","639-2":"aka","de":["Akan-Sprache"],"en":["Akan"],"fr":["akan"],"wikiUrl":"https://en.wikipedia.org/wiki/Akan_language"},"akk":{"639-2":"akk","de":["Akkadisch"],"en":["Akkadian"],"fr":["akkadien"],"wikiUrl":"https://en.wikipedia.org/wiki/Akkadian_language"},"alb":{"639-1":"sq","639-2":"sqi","639-2/B":"alb","de":["Albanisch"],"en":["Albanian"],"fr":["albanais"],"wikiUrl":"https://en.wikipedia.org/wiki/Albanian_languages"},"ale":{"639-2":"ale","de":["Aleutisch"],"en":["Aleut"],"fr":["aléoute"],"wikiUrl":"https://en.wikipedia.org/wiki/Aleut_language"},"alg":{"639-2":"alg","de":["Algonkin-Sprachen (Andere)"],"en":["Algonquian languages"],"fr":["algonquines, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Algonquian_languages"},"alt":{"639-2":"alt","de":["Altaisch"],"en":["Southern Altai"],"fr":["altai du Sud"],"wikiUrl":"https://en.wikipedia.org/wiki/Southern_Altai_language"},"amh":{"639-1":"am","639-2":"amh","de":["Amharisch"],"en":["Amharic"],"fr":["amharique"],"wikiUrl":"https://en.wikipedia.org/wiki/Amharic_language"},"ang":{"639-2":"ang","de":["Altenglisch"],"en":["English, Old (ca.450-1100)"],"fr":["anglo-saxon (ca.450-1100)"],"wikiUrl":"https://en.wikipedia.org/wiki/Old_English_language"},"anp":{"639-2":"anp","de":["Anga-Sprache"],"en":["Angika"],"fr":["angika"],"wikiUrl":"https://en.wikipedia.org/wiki/Angika_language"},"apa":{"639-2":"apa","de":["Apachen-Sprachen"],"en":["Apache languages"],"fr":["apaches, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Apache_languages"},"ara":{"639-1":"ar","639-2":"ara","de":["Arabisch"],"en":["Arabic"],"fr":["arabe"],"wikiUrl":"https://en.wikipedia.org/wiki/Arabic_language"},"arc":{"639-2":"arc","de":["Aramäisch"],"en":["Official Aramaic (700-300 BCE)","Imperial Aramaic (700-300 BCE)"],"fr":["araméen d'empire (700-300 BCE)"],"wikiUrl":"https://en.wikipedia.org/wiki/Official_Aramaic_language"},"arg":{"639-1":"an","639-2":"arg","de":["Aragonesisch"],"en":["Aragonese"],"fr":["aragonais"],"wikiUrl":"https://en.wikipedia.org/wiki/Aragonese_language"},"arm":{"639-1":"hy","639-2":"hye","639-2/B":"arm","de":["Armenisch"],"en":["Armenian"],"fr":["arménien"],"wikiUrl":"https://en.wikipedia.org/wiki/Armenian_language"},"arn":{"639-2":"arn","de":["Arauka-Sprachen"],"en":["Mapudungun","Mapuche"],"fr":["mapudungun","mapuche","mapuce"],"wikiUrl":"https://en.wikipedia.org/wiki/Mapudungun_language"},"arp":{"639-2":"arp","de":["Arapaho-Sprache"],"en":["Arapaho"],"fr":["arapaho"],"wikiUrl":"https://en.wikipedia.org/wiki/Arapaho_language"},"art":{"639-2":"art","de":["Kunstsprachen (Andere)"],"en":["Artificial languages"],"fr":["artificielles, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Artificial_languages"},"arw":{"639-2":"arw","de":["Arawak-Sprachen"],"en":["Arawak"],"fr":["arawak"],"wikiUrl":"https://en.wikipedia.org/wiki/Arawak_language"},"asm":{"639-1":"as","639-2":"asm","de":["Assamesisch"],"en":["Assamese"],"fr":["assamais"],"wikiUrl":"https://en.wikipedia.org/wiki/Assamese_language"},"ast":{"639-2":"ast","de":["Asturisch"],"en":["Asturian","Bable","Leonese","Asturleonese"],"fr":["asturien","bable","léonais","asturoléonais"],"wikiUrl":"https://en.wikipedia.org/wiki/Asturian_language"},"ath":{"639-2":"ath","de":["Athapaskische Sprachen (Andere)"],"en":["Athapascan languages"],"fr":["athapascanes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Athapascan_languages"},"aus":{"639-2":"aus","de":["Australische Sprachen"],"en":["Australian languages"],"fr":["australiennes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Australian_languages"},"ava":{"639-1":"av","639-2":"ava","de":["Awarisch"],"en":["Avaric"],"fr":["avar"],"wikiUrl":"https://en.wikipedia.org/wiki/Avaric_language"},"ave":{"639-1":"ae","639-2":"ave","de":["Avestisch"],"en":["Avestan"],"fr":["avestique"],"wikiUrl":"https://en.wikipedia.org/wiki/Avestan_language"},"awa":{"639-2":"awa","de":["Awadhi"],"en":["Awadhi"],"fr":["awadhi"],"wikiUrl":"https://en.wikipedia.org/wiki/Awadhi_language"},"aym":{"639-1":"ay","639-2":"aym","de":["Aymará-Sprache"],"en":["Aymara"],"fr":["aymara"],"wikiUrl":"https://en.wikipedia.org/wiki/Aymara_language"},"aze":{"639-1":"az","639-2":"aze","de":["Aserbeidschanisch"],"en":["Azerbaijani"],"fr":["azéri"],"wikiUrl":"https://en.wikipedia.org/wiki/Azerbaijani_language"},"bad":{"639-2":"bad","de":["Banda-Sprachen (Ubangi-Sprachen)"],"en":["Banda languages"],"fr":["banda, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Banda_languages"},"bai":{"639-2":"bai","de":["Bamileke-Sprachen"],"en":["Bamileke languages"],"fr":["bamiléké, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Bamileke_languages"},"bak":{"639-1":"ba","639-2":"bak","de":["Baschkirisch"],"en":["Bashkir"],"fr":["bachkir"],"wikiUrl":"https://en.wikipedia.org/wiki/Bashkir_language"},"bal":{"639-2":"bal","de":["Belutschisch"],"en":["Baluchi"],"fr":["baloutchi"],"wikiUrl":"https://en.wikipedia.org/wiki/Baluchi_language"},"bam":{"639-1":"bm","639-2":"bam","de":["Bambara-Sprache"],"en":["Bambara"],"fr":["bambara"],"wikiUrl":"https://en.wikipedia.org/wiki/Bambara_language"},"ban":{"639-2":"ban","de":["Balinesisch"],"en":["Balinese"],"fr":["balinais"],"wikiUrl":"https://en.wikipedia.org/wiki/Balinese_language"},"baq":{"639-1":"eu","639-2":"eus","639-2/B":"baq","de":["Baskisch"],"en":["Basque"],"fr":["basque"],"wikiUrl":"https://en.wikipedia.org/wiki/Basque_language"},"bas":{"639-2":"bas","de":["Basaa-Sprache"],"en":["Basa"],"fr":["basa"],"wikiUrl":"https://en.wikipedia.org/wiki/Basa_language_(Cameroon)"},"bat":{"639-2":"bat","de":["Baltische Sprachen (Andere)"],"en":["Baltic languages"],"fr":["baltes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Baltic_languages"},"bej":{"639-2":"bej","de":["Bedauye"],"en":["Beja","Bedawiyet"],"fr":["bedja"],"wikiUrl":"https://en.wikipedia.org/wiki/Beja_language"},"bel":{"639-1":"be","639-2":"bel","de":["Weißrussisch"],"en":["Belarusian"],"fr":["biélorusse"],"wikiUrl":"https://en.wikipedia.org/wiki/Belarusian_language"},"bem":{"639-2":"bem","de":["Bemba-Sprache"],"en":["Bemba"],"fr":["bemba"],"wikiUrl":"https://en.wikipedia.org/wiki/Bemba_language_(Zambia)"},"ben":{"639-1":"bn","639-2":"ben","de":["Bengali"],"en":["Bengali"],"fr":["bengali"],"wikiUrl":"https://en.wikipedia.org/wiki/Bengali_language"},"ber":{"639-2":"ber","de":["Berbersprachen (Andere)"],"en":["Berber languages"],"fr":["berbères, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Berber_languages"},"bho":{"639-2":"bho","de":["Bhojpuri"],"en":["Bhojpuri"],"fr":["bhojpuri"],"wikiUrl":"https://en.wikipedia.org/wiki/Bhojpuri_language"},"bih":{"639-1":"bh","639-2":"bih","de":["Bihari (Andere)"],"en":["Bihari languages"],"fr":["langues biharis"],"wikiUrl":"https://en.wikipedia.org/wiki/Bihari_languages"},"bik":{"639-2":"bik","de":["Bikol-Sprache"],"en":["Bikol"],"fr":["bikol"],"wikiUrl":"https://en.wikipedia.org/wiki/Bikol_language"},"bin":{"639-2":"bin","de":["Edo-Sprache"],"en":["Bini","Edo"],"fr":["bini","edo"],"wikiUrl":"https://en.wikipedia.org/wiki/Bini_language"},"bis":{"639-1":"bi","639-2":"bis","de":["Beach-la-mar"],"en":["Bislama"],"fr":["bichlamar"],"wikiUrl":"https://en.wikipedia.org/wiki/Bislama_language"},"bla":{"639-2":"bla","de":["Blackfoot-Sprache"],"en":["Siksika"],"fr":["blackfoot"],"wikiUrl":"https://en.wikipedia.org/wiki/Siksika_language"},"bnt":{"639-2":"bnt","de":["Bantusprachen (Andere)"],"en":["Bantu languages"],"fr":["bantou, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Bantu_languages"},"bod":{"639-1":"bo","639-2":"bod","639-2/B":"tib","de":["Tibetisch"],"en":["Tibetan"],"fr":["tibétain"],"wikiUrl":"https://en.wikipedia.org/wiki/Standard_Tibetan"},"bos":{"639-1":"bs","639-2":"bos","de":["Bosnisch"],"en":["Bosnian"],"fr":["bosniaque"],"wikiUrl":"https://en.wikipedia.org/wiki/Bosnian_language"},"bra":{"639-2":"bra","de":["Braj-Bhakha"],"en":["Braj"],"fr":["braj"],"wikiUrl":"https://en.wikipedia.org/wiki/Braj_language"},"bre":{"639-1":"br","639-2":"bre","de":["Bretonisch"],"en":["Breton"],"fr":["breton"],"wikiUrl":"https://en.wikipedia.org/wiki/Breton_language"},"btk":{"639-2":"btk","de":["Batak-Sprache"],"en":["Batak languages"],"fr":["batak, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Batak_languages"},"bua":{"639-2":"bua","de":["Burjatisch"],"en":["Buriat"],"fr":["bouriate"],"wikiUrl":"https://en.wikipedia.org/wiki/Buriat_language"},"bug":{"639-2":"bug","de":["Bugi-Sprache"],"en":["Buginese"],"fr":["bugi"],"wikiUrl":"https://en.wikipedia.org/wiki/Buginese_language"},"bul":{"639-1":"bg","639-2":"bul","de":["Bulgarisch"],"en":["Bulgarian"],"fr":["bulgare"],"wikiUrl":"https://en.wikipedia.org/wiki/Bulgarian_language"},"bur":{"639-1":"my","639-2":"mya","639-2/B":"bur","de":["Birmanisch"],"en":["Burmese"],"fr":["birman"],"wikiUrl":"https://en.wikipedia.org/wiki/Burmese_language"},"byn":{"639-2":"byn","de":["Bilin-Sprache"],"en":["Blin","Bilin"],"fr":["blin","bilen"],"wikiUrl":"https://en.wikipedia.org/wiki/Bilin_language"},"cad":{"639-2":"cad","de":["Caddo-Sprachen"],"en":["Caddo"],"fr":["caddo"],"wikiUrl":"https://en.wikipedia.org/wiki/Caddo_language"},"cai":{"639-2":"cai","de":["Indianersprachen, Zentralamerika (Andere)"],"en":["Central American Indian languages"],"fr":["amérindiennes de l'Amérique centrale, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Central_American_Indian_languages"},"car":{"639-2":"car","de":["Karibische Sprachen"],"en":["Galibi Carib"],"fr":["karib","galibi","carib"],"wikiUrl":"https://en.wikipedia.org/wiki/Galibi_Carib_language"},"cat":{"639-1":"ca","639-2":"cat","de":["Katalanisch"],"en":["Catalan","Valencian"],"fr":["catalan","valencien"],"wikiUrl":"https://en.wikipedia.org/wiki/Catalan_language"},"cau":{"639-2":"cau","de":["Kaukasische Sprachen (Andere)"],"en":["Caucasian languages"],"fr":["caucasiennes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Caucasian_languages"},"ceb":{"639-2":"ceb","de":["Cebuano"],"en":["Cebuano"],"fr":["cebuano"],"wikiUrl":"https://en.wikipedia.org/wiki/Cebuano_language"},"cel":{"639-2":"cel","de":["Keltische Sprachen (Andere)"],"en":["Celtic languages"],"fr":["celtiques, langues","celtes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Celtic_languages"},"ces":{"639-1":"cs","639-2":"ces","639-2/B":"cze","de":["Tschechisch"],"en":["Czech"],"fr":["tchèque"],"wikiUrl":"https://en.wikipedia.org/wiki/Czech_language"},"cha":{"639-1":"ch","639-2":"cha","de":["Chamorro-Sprache"],"en":["Chamorro"],"fr":["chamorro"],"wikiUrl":"https://en.wikipedia.org/wiki/Chamorro_language"},"chb":{"639-2":"chb","de":["Chibcha-Sprachen"],"en":["Chibcha"],"fr":["chibcha"],"wikiUrl":"https://en.wikipedia.org/wiki/Chibcha_language"},"che":{"639-1":"ce","639-2":"che","de":["Tschetschenisch"],"en":["Chechen"],"fr":["tchétchène"],"wikiUrl":"https://en.wikipedia.org/wiki/Chechen_language"},"chg":{"639-2":"chg","de":["Tschagataisch"],"en":["Chagatai"],"fr":["djaghataï"],"wikiUrl":"https://en.wikipedia.org/wiki/Chagatai_language"},"chi":{"639-1":"zh","639-2":"zho","639-2/B":"chi","de":["Chinesisch"],"en":["Chinese"],"fr":["chinois"],"wikiUrl":"https://en.wikipedia.org/wiki/Chinese_language"},"chk":{"639-2":"chk","de":["Trukesisch"],"en":["Chuukese"],"fr":["chuuk"],"wikiUrl":"https://en.wikipedia.org/wiki/Chuukese_language"},"chm":{"639-2":"chm","de":["Tscheremissisch"],"en":["Mari"],"fr":["mari"],"wikiUrl":"https://en.wikipedia.org/wiki/Mari_language_(Russia)"},"chn":{"639-2":"chn","de":["Chinook-Jargon"],"en":["Chinook jargon"],"fr":["chinook, jargon"],"wikiUrl":"https://en.wikipedia.org/wiki/Chinook_jargon_language"},"cho":{"639-2":"cho","de":["Choctaw-Sprache"],"en":["Choctaw"],"fr":["choctaw"],"wikiUrl":"https://en.wikipedia.org/wiki/Choctaw_language"},"chp":{"639-2":"chp","de":["Chipewyan-Sprache"],"en":["Chipewyan","Dene Suline"],"fr":["chipewyan"],"wikiUrl":"https://en.wikipedia.org/wiki/Chipewyan_language"},"chr":{"639-2":"chr","de":["Cherokee-Sprache"],"en":["Cherokee"],"fr":["cherokee"],"wikiUrl":"https://en.wikipedia.org/wiki/Cherokee_language"},"chu":{"639-1":"cu","639-2":"chu","de":["Kirchenslawisch"],"en":["Church Slavic","Old Slavonic","Church Slavonic","Old Bulgarian","Old Church Slavonic"],"fr":["slavon d'église","vieux slave","slavon liturgique","vieux bulgare"],"wikiUrl":"https://en.wikipedia.org/wiki/Church_Slavic_language"},"chv":{"639-1":"cv","639-2":"chv","de":["Tschuwaschisch"],"en":["Chuvash"],"fr":["tchouvache"],"wikiUrl":"https://en.wikipedia.org/wiki/Chuvash_language"},"chy":{"639-2":"chy","de":["Cheyenne-Sprache"],"en":["Cheyenne"],"fr":["cheyenne"],"wikiUrl":"https://en.wikipedia.org/wiki/Cheyenne_language"},"cmc":{"639-2":"cmc","de":["Cham-Sprachen"],"en":["Chamic languages"],"fr":["chames, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Chamic_languages"},"cop":{"639-2":"cop","de":["Koptisch"],"en":["Coptic"],"fr":["copte"],"wikiUrl":"https://en.wikipedia.org/wiki/Coptic_language"},"cor":{"639-1":"kw","639-2":"cor","de":["Kornisch"],"en":["Cornish"],"fr":["cornique"],"wikiUrl":"https://en.wikipedia.org/wiki/Cornish_language"},"cos":{"639-1":"co","639-2":"cos","de":["Korsisch"],"en":["Corsican"],"fr":["corse"],"wikiUrl":"https://en.wikipedia.org/wiki/Corsican_language"},"cpe":{"639-2":"cpe","de":["Kreolisch-Englisch (Andere)"],"en":["Creoles and pidgins, English based"],"fr":["créoles et pidgins basés sur l'anglais"],"wikiUrl":"https://en.wikipedia.org/wiki/English_based_Creoles"},"cpf":{"639-2":"cpf","de":["Kreolisch-Französisch (Andere)"],"en":["Creoles and pidgins, French-based"],"fr":["créoles et pidgins basés sur le français"],"wikiUrl":"https://en.wikipedia.org/wiki/French-Based_Creoles"},"cpp":{"639-2":"cpp","de":["Kreolisch-Portugiesisch (Andere)"],"en":["Creoles and pidgins, Portuguese-based"],"fr":["créoles et pidgins basés sur le portugais"],"wikiUrl":"https://en.wikipedia.org/wiki/Portuguese-Based_Creoles"},"cre":{"639-1":"cr","639-2":"cre","de":["Cree-Sprache"],"en":["Cree"],"fr":["cree"],"wikiUrl":"https://en.wikipedia.org/wiki/Cree_language"},"crh":{"639-2":"crh","de":["Krimtatarisch"],"en":["Crimean Tatar","Crimean Turkish"],"fr":["tatar de Crimé"],"wikiUrl":"https://en.wikipedia.org/wiki/Crimean_Tatar_language"},"crp":{"639-2":"crp","de":["Kreolische Sprachen","Pidginsprachen (Andere)"],"en":["Creoles and pidgins"],"fr":["créoles et pidgins"],"wikiUrl":"https://en.wikipedia.org/wiki/Creole_language"},"csb":{"639-2":"csb","de":["Kaschubisch"],"en":["Kashubian"],"fr":["kachoube"],"wikiUrl":"https://en.wikipedia.org/wiki/Kashubian_language"},"cus":{"639-2":"cus","de":["Kuschitische Sprachen (Andere)"],"en":["Cushitic languages"],"fr":["couchitiques, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Cushitic_languages"},"cym":{"639-1":"cy","639-2":"cym","639-2/B":"wel","de":["Kymrisch"],"en":["Welsh"],"fr":["gallois"],"wikiUrl":"https://en.wikipedia.org/wiki/Welsh_language"},"cze":{"639-1":"cs","639-2":"ces","639-2/B":"cze","de":["Tschechisch"],"en":["Czech"],"fr":["tchèque"],"wikiUrl":"https://en.wikipedia.org/wiki/Czech_language"},"dak":{"639-2":"dak","de":["Dakota-Sprache"],"en":["Dakota"],"fr":["dakota"],"wikiUrl":"https://en.wikipedia.org/wiki/Dakota_language"},"dan":{"639-1":"da","639-2":"dan","de":["Dänisch"],"en":["Danish"],"fr":["danois"],"wikiUrl":"https://en.wikipedia.org/wiki/Danish_language"},"dar":{"639-2":"dar","de":["Darginisch"],"en":["Dargwa"],"fr":["dargwa"],"wikiUrl":"https://en.wikipedia.org/wiki/Dargwa_language"},"day":{"639-2":"day","de":["Dajakisch"],"en":["Land Dayak languages"],"fr":["dayak, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Land_Dayak_languages"},"del":{"639-2":"del","de":["Delaware-Sprache"],"en":["Delaware"],"fr":["delaware"],"wikiUrl":"https://en.wikipedia.org/wiki/Delaware_language"},"den":{"639-2":"den","de":["Slave-Sprache"],"en":["Slave (Athapascan)"],"fr":["esclave (athapascan)"],"wikiUrl":"https://en.wikipedia.org/wiki/Slave_language_(Athapascan)"},"deu":{"639-1":"de","639-2":"deu","639-2/B":"ger","de":["Deutsch"],"en":["German"],"fr":["allemand"],"wikiUrl":"https://en.wikipedia.org/wiki/German_language"},"dgr":{"639-2":"dgr","de":["Dogrib-Sprache"],"en":["Dogrib"],"fr":["dogrib"],"wikiUrl":"https://en.wikipedia.org/wiki/Dogrib_language"},"din":{"639-2":"din","de":["Dinka-Sprache"],"en":["Dinka"],"fr":["dinka"],"wikiUrl":"https://en.wikipedia.org/wiki/Dinka_language"},"div":{"639-1":"dv","639-2":"div","de":["Maledivisch"],"en":["Divehi","Dhivehi","Maldivian"],"fr":["maldivien"],"wikiUrl":"https://en.wikipedia.org/wiki/Dhivehi_language"},"doi":{"639-2":"doi","de":["Dogri"],"en":["Dogri"],"fr":["dogri"],"wikiUrl":"https://en.wikipedia.org/wiki/Dogri_language"},"dra":{"639-2":"dra","de":["Drawidische Sprachen (Andere)"],"en":["Dravidian languages"],"fr":["dravidiennes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Dravidian_languages"},"dsb":{"639-2":"dsb","de":["Niedersorbisch"],"en":["Lower Sorbian"],"fr":["bas-sorabe"],"wikiUrl":"https://en.wikipedia.org/wiki/Lower_Sorbian_language"},"dua":{"639-2":"dua","de":["Duala-Sprachen"],"en":["Duala"],"fr":["douala"],"wikiUrl":"https://en.wikipedia.org/wiki/Duala_language"},"dum":{"639-2":"dum","de":["Mittelniederländisch"],"en":["Dutch, Middle (ca.1050-1350)"],"fr":["néerlandais moyen (ca. 1050-1350)"],"wikiUrl":"https://en.wikipedia.org/wiki/Middle_Dutch_language"},"dut":{"639-1":"nl","639-2":"nld","639-2/B":"dut","de":["Niederländisch"],"en":["Dutch","Flemish"],"fr":["néerlandais","flamand"],"wikiUrl":"https://en.wikipedia.org/wiki/Dutch_language"},"dyu":{"639-2":"dyu","de":["Dyula-Sprache"],"en":["Dyula"],"fr":["dioula"],"wikiUrl":"https://en.wikipedia.org/wiki/Dyula_language"},"dzo":{"639-1":"dz","639-2":"dzo","de":["Dzongkha"],"en":["Dzongkha"],"fr":["dzongkha"],"wikiUrl":"https://en.wikipedia.org/wiki/Dzongkha_language"},"efi":{"639-2":"efi","de":["Efik"],"en":["Efik"],"fr":["efik"],"wikiUrl":"https://en.wikipedia.org/wiki/Efik_language"},"egy":{"639-2":"egy","de":["Ägyptisch"],"en":["Egyptian (Ancient)"],"fr":["égyptien"],"wikiUrl":"https://en.wikipedia.org/wiki/Egyptian_language_(Ancient)"},"eka":{"639-2":"eka","de":["Ekajuk"],"en":["Ekajuk"],"fr":["ekajuk"],"wikiUrl":"https://en.wikipedia.org/wiki/Ekajuk_language"},"ell":{"639-1":"el","639-2":"ell","639-2/B":"gre","de":["Neugriechisch"],"en":["Greek, Modern (1453-)"],"fr":["grec moderne (après 1453)"],"wikiUrl":"https://en.wikipedia.org/wiki/Modern_Greek_language"},"elx":{"639-2":"elx","de":["Elamisch"],"en":["Elamite"],"fr":["élamite"],"wikiUrl":"https://en.wikipedia.org/wiki/Elamite_language"},"eng":{"639-1":"en","639-2":"eng","de":["Englisch"],"en":["English"],"fr":["anglais"],"wikiUrl":"https://en.wikipedia.org/wiki/English_language"},"enm":{"639-2":"enm","de":["Mittelenglisch"],"en":["English, Middle (1100-1500)"],"fr":["anglais moyen (1100-1500)"],"wikiUrl":"https://en.wikipedia.org/wiki/Middle_English_language"},"epo":{"639-1":"eo","639-2":"epo","de":["Esperanto"],"en":["Esperanto"],"fr":["espéranto"],"wikiUrl":"https://en.wikipedia.org/wiki/Esperanto_language"},"est":{"639-1":"et","639-2":"est","de":["Estnisch"],"en":["Estonian"],"fr":["estonien"],"wikiUrl":"https://en.wikipedia.org/wiki/Estonian_language"},"eus":{"639-1":"eu","639-2":"eus","639-2/B":"baq","de":["Baskisch"],"en":["Basque"],"fr":["basque"],"wikiUrl":"https://en.wikipedia.org/wiki/Basque_language"},"ewe":{"639-1":"ee","639-2":"ewe","de":["Ewe-Sprache"],"en":["Ewe"],"fr":["éwé"],"wikiUrl":"https://en.wikipedia.org/wiki/Ewe_language"},"ewo":{"639-2":"ewo","de":["Ewondo"],"en":["Ewondo"],"fr":["éwondo"],"wikiUrl":"https://en.wikipedia.org/wiki/Ewondo_language"},"fan":{"639-2":"fan","de":["Pangwe-Sprache"],"en":["Fang"],"fr":["fang"],"wikiUrl":"https://en.wikipedia.org/wiki/Fang_language_(Equatorial_Guinea)"},"fao":{"639-1":"fo","639-2":"fao","de":["Färöisch"],"en":["Faroese"],"fr":["féroïen"],"wikiUrl":"https://en.wikipedia.org/wiki/Faroese_language"},"fas":{"639-1":"fa","639-2":"fas","639-2/B":"per","de":["Persisch"],"en":["Persian"],"fr":["persan"],"wikiUrl":"https://en.wikipedia.org/wiki/Persian_language"},"fat":{"639-2":"fat","de":["Fante-Sprache"],"en":["Fanti"],"fr":["fanti"],"wikiUrl":"https://en.wikipedia.org/wiki/Fanti_language"},"fij":{"639-1":"fj","639-2":"fij","de":["Fidschi-Sprache"],"en":["Fijian"],"fr":["fidjien"],"wikiUrl":"https://en.wikipedia.org/wiki/Fijian_language"},"fil":{"639-2":"fil","de":["Pilipino"],"en":["Filipino","Pilipino"],"fr":["filipino","pilipino"],"wikiUrl":"https://en.wikipedia.org/wiki/Filipino_language"},"fin":{"639-1":"fi","639-2":"fin","de":["Finnisch"],"en":["Finnish"],"fr":["finnois"],"wikiUrl":"https://en.wikipedia.org/wiki/Finnish_language"},"fiu":{"639-2":"fiu","de":["Finnougrische Sprachen (Andere)"],"en":["Finno-Ugrian languages"],"fr":["finno-ougriennes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Finno-Ugrian_languages"},"fon":{"639-2":"fon","de":["Fon-Sprache"],"en":["Fon"],"fr":["fon"],"wikiUrl":"https://en.wikipedia.org/wiki/Fon_language"},"fra":{"639-1":"fr","639-2":"fra","639-2/B":"fre","de":["Französisch"],"en":["French"],"fr":["français"],"wikiUrl":"https://en.wikipedia.org/wiki/French_language"},"fre":{"639-1":"fr","639-2":"fra","639-2/B":"fre","de":["Französisch"],"en":["French"],"fr":["français"],"wikiUrl":"https://en.wikipedia.org/wiki/French_language"},"frm":{"639-2":"frm","de":["Mittelfranzösisch"],"en":["French, Middle (ca.1400-1600)"],"fr":["français moyen (1400-1600)"],"wikiUrl":"https://en.wikipedia.org/wiki/Middle_French_language"},"fro":{"639-2":"fro","de":["Altfranzösisch"],"en":["French, Old (842-ca.1400)"],"fr":["français ancien (842-ca.1400)"],"wikiUrl":"https://en.wikipedia.org/wiki/Old_French_language"},"frr":{"639-2":"frr","de":["Nordfriesisch"],"en":["Northern Frisian"],"fr":["frison septentrional"],"wikiUrl":"https://en.wikipedia.org/wiki/Northern_Frisian_language"},"frs":{"639-2":"frs","de":["Ostfriesisch"],"en":["Eastern Frisian"],"fr":["frison oriental"],"wikiUrl":"https://en.wikipedia.org/wiki/Eastern_Frisian_language"},"fry":{"639-1":"fy","639-2":"fry","de":["Friesisch"],"en":["Western Frisian"],"fr":["frison occidental"],"wikiUrl":"https://en.wikipedia.org/wiki/Western_Frisian_language"},"ful":{"639-1":"ff","639-2":"ful","de":["Ful"],"en":["Fulah"],"fr":["peul"],"wikiUrl":"https://en.wikipedia.org/wiki/Fulah_language"},"fur":{"639-2":"fur","de":["Friulisch"],"en":["Friulian"],"fr":["frioulan"],"wikiUrl":"https://en.wikipedia.org/wiki/Friulian_language"},"gaa":{"639-2":"gaa","de":["Ga-Sprache"],"en":["Ga"],"fr":["ga"],"wikiUrl":"https://en.wikipedia.org/wiki/Ga_language"},"gay":{"639-2":"gay","de":["Gayo-Sprache"],"en":["Gayo"],"fr":["gayo"],"wikiUrl":"https://en.wikipedia.org/wiki/Gayo_language"},"gba":{"639-2":"gba","de":["Gbaya-Sprache"],"en":["Gbaya"],"fr":["gbaya"],"wikiUrl":"https://en.wikipedia.org/wiki/Gbaya_language_(Central_African_Republic)"},"gem":{"639-2":"gem","de":["Germanische Sprachen (Andere)"],"en":["Germanic languages"],"fr":["germaniques, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Germanic_languages"},"geo":{"639-1":"ka","639-2":"kat","639-2/B":"geo","de":["Georgisch"],"en":["Georgian"],"fr":["géorgien"],"wikiUrl":"https://en.wikipedia.org/wiki/Georgian_language"},"ger":{"639-1":"de","639-2":"deu","639-2/B":"ger","de":["Deutsch"],"en":["German"],"fr":["allemand"],"wikiUrl":"https://en.wikipedia.org/wiki/German_language"},"gez":{"639-2":"gez","de":["Altäthiopisch"],"en":["Geez"],"fr":["guèze"],"wikiUrl":"https://en.wikipedia.org/wiki/Ge%27ez_language"},"gil":{"639-2":"gil","de":["Gilbertesisch"],"en":["Gilbertese"],"fr":["kiribati"],"wikiUrl":"https://en.wikipedia.org/wiki/Gilbertese_language"},"gla":{"639-1":"gd","639-2":"gla","de":["Gälisch-Schottisch"],"en":["Gaelic","Scottish Gaelic"],"fr":["gaélique","gaélique écossais"],"wikiUrl":"https://en.wikipedia.org/wiki/Scottish_Gaelic_language"},"gle":{"639-1":"ga","639-2":"gle","de":["Irisch"],"en":["Irish"],"fr":["irlandais"],"wikiUrl":"https://en.wikipedia.org/wiki/Irish_language"},"glg":{"639-1":"gl","639-2":"glg","de":["Galicisch"],"en":["Galician"],"fr":["galicien"],"wikiUrl":"https://en.wikipedia.org/wiki/Galician_language"},"glv":{"639-1":"gv","639-2":"glv","de":["Manx"],"en":["Manx"],"fr":["manx","mannois"],"wikiUrl":"https://en.wikipedia.org/wiki/Manx_language"},"gmh":{"639-2":"gmh","de":["Mittelhochdeutsch"],"en":["German, Middle High (ca.1050-1500)"],"fr":["allemand, moyen haut (ca. 1050-1500)"],"wikiUrl":"https://en.wikipedia.org/wiki/Middle_High_German_language"},"goh":{"639-2":"goh","de":["Althochdeutsch"],"en":["German, Old High (ca.750-1050)"],"fr":["allemand, vieux haut (ca. 750-1050)"],"wikiUrl":"https://en.wikipedia.org/wiki/Old_High_German_language"},"gon":{"639-2":"gon","de":["Gondi-Sprache"],"en":["Gondi"],"fr":["gond"],"wikiUrl":"https://en.wikipedia.org/wiki/Gondi_language"},"gor":{"639-2":"gor","de":["Gorontalesisch"],"en":["Gorontalo"],"fr":["gorontalo"],"wikiUrl":"https://en.wikipedia.org/wiki/Gorontalo_language"},"got":{"639-2":"got","de":["Gotisch"],"en":["Gothic"],"fr":["gothique"],"wikiUrl":"https://en.wikipedia.org/wiki/Gothic_language"},"grb":{"639-2":"grb","de":["Grebo-Sprache"],"en":["Grebo"],"fr":["grebo"],"wikiUrl":"https://en.wikipedia.org/wiki/Grebo_language"},"grc":{"639-2":"grc","de":["Griechisch"],"en":["Greek, Ancient (to 1453)"],"fr":["grec ancien (jusqu'à 1453)"],"wikiUrl":"https://en.wikipedia.org/wiki/Ancient_Greek_language"},"gre":{"639-1":"el","639-2":"ell","639-2/B":"gre","de":["Neugriechisch"],"en":["Greek, Modern (1453-)"],"fr":["grec moderne (après 1453)"],"wikiUrl":"https://en.wikipedia.org/wiki/Modern_Greek_language"},"grn":{"639-1":"gn","639-2":"grn","de":["Guaraní-Sprache"],"en":["Guarani"],"fr":["guarani"],"wikiUrl":"https://en.wikipedia.org/wiki/Guarani_language"},"gsw":{"639-2":"gsw","de":["Schweizerdeutsch"],"en":["Swiss German","Alemannic","Alsatian"],"fr":["suisse alémanique","alémanique","alsacien"],"wikiUrl":"https://en.wikipedia.org/wiki/Swiss_German_language"},"guj":{"639-1":"gu","639-2":"guj","de":["Gujarati-Sprache"],"en":["Gujarati"],"fr":["goudjrati"],"wikiUrl":"https://en.wikipedia.org/wiki/Gujarati_language"},"gwi":{"639-2":"gwi","de":["Kutchin-Sprache"],"en":["Gwich'in"],"fr":["gwich'in"],"wikiUrl":"https://en.wikipedia.org/wiki/Gwich%CA%BCin_language"},"hai":{"639-2":"hai","de":["Haida-Sprache"],"en":["Haida"],"fr":["haida"],"wikiUrl":"https://en.wikipedia.org/wiki/Haida_language"},"hat":{"639-1":"ht","639-2":"hat","de":["Haïtien (Haiti-Kreolisch)"],"en":["Haitian","Haitian Creole"],"fr":["haïtien","créole haïtien"],"wikiUrl":"https://en.wikipedia.org/wiki/Haitian_language"},"hau":{"639-1":"ha","639-2":"hau","de":["Haussa-Sprache"],"en":["Hausa"],"fr":["haoussa"],"wikiUrl":"https://en.wikipedia.org/wiki/Hausa_language"},"haw":{"639-2":"haw","de":["Hawaiisch"],"en":["Hawaiian"],"fr":["hawaïen"],"wikiUrl":"https://en.wikipedia.org/wiki/Hawaiian_language"},"heb":{"639-1":"he","639-2":"heb","de":["Hebräisch"],"en":["Hebrew"],"fr":["hébreu"],"wikiUrl":"https://en.wikipedia.org/wiki/Hebrew_language"},"her":{"639-1":"hz","639-2":"her","de":["Herero-Sprache"],"en":["Herero"],"fr":["herero"],"wikiUrl":"https://en.wikipedia.org/wiki/Herero_language"},"hil":{"639-2":"hil","de":["Hiligaynon-Sprache"],"en":["Hiligaynon"],"fr":["hiligaynon"],"wikiUrl":"https://en.wikipedia.org/wiki/Hiligaynon_language"},"him":{"639-2":"him","de":["Himachali"],"en":["Himachali languages","Western Pahari languages"],"fr":["langues himachalis","langues paharis occidentales"],"wikiUrl":"https://en.wikipedia.org/wiki/Himachali_languages"},"hin":{"639-1":"hi","639-2":"hin","de":["Hindi"],"en":["Hindi"],"fr":["hindi"],"wikiUrl":"https://en.wikipedia.org/wiki/Hindi_language"},"hit":{"639-2":"hit","de":["Hethitisch"],"en":["Hittite"],"fr":["hittite"],"wikiUrl":"https://en.wikipedia.org/wiki/Hittite_language"},"hmn":{"639-2":"hmn","de":["Miao-Sprachen"],"en":["Hmong","Mong"],"fr":["hmong"],"wikiUrl":"https://en.wikipedia.org/wiki/Hmong_language"},"hmo":{"639-1":"ho","639-2":"hmo","de":["Hiri-Motu"],"en":["Hiri Motu"],"fr":["hiri motu"],"wikiUrl":"https://en.wikipedia.org/wiki/Hiri_Motu_language"},"hrv":{"639-1":"hr","639-2":"hrv","de":["Kroatisch"],"en":["Croatian"],"fr":["croate"],"wikiUrl":"https://en.wikipedia.org/wiki/Croatian_language"},"hsb":{"639-2":"hsb","de":["Obersorbisch"],"en":["Upper Sorbian"],"fr":["haut-sorabe"],"wikiUrl":"https://en.wikipedia.org/wiki/Upper_Sorbian_language"},"hun":{"639-1":"hu","639-2":"hun","de":["Ungarisch"],"en":["Hungarian"],"fr":["hongrois"],"wikiUrl":"https://en.wikipedia.org/wiki/Hungarian_language"},"hup":{"639-2":"hup","de":["Hupa-Sprache"],"en":["Hupa"],"fr":["hupa"],"wikiUrl":"https://en.wikipedia.org/wiki/Hupa_language"},"hye":{"639-1":"hy","639-2":"hye","639-2/B":"arm","de":["Armenisch"],"en":["Armenian"],"fr":["arménien"],"wikiUrl":"https://en.wikipedia.org/wiki/Armenian_language"},"iba":{"639-2":"iba","de":["Iban-Sprache"],"en":["Iban"],"fr":["iban"],"wikiUrl":"https://en.wikipedia.org/wiki/Iban_language"},"ibo":{"639-1":"ig","639-2":"ibo","de":["Ibo-Sprache"],"en":["Igbo"],"fr":["igbo"],"wikiUrl":"https://en.wikipedia.org/wiki/Igbo_language"},"ice":{"639-1":"is","639-2":"isl","639-2/B":"ice","de":["Isländisch"],"en":["Icelandic"],"fr":["islandais"],"wikiUrl":"https://en.wikipedia.org/wiki/Icelandic_language"},"ido":{"639-1":"io","639-2":"ido","de":["Ido"],"en":["Ido"],"fr":["ido"],"wikiUrl":"https://en.wikipedia.org/wiki/Ido_language"},"iii":{"639-1":"ii","639-2":"iii","de":["Lalo-Sprache"],"en":["Sichuan Yi","Nuosu"],"fr":["yi de Sichuan"],"wikiUrl":"https://en.wikipedia.org/wiki/Sichuan_Yi_language"},"ijo":{"639-2":"ijo","de":["Ijo-Sprache"],"en":["Ijo languages"],"fr":["ijo, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Ijo_languages"},"iku":{"639-1":"iu","639-2":"iku","de":["Inuktitut"],"en":["Inuktitut"],"fr":["inuktitut"],"wikiUrl":"https://en.wikipedia.org/wiki/Inuktitut_language"},"ile":{"639-1":"ie","639-2":"ile","de":["Interlingue"],"en":["Interlingue","Occidental"],"fr":["interlingue"],"wikiUrl":"https://en.wikipedia.org/wiki/Interlingue_language"},"ilo":{"639-2":"ilo","de":["Ilokano-Sprache"],"en":["Iloko"],"fr":["ilocano"],"wikiUrl":"https://en.wikipedia.org/wiki/Iloko_language"},"ina":{"639-1":"ia","639-2":"ina","de":["Interlingua"],"en":["Interlingua (International Auxiliary Language Association)"],"fr":["interlingua (langue auxiliaire internationale)"],"wikiUrl":"https://en.wikipedia.org/wiki/Interlingua_language_(International_Auxiliary_Language_Association)"},"inc":{"639-2":"inc","de":["Indoarische Sprachen (Andere)"],"en":["Indic languages"],"fr":["indo-aryennes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Indo-Aryan_languages"},"ind":{"639-1":"id","639-2":"ind","de":["Bahasa Indonesia"],"en":["Indonesian"],"fr":["indonésien"],"wikiUrl":"https://en.wikipedia.org/wiki/Indonesian_language"},"ine":{"639-2":"ine","de":["Indogermanische Sprachen (Andere)"],"en":["Indo-European languages"],"fr":["indo-européennes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Indo-European_languages"},"inh":{"639-2":"inh","de":["Inguschisch"],"en":["Ingush"],"fr":["ingouche"],"wikiUrl":"https://en.wikipedia.org/wiki/Ingush_language"},"ipk":{"639-1":"ik","639-2":"ipk","de":["Inupik"],"en":["Inupiaq"],"fr":["inupiaq"],"wikiUrl":"https://en.wikipedia.org/wiki/Inupiaq_language"},"ira":{"639-2":"ira","de":["Iranische Sprachen (Andere)"],"en":["Iranian languages"],"fr":["iraniennes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Iranian_languages"},"iro":{"639-2":"iro","de":["Irokesische Sprachen"],"en":["Iroquoian languages"],"fr":["iroquoises, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Iroquoian_languages"},"isl":{"639-1":"is","639-2":"isl","639-2/B":"ice","de":["Isländisch"],"en":["Icelandic"],"fr":["islandais"],"wikiUrl":"https://en.wikipedia.org/wiki/Icelandic_language"},"ita":{"639-1":"it","639-2":"ita","de":["Italienisch"],"en":["Italian"],"fr":["italien"],"wikiUrl":"https://en.wikipedia.org/wiki/Italian_language"},"jav":{"639-1":"jv","639-2":"jav","de":["Javanisch"],"en":["Javanese"],"fr":["javanais"],"wikiUrl":"https://en.wikipedia.org/wiki/Javanese_language"},"jbo":{"639-2":"jbo","de":["Lojban"],"en":["Lojban"],"fr":["lojban"],"wikiUrl":"https://en.wikipedia.org/wiki/Lojban_language"},"jpn":{"639-1":"ja","639-2":"jpn","de":["Japanisch"],"en":["Japanese"],"fr":["japonais"],"wikiUrl":"https://en.wikipedia.org/wiki/Japanese_language"},"jpr":{"639-2":"jpr","de":["Jüdisch-Persisch"],"en":["Judeo-Persian"],"fr":["judéo-persan"],"wikiUrl":"https://en.wikipedia.org/wiki/Judeo-Persian_language"},"jrb":{"639-2":"jrb","de":["Jüdisch-Arabisch"],"en":["Judeo-Arabic"],"fr":["judéo-arabe"],"wikiUrl":"https://en.wikipedia.org/wiki/Judeo-Arabic_language"},"kaa":{"639-2":"kaa","de":["Karakalpakisch"],"en":["Kara-Kalpak"],"fr":["karakalpak"],"wikiUrl":"https://en.wikipedia.org/wiki/Kara-Kalpak_language"},"kab":{"639-2":"kab","de":["Kabylisch"],"en":["Kabyle"],"fr":["kabyle"],"wikiUrl":"https://en.wikipedia.org/wiki/Kabyle_language"},"kac":{"639-2":"kac","de":["Kachin-Sprache"],"en":["Kachin","Jingpho"],"fr":["kachin","jingpho"],"wikiUrl":"https://en.wikipedia.org/wiki/Kachin_language"},"kal":{"639-1":"kl","639-2":"kal","de":["Grönländisch"],"en":["Kalaallisut","Greenlandic"],"fr":["groenlandais"],"wikiUrl":"https://en.wikipedia.org/wiki/Kalaallisut_language"},"kam":{"639-2":"kam","de":["Kamba-Sprache"],"en":["Kamba"],"fr":["kamba"],"wikiUrl":"https://en.wikipedia.org/wiki/Kamba_language_(Kenya)"},"kan":{"639-1":"kn","639-2":"kan","de":["Kannada"],"en":["Kannada"],"fr":["kannada"],"wikiUrl":"https://en.wikipedia.org/wiki/Kannada_language"},"kar":{"639-2":"kar","de":["Karenisch"],"en":["Karen languages"],"fr":["karen, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Karen_languages"},"kas":{"639-1":"ks","639-2":"kas","de":["Kaschmiri"],"en":["Kashmiri"],"fr":["kashmiri"],"wikiUrl":"https://en.wikipedia.org/wiki/Kashmiri_language"},"kat":{"639-1":"ka","639-2":"kat","639-2/B":"geo","de":["Georgisch"],"en":["Georgian"],"fr":["géorgien"],"wikiUrl":"https://en.wikipedia.org/wiki/Georgian_language"},"kau":{"639-1":"kr","639-2":"kau","de":["Kanuri-Sprache"],"en":["Kanuri"],"fr":["kanouri"],"wikiUrl":"https://en.wikipedia.org/wiki/Kanuri_language"},"kaw":{"639-2":"kaw","de":["Kawi"],"en":["Kawi"],"fr":["kawi"],"wikiUrl":"https://en.wikipedia.org/wiki/Kawi_language"},"kaz":{"639-1":"kk","639-2":"kaz","de":["Kasachisch"],"en":["Kazakh"],"fr":["kazakh"],"wikiUrl":"https://en.wikipedia.org/wiki/Kazakh_language"},"kbd":{"639-2":"kbd","de":["Kabardinisch"],"en":["Kabardian"],"fr":["kabardien"],"wikiUrl":"https://en.wikipedia.org/wiki/Kabardian_language"},"kha":{"639-2":"kha","de":["Khasi-Sprache"],"en":["Khasi"],"fr":["khasi"],"wikiUrl":"https://en.wikipedia.org/wiki/Khasi_language"},"khi":{"639-2":"khi","de":["Khoisan-Sprachen (Andere)"],"en":["Khoisan languages"],"fr":["khoïsan, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Khoisan_languages"},"khm":{"639-1":"km","639-2":"khm","de":["Kambodschanisch"],"en":["Central Khmer"],"fr":["khmer central"],"wikiUrl":"https://en.wikipedia.org/wiki/Central_Khmer_language"},"kho":{"639-2":"kho","de":["Sakisch"],"en":["Khotanese","Sakan"],"fr":["khotanais","sakan"],"wikiUrl":"https://en.wikipedia.org/wiki/Khotanese_language"},"kik":{"639-1":"ki","639-2":"kik","de":["Kikuyu-Sprache"],"en":["Kikuyu","Gikuyu"],"fr":["kikuyu"],"wikiUrl":"https://en.wikipedia.org/wiki/Kikuyu_language"},"kin":{"639-1":"rw","639-2":"kin","de":["Rwanda-Sprache"],"en":["Kinyarwanda"],"fr":["rwanda"],"wikiUrl":"https://en.wikipedia.org/wiki/Kinyarwanda_language"},"kir":{"639-1":"ky","639-2":"kir","de":["Kirgisisch"],"en":["Kirghiz","Kyrgyz"],"fr":["kirghiz"],"wikiUrl":"https://en.wikipedia.org/wiki/Kirghiz_language"},"kmb":{"639-2":"kmb","de":["Kimbundu-Sprache"],"en":["Kimbundu"],"fr":["kimbundu"],"wikiUrl":"https://en.wikipedia.org/wiki/Kimbundu_language"},"kok":{"639-2":"kok","de":["Konkani"],"en":["Konkani"],"fr":["konkani"],"wikiUrl":"https://en.wikipedia.org/wiki/Konkani_language"},"kom":{"639-1":"kv","639-2":"kom","de":["Komi-Sprache"],"en":["Komi"],"fr":["kom"],"wikiUrl":"https://en.wikipedia.org/wiki/Komi_language"},"kon":{"639-1":"kg","639-2":"kon","de":["Kongo-Sprache"],"en":["Kongo"],"fr":["kongo"],"wikiUrl":"https://en.wikipedia.org/wiki/Kongo_language"},"kor":{"639-1":"ko","639-2":"kor","de":["Koreanisch"],"en":["Korean"],"fr":["coréen"],"wikiUrl":"https://en.wikipedia.org/wiki/Korean_language"},"kos":{"639-2":"kos","de":["Kosraeanisch"],"en":["Kosraean"],"fr":["kosrae"],"wikiUrl":"https://en.wikipedia.org/wiki/Kosraean_language"},"kpe":{"639-2":"kpe","de":["Kpelle-Sprache"],"en":["Kpelle"],"fr":["kpellé"],"wikiUrl":"https://en.wikipedia.org/wiki/Kpelle_language"},"krc":{"639-2":"krc","de":["Karatschaiisch-Balkarisch"],"en":["Karachay-Balkar"],"fr":["karatchai balkar"],"wikiUrl":"https://en.wikipedia.org/wiki/Karachay-Balkar_language"},"krl":{"639-2":"krl","de":["Karelisch"],"en":["Karelian"],"fr":["carélien"],"wikiUrl":"https://en.wikipedia.org/wiki/Karelian_language"},"kro":{"639-2":"kro","de":["Kru-Sprachen (Andere)"],"en":["Kru languages"],"fr":["krou, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Kru_languages"},"kru":{"639-2":"kru","de":["Oraon-Sprache"],"en":["Kurukh"],"fr":["kurukh"],"wikiUrl":"https://en.wikipedia.org/wiki/Kurukh_language"},"kua":{"639-1":"kj","639-2":"kua","de":["Kwanyama-Sprache"],"en":["Kuanyama","Kwanyama"],"fr":["kuanyama","kwanyama"],"wikiUrl":"https://en.wikipedia.org/wiki/Kuanyama_language"},"kum":{"639-2":"kum","de":["Kumükisch"],"en":["Kumyk"],"fr":["koumyk"],"wikiUrl":"https://en.wikipedia.org/wiki/Kumyk_language"},"kur":{"639-1":"ku","639-2":"kur","de":["Kurdisch"],"en":["Kurdish"],"fr":["kurde"],"wikiUrl":"https://en.wikipedia.org/wiki/Kurdish_language"},"kut":{"639-2":"kut","de":["Kutenai-Sprache"],"en":["Kutenai"],"fr":["kutenai"],"wikiUrl":"https://en.wikipedia.org/wiki/Kutenai_language"},"lad":{"639-2":"lad","de":["Judenspanisch"],"en":["Ladino"],"fr":["judéo-espagnol"],"wikiUrl":"https://en.wikipedia.org/wiki/Ladino_language"},"lah":{"639-2":"lah","de":["Lahnda"],"en":["Lahnda"],"fr":["lahnda"],"wikiUrl":"https://en.wikipedia.org/wiki/Lahnda_language"},"lam":{"639-2":"lam","de":["Lamba-Sprache (Bantusprache)"],"en":["Lamba"],"fr":["lamba"],"wikiUrl":"https://en.wikipedia.org/wiki/Lamba_language"},"lao":{"639-1":"lo","639-2":"lao","de":["Laotisch"],"en":["Lao"],"fr":["lao"],"wikiUrl":"https://en.wikipedia.org/wiki/Lao_language"},"lat":{"639-1":"la","639-2":"lat","de":["Latein"],"en":["Latin"],"fr":["latin"],"wikiUrl":"https://en.wikipedia.org/wiki/Latin_language"},"lav":{"639-1":"lv","639-2":"lav","de":["Lettisch"],"en":["Latvian"],"fr":["letton"],"wikiUrl":"https://en.wikipedia.org/wiki/Latvian_language"},"lez":{"639-2":"lez","de":["Lesgisch"],"en":["Lezghian"],"fr":["lezghien"],"wikiUrl":"https://en.wikipedia.org/wiki/Lezghian_language"},"lim":{"639-1":"li","639-2":"lim","de":["Limburgisch"],"en":["Limburgan","Limburger","Limburgish"],"fr":["limbourgeois"],"wikiUrl":"https://en.wikipedia.org/wiki/Limburgan_language"},"lin":{"639-1":"ln","639-2":"lin","de":["Lingala"],"en":["Lingala"],"fr":["lingala"],"wikiUrl":"https://en.wikipedia.org/wiki/Lingala_language"},"lit":{"639-1":"lt","639-2":"lit","de":["Litauisch"],"en":["Lithuanian"],"fr":["lituanien"],"wikiUrl":"https://en.wikipedia.org/wiki/Lithuanian_language"},"lol":{"639-2":"lol","de":["Mongo-Sprache"],"en":["Mongo"],"fr":["mongo"],"wikiUrl":"https://en.wikipedia.org/wiki/Mongo_language"},"loz":{"639-2":"loz","de":["Rotse-Sprache"],"en":["Lozi"],"fr":["lozi"],"wikiUrl":"https://en.wikipedia.org/wiki/Lozi_language"},"ltz":{"639-1":"lb","639-2":"ltz","de":["Luxemburgisch"],"en":["Luxembourgish","Letzeburgesch"],"fr":["luxembourgeois"],"wikiUrl":"https://en.wikipedia.org/wiki/Luxembourgish_language"},"lua":{"639-2":"lua","de":["Lulua-Sprache"],"en":["Luba-Lulua"],"fr":["luba-lulua"],"wikiUrl":"https://en.wikipedia.org/wiki/Luba-Lulua_language"},"lub":{"639-1":"lu","639-2":"lub","de":["Luba-Katanga-Sprache"],"en":["Luba-Katanga"],"fr":["luba-katanga"],"wikiUrl":"https://en.wikipedia.org/wiki/Luba-Katanga_language"},"lug":{"639-1":"lg","639-2":"lug","de":["Ganda-Sprache"],"en":["Ganda"],"fr":["ganda"],"wikiUrl":"https://en.wikipedia.org/wiki/Ganda_language"},"lui":{"639-2":"lui","de":["Luiseño-Sprache"],"en":["Luiseno"],"fr":["luiseno"],"wikiUrl":"https://en.wikipedia.org/wiki/Luiseno_language"},"lun":{"639-2":"lun","de":["Lunda-Sprache"],"en":["Lunda"],"fr":["lunda"],"wikiUrl":"https://en.wikipedia.org/wiki/Lunda_language"},"luo":{"639-2":"luo","de":["Luo-Sprache"],"en":["Luo (Kenya and Tanzania)"],"fr":["luo (Kenya et Tanzanie)"],"wikiUrl":"https://en.wikipedia.org/wiki/Luo_language_(Kenya_and_Tanzania)"},"lus":{"639-2":"lus","de":["Lushai-Sprache"],"en":["Lushai"],"fr":["lushai"],"wikiUrl":"https://en.wikipedia.org/wiki/Lushai_language"},"mac":{"639-1":"mk","639-2":"mkd","639-2/B":"mac","de":["Makedonisch"],"en":["Macedonian"],"fr":["macédonien"],"wikiUrl":"https://en.wikipedia.org/wiki/Macedonian_language"},"mad":{"639-2":"mad","de":["Maduresisch"],"en":["Madurese"],"fr":["madourais"],"wikiUrl":"https://en.wikipedia.org/wiki/Madurese_language"},"mag":{"639-2":"mag","de":["Khotta"],"en":["Magahi"],"fr":["magahi"],"wikiUrl":"https://en.wikipedia.org/wiki/Magahi_language"},"mah":{"639-1":"mh","639-2":"mah","de":["Marschallesisch"],"en":["Marshallese"],"fr":["marshall"],"wikiUrl":"https://en.wikipedia.org/wiki/Marshallese_language"},"mai":{"639-2":"mai","de":["Maithili"],"en":["Maithili"],"fr":["maithili"],"wikiUrl":"https://en.wikipedia.org/wiki/Maithili_language"},"mak":{"639-2":"mak","de":["Makassarisch"],"en":["Makasar"],"fr":["makassar"],"wikiUrl":"https://en.wikipedia.org/wiki/Makasar_language"},"mal":{"639-1":"ml","639-2":"mal","de":["Malayalam"],"en":["Malayalam"],"fr":["malayalam"],"wikiUrl":"https://en.wikipedia.org/wiki/Malayalam_language"},"man":{"639-2":"man","de":["Malinke-Sprache"],"en":["Mandingo"],"fr":["mandingue"],"wikiUrl":"https://en.wikipedia.org/wiki/Manding_languages"},"mao":{"639-1":"mi","639-2":"mri","639-2/B":"mao","de":["Maori-Sprache"],"en":["Maori"],"fr":["maori"],"wikiUrl":"https://en.wikipedia.org/wiki/Maori_language"},"map":{"639-2":"map","de":["Austronesische Sprachen (Andere)"],"en":["Austronesian languages"],"fr":["austronésiennes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Austronesian_languages"},"mar":{"639-1":"mr","639-2":"mar","de":["Marathi"],"en":["Marathi"],"fr":["marathe"],"wikiUrl":"https://en.wikipedia.org/wiki/Marathi_language"},"mas":{"639-2":"mas","de":["Massai-Sprache"],"en":["Masai"],"fr":["massaï"],"wikiUrl":"https://en.wikipedia.org/wiki/Masai_language"},"may":{"639-1":"ms","639-2":"msa","639-2/B":"may","de":["Malaiisch"],"en":["Malay"],"fr":["malais"],"wikiUrl":"https://en.wikipedia.org/wiki/Malay_language"},"mdf":{"639-2":"mdf","de":["Mokscha-Sprache"],"en":["Moksha"],"fr":["moksa"],"wikiUrl":"https://en.wikipedia.org/wiki/Moksha_language"},"mdr":{"639-2":"mdr","de":["Mandaresisch"],"en":["Mandar"],"fr":["mandar"],"wikiUrl":"https://en.wikipedia.org/wiki/Mandar_language"},"men":{"639-2":"men","de":["Mende-Sprache"],"en":["Mende"],"fr":["mendé"],"wikiUrl":"https://en.wikipedia.org/wiki/Mende_language_(Sierra_Leone)"},"mga":{"639-2":"mga","de":["Mittelirisch"],"en":["Irish, Middle (900-1200)"],"fr":["irlandais moyen (900-1200)"],"wikiUrl":"https://en.wikipedia.org/wiki/Middle_Irish_language"},"mic":{"639-2":"mic","de":["Micmac-Sprache"],"en":["Mi'kmaq","Micmac"],"fr":["mi'kmaq","micmac"],"wikiUrl":"https://en.wikipedia.org/wiki/Mi%27kmaq_language"},"min":{"639-2":"min","de":["Minangkabau-Sprache"],"en":["Minangkabau"],"fr":["minangkabau"],"wikiUrl":"https://en.wikipedia.org/wiki/Minangkabau_language"},"mis":{"639-2":"mis","de":["Einzelne andere Sprachen"],"en":["Uncoded languages"],"fr":["langues non codées"]},"mkd":{"639-1":"mk","639-2":"mkd","639-2/B":"mac","de":["Makedonisch"],"en":["Macedonian"],"fr":["macédonien"],"wikiUrl":"https://en.wikipedia.org/wiki/Macedonian_language"},"mkh":{"639-2":"mkh","de":["Mon-Khmer-Sprachen (Andere)"],"en":["Mon-Khmer languages"],"fr":["môn-khmer, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Mon-Khmer_languages"},"mlg":{"639-1":"mg","639-2":"mlg","de":["Malagassi-Sprache"],"en":["Malagasy"],"fr":["malgache"],"wikiUrl":"https://en.wikipedia.org/wiki/Malagasy_language"},"mlt":{"639-1":"mt","639-2":"mlt","de":["Maltesisch"],"en":["Maltese"],"fr":["maltais"],"wikiUrl":"https://en.wikipedia.org/wiki/Maltese_language"},"mnc":{"639-2":"mnc","de":["Mandschurisch"],"en":["Manchu"],"fr":["mandchou"],"wikiUrl":"https://en.wikipedia.org/wiki/Manchu_language"},"mni":{"639-2":"mni","de":["Meithei-Sprache"],"en":["Manipuri"],"fr":["manipuri"],"wikiUrl":"https://en.wikipedia.org/wiki/Meitei_language"},"mno":{"639-2":"mno","de":["Manobo-Sprachen"],"en":["Manobo languages"],"fr":["manobo, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Manobo_languages"},"moh":{"639-2":"moh","de":["Mohawk-Sprache"],"en":["Mohawk"],"fr":["mohawk"],"wikiUrl":"https://en.wikipedia.org/wiki/Mohawk_language"},"mon":{"639-1":"mn","639-2":"mon","de":["Mongolisch"],"en":["Mongolian"],"fr":["mongol"],"wikiUrl":"https://en.wikipedia.org/wiki/Mongolian_language"},"mos":{"639-2":"mos","de":["Mossi-Sprache"],"en":["Mossi"],"fr":["moré"],"wikiUrl":"https://en.wikipedia.org/wiki/Mossi_language"},"mri":{"639-1":"mi","639-2":"mri","639-2/B":"mao","de":["Maori-Sprache"],"en":["Maori"],"fr":["maori"],"wikiUrl":"https://en.wikipedia.org/wiki/Maori_language"},"msa":{"639-1":"ms","639-2":"msa","639-2/B":"may","de":["Malaiisch"],"en":["Malay"],"fr":["malais"],"wikiUrl":"https://en.wikipedia.org/wiki/Malay_language"},"mul":{"639-2":"mul","de":["Mehrere Sprachen"],"en":["Multiple languages"],"fr":["multilingue"]},"mun":{"639-2":"mun","de":["Mundasprachen (Andere)"],"en":["Munda languages"],"fr":["mounda, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Munda_languages"},"mus":{"639-2":"mus","de":["Muskogisch"],"en":["Creek"],"fr":["muskogee"],"wikiUrl":"https://en.wikipedia.org/wiki/Creek_language"},"mwl":{"639-2":"mwl","de":["Mirandesisch"],"en":["Mirandese"],"fr":["mirandais"],"wikiUrl":"https://en.wikipedia.org/wiki/Mirandese_language"},"mwr":{"639-2":"mwr","de":["Marwari"],"en":["Marwari"],"fr":["marvari"],"wikiUrl":"https://en.wikipedia.org/wiki/Marwari_language"},"mya":{"639-1":"my","639-2":"mya","639-2/B":"bur","de":["Birmanisch"],"en":["Burmese"],"fr":["birman"],"wikiUrl":"https://en.wikipedia.org/wiki/Burmese_language"},"myn":{"639-2":"myn","de":["Maya-Sprachen"],"en":["Mayan languages"],"fr":["maya, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Mayan_languages"},"myv":{"639-2":"myv","de":["Erza-Mordwinisch"],"en":["Erzya"],"fr":["erza"],"wikiUrl":"https://en.wikipedia.org/wiki/Erzya_language"},"nah":{"639-2":"nah","de":["Nahuatl"],"en":["Nahuatl languages"],"fr":["nahuatl, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Nahuatl_languages"},"nai":{"639-2":"nai","de":["Indianersprachen, Nordamerika (Andere)"],"en":["North American Indian languages"],"fr":["nord-amérindiennes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/North_American_Indian_languages"},"nap":{"639-2":"nap","de":["Neapel / Mundart"],"en":["Neapolitan"],"fr":["napolitain"],"wikiUrl":"https://en.wikipedia.org/wiki/Neapolitan_language"},"nau":{"639-1":"na","639-2":"nau","de":["Nauruanisch"],"en":["Nauru"],"fr":["nauruan"],"wikiUrl":"https://en.wikipedia.org/wiki/Nauru_language"},"nav":{"639-1":"nv","639-2":"nav","de":["Navajo-Sprache"],"en":["Navajo","Navaho"],"fr":["navaho"],"wikiUrl":"https://en.wikipedia.org/wiki/Navajo_language"},"nbl":{"639-1":"nr","639-2":"nbl","de":["Ndebele-Sprache (Transvaal)"],"en":["Ndebele, South","South Ndebele"],"fr":["ndébélé du Sud"],"wikiUrl":"https://en.wikipedia.org/wiki/South_Ndebele_language"},"nde":{"639-1":"nd","639-2":"nde","de":["Ndebele-Sprache (Simbabwe)"],"en":["Ndebele, North","North Ndebele"],"fr":["ndébélé du Nord"],"wikiUrl":"https://en.wikipedia.org/wiki/North_Ndebele_language"},"ndo":{"639-1":"ng","639-2":"ndo","de":["Ndonga"],"en":["Ndonga"],"fr":["ndonga"],"wikiUrl":"https://en.wikipedia.org/wiki/Ndonga_language"},"nds":{"639-2":"nds","de":["Niederdeutsch"],"en":["Low German","Low Saxon","German, Low","Saxon, Low"],"fr":["bas allemand","bas saxon","allemand, bas","saxon, bas"],"wikiUrl":"https://en.wikipedia.org/wiki/Low_German_language"},"nep":{"639-1":"ne","639-2":"nep","de":["Nepali"],"en":["Nepali"],"fr":["népalais"],"wikiUrl":"https://en.wikipedia.org/wiki/Nepali_language"},"new":{"639-2":"new","de":["Newari"],"en":["Nepal Bhasa","Newari"],"fr":["nepal bhasa","newari"],"wikiUrl":"https://en.wikipedia.org/wiki/Nepal_Bhasa"},"nia":{"639-2":"nia","de":["Nias-Sprache"],"en":["Nias"],"fr":["nias"],"wikiUrl":"https://en.wikipedia.org/wiki/Nias_language"},"nic":{"639-2":"nic","de":["Nigerkordofanische Sprachen (Andere)"],"en":["Niger-Kordofanian languages"],"fr":["nigéro-kordofaniennes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Niger-Kordofanian_languages"},"niu":{"639-2":"niu","de":["Niue-Sprache"],"en":["Niuean"],"fr":["niué"],"wikiUrl":"https://en.wikipedia.org/wiki/Niuean_language"},"nld":{"639-1":"nl","639-2":"nld","639-2/B":"dut","de":["Niederländisch"],"en":["Dutch","Flemish"],"fr":["néerlandais","flamand"],"wikiUrl":"https://en.wikipedia.org/wiki/Dutch_language"},"nno":{"639-1":"nn","639-2":"nno","de":["Nynorsk"],"en":["Norwegian Nynorsk","Nynorsk, Norwegian"],"fr":["norvégien nynorsk","nynorsk, norvégien"],"wikiUrl":"https://en.wikipedia.org/wiki/Norwegian_Nynorsk_language"},"nob":{"639-1":"nb","639-2":"nob","de":["Bokmål"],"en":["Bokmål, Norwegian","Norwegian Bokmål"],"fr":["norvégien bokmål"],"wikiUrl":"https://en.wikipedia.org/wiki/Norwegian_Bokm%C3%A5l_language"},"nog":{"639-2":"nog","de":["Nogaisch"],"en":["Nogai"],"fr":["nogaï","nogay"],"wikiUrl":"https://en.wikipedia.org/wiki/Nogai_language"},"non":{"639-2":"non","de":["Altnorwegisch"],"en":["Norse, Old"],"fr":["norrois, vieux"],"wikiUrl":"https://en.wikipedia.org/wiki/Old_Norse_language"},"nor":{"639-1":"no","639-2":"nor","de":["Norwegisch"],"en":["Norwegian"],"fr":["norvégien"],"wikiUrl":"https://en.wikipedia.org/wiki/Norwegian_language"},"nqo":{"639-2":"nqo","de":["N'Ko"],"en":["N'Ko"],"fr":["n'ko"],"wikiUrl":"https://en.wikipedia.org/wiki/N%27Ko_language"},"nso":{"639-2":"nso","de":["Pedi-Sprache"],"en":["Pedi","Sepedi","Northern Sotho"],"fr":["pedi","sepedi","sotho du Nord"],"wikiUrl":"https://en.wikipedia.org/wiki/Pedi_language"},"nub":{"639-2":"nub","de":["Nubische Sprachen"],"en":["Nubian languages"],"fr":["nubiennes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Nubian_languages"},"nwc":{"639-2":"nwc","de":["Alt-Newari"],"en":["Classical Newari","Old Newari","Classical Nepal Bhasa"],"fr":["newari classique"],"wikiUrl":"https://en.wikipedia.org/wiki/Classical_Newari_language"},"nya":{"639-1":"ny","639-2":"nya","de":["Nyanja-Sprache"],"en":["Chichewa","Chewa","Nyanja"],"fr":["chichewa","chewa","nyanja"],"wikiUrl":"https://en.wikipedia.org/wiki/Nyanja_language"},"nym":{"639-2":"nym","de":["Nyamwezi-Sprache"],"en":["Nyamwezi"],"fr":["nyamwezi"],"wikiUrl":"https://en.wikipedia.org/wiki/Nyamwezi_language"},"nyn":{"639-2":"nyn","de":["Nkole-Sprache"],"en":["Nyankole"],"fr":["nyankolé"],"wikiUrl":"https://en.wikipedia.org/wiki/Nyankole_language"},"nyo":{"639-2":"nyo","de":["Nyoro-Sprache"],"en":["Nyoro"],"fr":["nyoro"],"wikiUrl":"https://en.wikipedia.org/wiki/Nyoro_language"},"nzi":{"639-2":"nzi","de":["Nzima-Sprache"],"en":["Nzima"],"fr":["nzema"],"wikiUrl":"https://en.wikipedia.org/wiki/Nzima_language"},"oci":{"639-1":"oc","639-2":"oci","de":["Okzitanisch"],"en":["Occitan (post 1500)"],"fr":["occitan (après 1500)"],"wikiUrl":"https://en.wikipedia.org/wiki/Occitan_language"},"oji":{"639-1":"oj","639-2":"oji","de":["Ojibwa-Sprache"],"en":["Ojibwa"],"fr":["ojibwa"],"wikiUrl":"https://en.wikipedia.org/wiki/Ojibwa_language"},"ori":{"639-1":"or","639-2":"ori","de":["Oriya-Sprache"],"en":["Oriya"],"fr":["oriya"],"wikiUrl":"https://en.wikipedia.org/wiki/Odiya_language"},"orm":{"639-1":"om","639-2":"orm","de":["Galla-Sprache"],"en":["Oromo"],"fr":["galla"],"wikiUrl":"https://en.wikipedia.org/wiki/Oromo_language"},"osa":{"639-2":"osa","de":["Osage-Sprache"],"en":["Osage"],"fr":["osage"],"wikiUrl":"https://en.wikipedia.org/wiki/Osage_language"},"oss":{"639-1":"os","639-2":"oss","de":["Ossetisch"],"en":["Ossetian","Ossetic"],"fr":["ossète"],"wikiUrl":"https://en.wikipedia.org/wiki/Ossetian_language"},"ota":{"639-2":"ota","de":["Osmanisch"],"en":["Turkish, Ottoman (1500-1928)"],"fr":["turc ottoman (1500-1928)"],"wikiUrl":"https://en.wikipedia.org/wiki/Ottoman_Turkish_language"},"oto":{"639-2":"oto","de":["Otomangue-Sprachen"],"en":["Otomian languages"],"fr":["otomi, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Otomian_languages"},"paa":{"639-2":"paa","de":["Papuasprachen (Andere)"],"en":["Papuan languages"],"fr":["papoues, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Papuan_languages"},"pag":{"639-2":"pag","de":["Pangasinan-Sprache"],"en":["Pangasinan"],"fr":["pangasinan"],"wikiUrl":"https://en.wikipedia.org/wiki/Pangasinan_language"},"pal":{"639-2":"pal","de":["Mittelpersisch"],"en":["Pahlavi"],"fr":["pahlavi"],"wikiUrl":"https://en.wikipedia.org/wiki/Pahlavi_language"},"pam":{"639-2":"pam","de":["Pampanggan-Sprache"],"en":["Pampanga","Kapampangan"],"fr":["pampangan"],"wikiUrl":"https://en.wikipedia.org/wiki/Pampanga_language"},"pan":{"639-1":"pa","639-2":"pan","de":["Pandschabi-Sprache"],"en":["Panjabi","Punjabi"],"fr":["pendjabi"],"wikiUrl":"https://en.wikipedia.org/wiki/Panjabi_language"},"pap":{"639-2":"pap","de":["Papiamento"],"en":["Papiamento"],"fr":["papiamento"],"wikiUrl":"https://en.wikipedia.org/wiki/Papiamento_language"},"pau":{"639-2":"pau","de":["Palau-Sprache"],"en":["Palauan"],"fr":["palau"],"wikiUrl":"https://en.wikipedia.org/wiki/Palauan_language"},"peo":{"639-2":"peo","de":["Altpersisch"],"en":["Persian, Old (ca.600-400 B.C.)"],"fr":["perse, vieux (ca. 600-400 av. J.-C.)"],"wikiUrl":"https://en.wikipedia.org/wiki/Old_Persian_language"},"per":{"639-1":"fa","639-2":"fas","639-2/B":"per","de":["Persisch"],"en":["Persian"],"fr":["persan"],"wikiUrl":"https://en.wikipedia.org/wiki/Persian_language"},"phi":{"639-2":"phi","de":["Philippinisch-Austronesisch (Andere)"],"en":["Philippine languages"],"fr":["philippines, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Philippine_languages"},"phn":{"639-2":"phn","de":["Phönikisch"],"en":["Phoenician"],"fr":["phénicien"],"wikiUrl":"https://en.wikipedia.org/wiki/Phoenician_language"},"pli":{"639-1":"pi","639-2":"pli","de":["Pali"],"en":["Pali"],"fr":["pali"],"wikiUrl":"https://en.wikipedia.org/wiki/Pali_language"},"pol":{"639-1":"pl","639-2":"pol","de":["Polnisch"],"en":["Polish"],"fr":["polonais"],"wikiUrl":"https://en.wikipedia.org/wiki/Polish_language"},"pon":{"639-2":"pon","de":["Ponapeanisch"],"en":["Pohnpeian"],"fr":["pohnpei"],"wikiUrl":"https://en.wikipedia.org/wiki/Pohnpeian_language"},"por":{"639-1":"pt","639-2":"por","de":["Portugiesisch"],"en":["Portuguese"],"fr":["portugais"],"wikiUrl":"https://en.wikipedia.org/wiki/Portuguese_language"},"pra":{"639-2":"pra","de":["Prakrit"],"en":["Prakrit languages"],"fr":["prâkrit, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Prakrit_languages"},"pro":{"639-2":"pro","de":["Altokzitanisch"],"en":["Provençal, Old (to 1500)","Occitan, Old (to 1500)"],"fr":["provençal ancien (jusqu'à 1500)","occitan ancien (jusqu'à 1500)"],"wikiUrl":"https://en.wikipedia.org/wiki/Old_Proven%C3%A7al_language"},"pus":{"639-1":"ps","639-2":"pus","de":["Paschtu"],"en":["Pushto","Pashto"],"fr":["pachto"],"wikiUrl":"https://en.wikipedia.org/wiki/Pushto_language"},"que":{"639-1":"qu","639-2":"que","de":["Quechua-Sprache"],"en":["Quechua"],"fr":["quechua"],"wikiUrl":"https://en.wikipedia.org/wiki/Quechua_language"},"raj":{"639-2":"raj","de":["Rajasthani"],"en":["Rajasthani"],"fr":["rajasthani"],"wikiUrl":"https://en.wikipedia.org/wiki/Rajasthani_language"},"rap":{"639-2":"rap","de":["Osterinsel-Sprache"],"en":["Rapanui"],"fr":["rapanui"],"wikiUrl":"https://en.wikipedia.org/wiki/Rapanui_language"},"rar":{"639-2":"rar","de":["Rarotonganisch"],"en":["Rarotongan","Cook Islands Maori"],"fr":["rarotonga","maori des îles Cook"],"wikiUrl":"https://en.wikipedia.org/wiki/Rarotongan_language"},"roa":{"639-2":"roa","de":["Romanische Sprachen (Andere)"],"en":["Romance languages"],"fr":["romanes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Romance_languages"},"roh":{"639-1":"rm","639-2":"roh","de":["Rätoromanisch"],"en":["Romansh"],"fr":["romanche"],"wikiUrl":"https://en.wikipedia.org/wiki/Romansh_language"},"rom":{"639-2":"rom","de":["Romani (Sprache)"],"en":["Romany"],"fr":["tsigane"],"wikiUrl":"https://en.wikipedia.org/wiki/Romany_language"},"ron":{"639-1":"ro","639-2":"ron","639-2/B":"rum","de":["Rumänisch"],"en":["Romanian","Moldavian","Moldovan"],"fr":["roumain","moldave"],"wikiUrl":"https://en.wikipedia.org/wiki/Romanian_language"},"rum":{"639-1":"ro","639-2":"ron","639-2/B":"rum","de":["Rumänisch"],"en":["Romanian","Moldavian","Moldovan"],"fr":["roumain","moldave"],"wikiUrl":"https://en.wikipedia.org/wiki/Romanian_language"},"run":{"639-1":"rn","639-2":"run","de":["Rundi-Sprache"],"en":["Rundi"],"fr":["rundi"],"wikiUrl":"https://en.wikipedia.org/wiki/Rundi_language"},"rup":{"639-2":"rup","de":["Aromunisch"],"en":["Aromanian","Arumanian","Macedo-Romanian"],"fr":["aroumain","macédo-roumain"],"wikiUrl":"https://en.wikipedia.org/wiki/Macedo-Romanian_language"},"rus":{"639-1":"ru","639-2":"rus","de":["Russisch"],"en":["Russian"],"fr":["russe"],"wikiUrl":"https://en.wikipedia.org/wiki/Russian_language"},"sad":{"639-2":"sad","de":["Sandawe-Sprache"],"en":["Sandawe"],"fr":["sandawe"],"wikiUrl":"https://en.wikipedia.org/wiki/Sandawe_language"},"sag":{"639-1":"sg","639-2":"sag","de":["Sango-Sprache"],"en":["Sango"],"fr":["sango"],"wikiUrl":"https://en.wikipedia.org/wiki/Sango_language"},"sah":{"639-2":"sah","de":["Jakutisch"],"en":["Yakut"],"fr":["iakoute"],"wikiUrl":"https://en.wikipedia.org/wiki/Yakut_language"},"sai":{"639-2":"sai","de":["Indianersprachen, Südamerika (Andere)"],"en":["South American Indian languages"],"fr":["sud-amérindiennes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/South_American_Indian_languages"},"sal":{"639-2":"sal","de":["Salish-Sprache"],"en":["Salishan languages"],"fr":["salishennes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Salishan_languages"},"sam":{"639-2":"sam","de":["Samaritanisch"],"en":["Samaritan Aramaic"],"fr":["samaritain"],"wikiUrl":"https://en.wikipedia.org/wiki/Samaritan_Aramaic_language"},"san":{"639-1":"sa","639-2":"san","de":["Sanskrit"],"en":["Sanskrit"],"fr":["sanskrit"],"wikiUrl":"https://en.wikipedia.org/wiki/Sanskrit_language"},"sas":{"639-2":"sas","de":["Sasak"],"en":["Sasak"],"fr":["sasak"],"wikiUrl":"https://en.wikipedia.org/wiki/Sasak_language"},"sat":{"639-2":"sat","de":["Santali"],"en":["Santali"],"fr":["santal"],"wikiUrl":"https://en.wikipedia.org/wiki/Santali_language"},"scn":{"639-2":"scn","de":["Sizilianisch"],"en":["Sicilian"],"fr":["sicilien"],"wikiUrl":"https://en.wikipedia.org/wiki/Sicilian_language"},"sco":{"639-2":"sco","de":["Schottisch"],"en":["Scots"],"fr":["écossais"],"wikiUrl":"https://en.wikipedia.org/wiki/Scots_language"},"sel":{"639-2":"sel","de":["Selkupisch"],"en":["Selkup"],"fr":["selkoupe"],"wikiUrl":"https://en.wikipedia.org/wiki/Selkup_language"},"sem":{"639-2":"sem","de":["Semitische Sprachen (Andere)"],"en":["Semitic languages"],"fr":["sémitiques, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Semitic_languages"},"sga":{"639-2":"sga","de":["Altirisch"],"en":["Irish, Old (to 900)"],"fr":["irlandais ancien (jusqu'à 900)"],"wikiUrl":"https://en.wikipedia.org/wiki/Old_Irish_language"},"sgn":{"639-2":"sgn","de":["Zeichensprachen"],"en":["Sign Languages"],"fr":["langues des signes"],"wikiUrl":"https://en.wikipedia.org/wiki/Sign_languages"},"shn":{"639-2":"shn","de":["Schan-Sprache"],"en":["Shan"],"fr":["chan"],"wikiUrl":"https://en.wikipedia.org/wiki/Shan_language"},"sid":{"639-2":"sid","de":["Sidamo-Sprache"],"en":["Sidamo"],"fr":["sidamo"],"wikiUrl":"https://en.wikipedia.org/wiki/Sidamo_language"},"sin":{"639-1":"si","639-2":"sin","de":["Singhalesisch"],"en":["Sinhala","Sinhalese"],"fr":["singhalais"],"wikiUrl":"https://en.wikipedia.org/wiki/Sinhala_language"},"sio":{"639-2":"sio","de":["Sioux-Sprachen (Andere)"],"en":["Siouan languages"],"fr":["sioux, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Siouan_languages"},"sit":{"639-2":"sit","de":["Sinotibetische Sprachen (Andere)"],"en":["Sino-Tibetan languages"],"fr":["sino-tibétaines, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Sino-Tibetan_languages"},"sla":{"639-2":"sla","de":["Slawische Sprachen (Andere)"],"en":["Slavic languages"],"fr":["slaves, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Slavic_languages"},"slk":{"639-1":"sk","639-2":"slk","639-2/B":"slo","de":["Slowakisch"],"en":["Slovak"],"fr":["slovaque"],"wikiUrl":"https://en.wikipedia.org/wiki/Slovak_language"},"slo":{"639-1":"sk","639-2":"slk","639-2/B":"slo","de":["Slowakisch"],"en":["Slovak"],"fr":["slovaque"],"wikiUrl":"https://en.wikipedia.org/wiki/Slovak_language"},"slv":{"639-1":"sl","639-2":"slv","de":["Slowenisch"],"en":["Slovenian"],"fr":["slovène"],"wikiUrl":"https://en.wikipedia.org/wiki/Slovenian_language"},"sma":{"639-2":"sma","de":["Südsaamisch"],"en":["Southern Sami"],"fr":["sami du Sud"],"wikiUrl":"https://en.wikipedia.org/wiki/Southern_Sami_language"},"sme":{"639-1":"se","639-2":"sme","de":["Nordsaamisch"],"en":["Northern Sami"],"fr":["sami du Nord"],"wikiUrl":"https://en.wikipedia.org/wiki/Northern_Sami_language"},"smi":{"639-2":"smi","de":["Saamisch"],"en":["Sami languages"],"fr":["sames, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Sami_languages"},"smj":{"639-2":"smj","de":["Lulesaamisch"],"en":["Lule Sami"],"fr":["sami de Lule"],"wikiUrl":"https://en.wikipedia.org/wiki/Lule_Sami_language"},"smn":{"639-2":"smn","de":["Inarisaamisch"],"en":["Inari Sami"],"fr":["sami d'Inari"],"wikiUrl":"https://en.wikipedia.org/wiki/Inari_Sami_language"},"smo":{"639-1":"sm","639-2":"smo","de":["Samoanisch"],"en":["Samoan"],"fr":["samoan"],"wikiUrl":"https://en.wikipedia.org/wiki/Samoan_language"},"sms":{"639-2":"sms","de":["Skoltsaamisch"],"en":["Skolt Sami"],"fr":["sami skolt"],"wikiUrl":"https://en.wikipedia.org/wiki/Skolt_Sami_language"},"sna":{"639-1":"sn","639-2":"sna","de":["Schona-Sprache"],"en":["Shona"],"fr":["shona"],"wikiUrl":"https://en.wikipedia.org/wiki/Shona_language"},"snd":{"639-1":"sd","639-2":"snd","de":["Sindhi-Sprache"],"en":["Sindhi"],"fr":["sindhi"],"wikiUrl":"https://en.wikipedia.org/wiki/Sindhi_language"},"snk":{"639-2":"snk","de":["Soninke-Sprache"],"en":["Soninke"],"fr":["soninké"],"wikiUrl":"https://en.wikipedia.org/wiki/Soninke_language"},"sog":{"639-2":"sog","de":["Sogdisch"],"en":["Sogdian"],"fr":["sogdien"],"wikiUrl":"https://en.wikipedia.org/wiki/Sogdian_language"},"som":{"639-1":"so","639-2":"som","de":["Somali"],"en":["Somali"],"fr":["somali"],"wikiUrl":"https://en.wikipedia.org/wiki/Somali_language"},"son":{"639-2":"son","de":["Songhai-Sprache"],"en":["Songhai languages"],"fr":["songhai, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Songhai_languages"},"sot":{"639-1":"st","639-2":"sot","de":["Süd-Sotho-Sprache"],"en":["Sotho, Southern"],"fr":["sotho du Sud"],"wikiUrl":"https://en.wikipedia.org/wiki/Southern_Sotho_language"},"spa":{"639-1":"es","639-2":"spa","de":["Spanisch"],"en":["Spanish","Castilian"],"fr":["espagnol","castillan"],"wikiUrl":"https://en.wikipedia.org/wiki/Spanish_language"},"sqi":{"639-1":"sq","639-2":"sqi","639-2/B":"alb","de":["Albanisch"],"en":["Albanian"],"fr":["albanais"],"wikiUrl":"https://en.wikipedia.org/wiki/Albanian_languages"},"srd":{"639-1":"sc","639-2":"srd","de":["Sardisch"],"en":["Sardinian"],"fr":["sarde"],"wikiUrl":"https://en.wikipedia.org/wiki/Sardinian_language"},"srn":{"639-2":"srn","de":["Sranantongo"],"en":["Sranan Tongo"],"fr":["sranan tongo"],"wikiUrl":"https://en.wikipedia.org/wiki/Sranan_Tongo_language"},"srp":{"639-1":"sr","639-2":"srp","de":["Serbisch"],"en":["Serbian"],"fr":["serbe"],"wikiUrl":"https://en.wikipedia.org/wiki/Serbian_language"},"srr":{"639-2":"srr","de":["Serer-Sprache"],"en":["Serer"],"fr":["sérère"],"wikiUrl":"https://en.wikipedia.org/wiki/Serer_language"},"ssa":{"639-2":"ssa","de":["Nilosaharanische Sprachen (Andere)"],"en":["Nilo-Saharan languages"],"fr":["nilo-sahariennes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Nilo-Saharan_languages"},"ssw":{"639-1":"ss","639-2":"ssw","de":["Swasi-Sprache"],"en":["Swati"],"fr":["swati"],"wikiUrl":"https://en.wikipedia.org/wiki/Swati_language"},"suk":{"639-2":"suk","de":["Sukuma-Sprache"],"en":["Sukuma"],"fr":["sukuma"],"wikiUrl":"https://en.wikipedia.org/wiki/Sukuma_language"},"sun":{"639-1":"su","639-2":"sun","de":["Sundanesisch"],"en":["Sundanese"],"fr":["soundanais"],"wikiUrl":"https://en.wikipedia.org/wiki/Sundanese_language"},"sus":{"639-2":"sus","de":["Susu"],"en":["Susu"],"fr":["soussou"],"wikiUrl":"https://en.wikipedia.org/wiki/Susu_language"},"sux":{"639-2":"sux","de":["Sumerisch"],"en":["Sumerian"],"fr":["sumérien"],"wikiUrl":"https://en.wikipedia.org/wiki/Sumerian_language"},"swa":{"639-1":"sw","639-2":"swa","de":["Swahili"],"en":["Swahili"],"fr":["swahili"],"wikiUrl":"https://en.wikipedia.org/wiki/Swahili_language"},"swe":{"639-1":"sv","639-2":"swe","de":["Schwedisch"],"en":["Swedish"],"fr":["suédois"],"wikiUrl":"https://en.wikipedia.org/wiki/Swedish_language"},"syc":{"639-2":"syc","de":["Syrisch"],"en":["Classical Syriac"],"fr":["syriaque classique"],"wikiUrl":"https://en.wikipedia.org/wiki/Classical_Syriac_language"},"syr":{"639-2":"syr","de":["Neuostaramäisch"],"en":["Syriac"],"fr":["syriaque"],"wikiUrl":"https://en.wikipedia.org/wiki/Syriac_language"},"tah":{"639-1":"ty","639-2":"tah","de":["Tahitisch"],"en":["Tahitian"],"fr":["tahitien"],"wikiUrl":"https://en.wikipedia.org/wiki/Tahitian_language"},"tai":{"639-2":"tai","de":["Thaisprachen (Andere)"],"en":["Tai languages"],"fr":["tai, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Tai_languages"},"tam":{"639-1":"ta","639-2":"tam","de":["Tamil"],"en":["Tamil"],"fr":["tamoul"],"wikiUrl":"https://en.wikipedia.org/wiki/Tamil_language"},"tat":{"639-1":"tt","639-2":"tat","de":["Tatarisch"],"en":["Tatar"],"fr":["tatar"],"wikiUrl":"https://en.wikipedia.org/wiki/Tatar_language"},"tel":{"639-1":"te","639-2":"tel","de":["Telugu-Sprache"],"en":["Telugu"],"fr":["télougou"],"wikiUrl":"https://en.wikipedia.org/wiki/Telugu_language"},"tem":{"639-2":"tem","de":["Temne-Sprache"],"en":["Timne"],"fr":["temne"],"wikiUrl":"https://en.wikipedia.org/wiki/Timne_language"},"ter":{"639-2":"ter","de":["Tereno-Sprache"],"en":["Tereno"],"fr":["tereno"],"wikiUrl":"https://en.wikipedia.org/wiki/Tereno_language"},"tet":{"639-2":"tet","de":["Tetum-Sprache"],"en":["Tetum"],"fr":["tetum"],"wikiUrl":"https://en.wikipedia.org/wiki/Tetum_language"},"tgk":{"639-1":"tg","639-2":"tgk","de":["Tadschikisch"],"en":["Tajik"],"fr":["tadjik"],"wikiUrl":"https://en.wikipedia.org/wiki/Tajik_language"},"tgl":{"639-1":"tl","639-2":"tgl","de":["Tagalog"],"en":["Tagalog"],"fr":["tagalog"],"wikiUrl":"https://en.wikipedia.org/wiki/Tagalog_language"},"tha":{"639-1":"th","639-2":"tha","de":["Thailändisch"],"en":["Thai"],"fr":["thaï"],"wikiUrl":"https://en.wikipedia.org/wiki/Thai_language"},"tib":{"639-1":"bo","639-2":"bod","639-2/B":"tib","de":["Tibetisch"],"en":["Tibetan"],"fr":["tibétain"],"wikiUrl":"https://en.wikipedia.org/wiki/Standard_Tibetan"},"tig":{"639-2":"tig","de":["Tigre-Sprache"],"en":["Tigre"],"fr":["tigré"],"wikiUrl":"https://en.wikipedia.org/wiki/Tigre_language"},"tir":{"639-1":"ti","639-2":"tir","de":["Tigrinja-Sprache"],"en":["Tigrinya"],"fr":["tigrigna"],"wikiUrl":"https://en.wikipedia.org/wiki/Tigrinya_language"},"tiv":{"639-2":"tiv","de":["Tiv-Sprache"],"en":["Tiv"],"fr":["tiv"],"wikiUrl":"https://en.wikipedia.org/wiki/Tiv_language"},"tkl":{"639-2":"tkl","de":["Tokelauanisch"],"en":["Tokelau"],"fr":["tokelau"],"wikiUrl":"https://en.wikipedia.org/wiki/Tokelau_language"},"tlh":{"639-2":"tlh","de":["Klingonisch"],"en":["Klingon","tlhIngan-Hol"],"fr":["klingon"],"wikiUrl":"https://en.wikipedia.org/wiki/Klingon_language"},"tli":{"639-2":"tli","de":["Tlingit-Sprache"],"en":["Tlingit"],"fr":["tlingit"],"wikiUrl":"https://en.wikipedia.org/wiki/Tlingit_language"},"tmh":{"639-2":"tmh","de":["Tamašeq"],"en":["Tamashek"],"fr":["tamacheq"],"wikiUrl":"https://en.wikipedia.org/wiki/Tamashek_language"},"tog":{"639-2":"tog","de":["Tonga (Bantusprache, Sambia)"],"en":["Tonga (Nyasa)"],"fr":["tonga (Nyasa)"],"wikiUrl":"https://en.wikipedia.org/wiki/Tonga_language_(Nyasa)"},"ton":{"639-1":"to","639-2":"ton","de":["Tongaisch"],"en":["Tonga (Tonga Islands)"],"fr":["tongan (Îles Tonga)"],"wikiUrl":"https://en.wikipedia.org/wiki/Tonga_language_(Tonga_Islands)"},"tpi":{"639-2":"tpi","de":["Neumelanesisch"],"en":["Tok Pisin"],"fr":["tok pisin"],"wikiUrl":"https://en.wikipedia.org/wiki/Tok_Pisin_language"},"tsi":{"639-2":"tsi","de":["Tsimshian-Sprache"],"en":["Tsimshian"],"fr":["tsimshian"],"wikiUrl":"https://en.wikipedia.org/wiki/Tsimshian_language"},"tsn":{"639-1":"tn","639-2":"tsn","de":["Tswana-Sprache"],"en":["Tswana"],"fr":["tswana"],"wikiUrl":"https://en.wikipedia.org/wiki/Tswana_language"},"tso":{"639-1":"ts","639-2":"tso","de":["Tsonga-Sprache"],"en":["Tsonga"],"fr":["tsonga"],"wikiUrl":"https://en.wikipedia.org/wiki/Tsonga_language"},"tuk":{"639-1":"tk","639-2":"tuk","de":["Turkmenisch"],"en":["Turkmen"],"fr":["turkmène"],"wikiUrl":"https://en.wikipedia.org/wiki/Turkmen_language"},"tum":{"639-2":"tum","de":["Tumbuka-Sprache"],"en":["Tumbuka"],"fr":["tumbuka"],"wikiUrl":"https://en.wikipedia.org/wiki/Tumbuka_language"},"tup":{"639-2":"tup","de":["Tupi-Sprache"],"en":["Tupi languages"],"fr":["tupi, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Tupi_languages"},"tur":{"639-1":"tr","639-2":"tur","de":["Türkisch"],"en":["Turkish"],"fr":["turc"],"wikiUrl":"https://en.wikipedia.org/wiki/Turkish_language"},"tut":{"639-2":"tut","de":["Altaische Sprachen (Andere)"],"en":["Altaic languages"],"fr":["altaïques, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Altaic_languages"},"tvl":{"639-2":"tvl","de":["Elliceanisch"],"en":["Tuvalu"],"fr":["tuvalu"],"wikiUrl":"https://en.wikipedia.org/wiki/Tuvalu_language"},"twi":{"639-1":"tw","639-2":"twi","de":["Twi-Sprache"],"en":["Twi"],"fr":["twi"],"wikiUrl":"https://en.wikipedia.org/wiki/Twi_language"},"tyv":{"639-2":"tyv","de":["Tuwinisch"],"en":["Tuvinian"],"fr":["touva"],"wikiUrl":"https://en.wikipedia.org/wiki/Tuvinian_language"},"udm":{"639-2":"udm","de":["Udmurtisch"],"en":["Udmurt"],"fr":["oudmourte"],"wikiUrl":"https://en.wikipedia.org/wiki/Udmurt_language"},"uga":{"639-2":"uga","de":["Ugaritisch"],"en":["Ugaritic"],"fr":["ougaritique"],"wikiUrl":"https://en.wikipedia.org/wiki/Ugaritic_language"},"uig":{"639-1":"ug","639-2":"uig","de":["Uigurisch"],"en":["Uighur","Uyghur"],"fr":["ouïgour"],"wikiUrl":"https://en.wikipedia.org/wiki/Uighur_language"},"ukr":{"639-1":"uk","639-2":"ukr","de":["Ukrainisch"],"en":["Ukrainian"],"fr":["ukrainien"],"wikiUrl":"https://en.wikipedia.org/wiki/Ukrainian_language"},"umb":{"639-2":"umb","de":["Mbundu-Sprache"],"en":["Umbundu"],"fr":["umbundu"],"wikiUrl":"https://en.wikipedia.org/wiki/Umbundu_language"},"und":{"639-2":"und","de":["Nicht zu entscheiden"],"en":["Undetermined"],"fr":["indéterminée"]},"urd":{"639-1":"ur","639-2":"urd","de":["Urdu"],"en":["Urdu"],"fr":["ourdou"],"wikiUrl":"https://en.wikipedia.org/wiki/Urdu_language"},"uzb":{"639-1":"uz","639-2":"uzb","de":["Usbekisch"],"en":["Uzbek"],"fr":["ouszbek"],"wikiUrl":"https://en.wikipedia.org/wiki/Uzbek_language"},"vai":{"639-2":"vai","de":["Vai-Sprache"],"en":["Vai"],"fr":["vaï"],"wikiUrl":"https://en.wikipedia.org/wiki/Vai_language"},"ven":{"639-1":"ve","639-2":"ven","de":["Venda-Sprache"],"en":["Venda"],"fr":["venda"],"wikiUrl":"https://en.wikipedia.org/wiki/Venda_language"},"vie":{"639-1":"vi","639-2":"vie","de":["Vietnamesisch"],"en":["Vietnamese"],"fr":["vietnamien"],"wikiUrl":"https://en.wikipedia.org/wiki/Vietnamese_language"},"vol":{"639-1":"vo","639-2":"vol","de":["Volapük"],"en":["Volapük"],"fr":["volapük"],"wikiUrl":"https://en.wikipedia.org/wiki/Volap%C3%BCk_language"},"vot":{"639-2":"vot","de":["Wotisch"],"en":["Votic"],"fr":["vote"],"wikiUrl":"https://en.wikipedia.org/wiki/Votic_language"},"wak":{"639-2":"wak","de":["Wakash-Sprachen"],"en":["Wakashan languages"],"fr":["wakashanes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Wakashan_languages"},"wal":{"639-2":"wal","de":["Walamo-Sprache"],"en":["Wolaitta","Wolaytta"],"fr":["wolaitta","wolaytta"],"wikiUrl":"https://en.wikipedia.org/wiki/Wolaytta_language"},"war":{"639-2":"war","de":["Waray"],"en":["Waray"],"fr":["waray"],"wikiUrl":"https://en.wikipedia.org/wiki/Waray_language_(Philippines)"},"was":{"639-2":"was","de":["Washo-Sprache"],"en":["Washo"],"fr":["washo"],"wikiUrl":"https://en.wikipedia.org/wiki/Washo_language"},"wel":{"639-1":"cy","639-2":"cym","639-2/B":"wel","de":["Kymrisch"],"en":["Welsh"],"fr":["gallois"],"wikiUrl":"https://en.wikipedia.org/wiki/Welsh_language"},"wen":{"639-2":"wen","de":["Sorbisch (Andere)"],"en":["Sorbian languages"],"fr":["sorabes, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Sorbian_languages"},"wln":{"639-1":"wa","639-2":"wln","de":["Wallonisch"],"en":["Walloon"],"fr":["wallon"],"wikiUrl":"https://en.wikipedia.org/wiki/Walloon_language"},"wol":{"639-1":"wo","639-2":"wol","de":["Wolof-Sprache"],"en":["Wolof"],"fr":["wolof"],"wikiUrl":"https://en.wikipedia.org/wiki/Wolof_language"},"xal":{"639-2":"xal","de":["Kalmückisch"],"en":["Kalmyk","Oirat"],"fr":["kalmouk","oïrat"],"wikiUrl":"https://en.wikipedia.org/wiki/Kalmyk_language"},"xho":{"639-1":"xh","639-2":"xho","de":["Xhosa-Sprache"],"en":["Xhosa"],"fr":["xhosa"],"wikiUrl":"https://en.wikipedia.org/wiki/Xhosa_language"},"yao":{"639-2":"yao","de":["Yao-Sprache (Bantusprache)"],"en":["Yao"],"fr":["yao"],"wikiUrl":"https://en.wikipedia.org/wiki/Yao_language"},"yap":{"639-2":"yap","de":["Yapesisch"],"en":["Yapese"],"fr":["yapois"],"wikiUrl":"https://en.wikipedia.org/wiki/Yapese_language"},"yid":{"639-1":"yi","639-2":"yid","de":["Jiddisch"],"en":["Yiddish"],"fr":["yiddish"],"wikiUrl":"https://en.wikipedia.org/wiki/Yiddish_language"},"yor":{"639-1":"yo","639-2":"yor","de":["Yoruba-Sprache"],"en":["Yoruba"],"fr":["yoruba"],"wikiUrl":"https://en.wikipedia.org/wiki/Yoruba_language"},"ypk":{"639-2":"ypk","de":["Ypik-Sprachen"],"en":["Yupik languages"],"fr":["yupik, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Yupik_languages"},"zap":{"639-2":"zap","de":["Zapotekisch"],"en":["Zapotec"],"fr":["zapotèque"],"wikiUrl":"https://en.wikipedia.org/wiki/Zapotec_language"},"zbl":{"639-2":"zbl","de":["Bliss-Symbol"],"en":["Blissymbols","Blissymbolics","Bliss"],"fr":["symboles Bliss","Bliss"],"wikiUrl":"https://en.wikipedia.org/wiki/Blissymbols_language"},"zen":{"639-2":"zen","de":["Zenaga"],"en":["Zenaga"],"fr":["zenaga"],"wikiUrl":"https://en.wikipedia.org/wiki/Zenaga_language"},"zgh":{"639-2":"zgh","de":["Standard-marokkanischen Tamazight"],"en":["Standard Moroccan Tamazight"],"fr":["amazighe standard marocain"],"wikiUrl":"https://en.wikipedia.org/wiki/Standard_Moroccan_Tamazight"},"zha":{"639-1":"za","639-2":"zha","de":["Zhuang"],"en":["Zhuang","Chuang"],"fr":["zhuang","chuang"],"wikiUrl":"https://en.wikipedia.org/wiki/Zhuang_language"},"zho":{"639-1":"zh","639-2":"zho","639-2/B":"chi","de":["Chinesisch"],"en":["Chinese"],"fr":["chinois"],"wikiUrl":"https://en.wikipedia.org/wiki/Chinese_language"},"znd":{"639-2":"znd","de":["Zande-Sprachen"],"en":["Zande languages"],"fr":["zandé, langues"],"wikiUrl":"https://en.wikipedia.org/wiki/Zande_languages"},"zul":{"639-1":"zu","639-2":"zul","de":["Zulu-Sprache"],"en":["Zulu"],"fr":["zoulou"],"wikiUrl":"https://en.wikipedia.org/wiki/Zulu_language"},"zun":{"639-2":"zun","de":["Zuñi-Sprache"],"en":["Zuni"],"fr":["zuni"],"wikiUrl":"https://en.wikipedia.org/wiki/Zuni_language"},"zxx":{"639-2":"zxx","de":["Kein linguistischer Inhalt"],"en":["No linguistic content","Not applicable"],"fr":["pas de contenu linguistique","non applicable"]},"zza":{"639-2":"zza","de":["Zazaki"],"en":["Zaza","Dimili","Dimli","Kirdki","Kirmanjki","Zazaki"],"fr":["zaza","dimili","dimli","kirdki","kirmanjki","zazaki"],"wikiUrl":"https://en.wikipedia.org/wiki/Zaza_language"}} -------------------------------------------------------------------------------- /zoro_dl/utils.py: -------------------------------------------------------------------------------- 1 | import os, requests, subprocess, re, json 2 | from bs4 import BeautifulSoup 3 | script_directory = os.path.dirname(os.path.abspath(__file__)) 4 | 5 | 6 | def setup_environment(): 7 | """ 8 | Set up the environment for the download script. 9 | 10 | This function determines the operating system, sets up the path to the 'N_m3u8DL-RE' executable, 11 | and adjusts permissions if necessary. It returns the script directory and the path to the 12 | 'N_m3u8DL-RE' executable based on the operating system. 13 | 14 | Returns: 15 | tuple: A tuple containing the script directory and the path to 'N_m3u8DL-RE' executable. 16 | """ 17 | if os.name == "nt": 18 | iswin = "1" 19 | else: 20 | iswin = "0" 21 | 22 | if iswin == "0": 23 | n_m3u8_dl_path = os.path.join(script_directory, "static", "N_m3u8DL-RE") 24 | os.system(f"chmod 777 {n_m3u8_dl_path}") 25 | 26 | elif iswin == "1": 27 | n_m3u8_dl_path = os.path.join(script_directory, "static", "N_m3u8DL-RE.exe") 28 | 29 | return script_directory, n_m3u8_dl_path 30 | 31 | 32 | script_directory, n_m3u8_dl_path = setup_environment() 33 | 34 | 35 | def is_sub_dub(episode_id): 36 | """ 37 | Determine if a given episode has both subbed and dubbed versions available. 38 | 39 | This function queries the AniWatch website to check if both subbed and dubbed versions of an episode are available. 40 | It makes a request to retrieve the episode's server information and looks for the presence of "DUB:" and "SUB:" tags 41 | in the HTML response. If both are present, it returns 'both', if only "DUB:" is present, it returns 'dub', if only "SUB:" 42 | is present, it returns 'sub', and if neither are present, it returns 'unknown'. 43 | 44 | Args: 45 | episode_id (str): The unique identifier of the episode. 46 | 47 | Returns: 48 | str: A string indicating whether the episode has both subbed and dubbed versions ('both'), 49 | only a dubbed version ('dub'), only a subbed version ('sub'), or neither ('unknown'). 50 | """ 51 | html = requests.get( 52 | f"https://aniwatch.to/ajax/v2/episode/servers?episodeId={episode_id}" 53 | ).json()["html"] 54 | 55 | if "DUB:" in html and "SUB:" in html: 56 | return "both" 57 | elif "DUB:" in html: 58 | return "dub" 59 | elif "SUB:" in html: 60 | return "sub" 61 | else: 62 | return "unknown" 63 | 64 | 65 | def get_video_resolution(video_path): 66 | """ 67 | Retrieve the resolution (width and height) of a video file. 68 | 69 | This function uses 'ffprobe' to analyze the specified video file and extract its resolution. 70 | It executes a command-line subprocess to gather video stream information, including width and height. 71 | In case of success, it returns a tuple containing the width and height. If there's an error or the 72 | resolution cannot be determined, it returns None. 73 | 74 | Args: 75 | video_path (str): The path to the video file. 76 | 77 | Returns: 78 | tuple or None: A tuple containing the video width and height if successful, or None if there's an error. 79 | """ 80 | try: 81 | cmd = [ 82 | "ffprobe", 83 | "-v", 84 | "error", 85 | "-select_streams", 86 | "v:0", 87 | "-show_entries", 88 | "stream=width,height", 89 | "-of", 90 | "csv=p=0", 91 | video_path, 92 | ] 93 | output = subprocess.check_output( 94 | cmd, stderr=subprocess.STDOUT, universal_newlines=True 95 | ) 96 | width, height = map(int, output.strip().split(",")) 97 | return width, height 98 | except (subprocess.CalledProcessError, ValueError): 99 | return None 100 | 101 | 102 | def extract_zoro_id(url): 103 | """ 104 | Extract the Zoro ID from a given URL. 105 | 106 | This function takes a URL from the Zoro website and extracts the unique ID associated with the content. 107 | It uses a regular expression pattern to capture the ID from the URL and returns it. If no match is found, 108 | it returns None. 109 | 110 | Args: 111 | url (str): The URL from which to extract the Zoro ID. 112 | 113 | Returns: 114 | str or None: The extracted Zoro ID if found in the URL, or None if no match is found. 115 | """ 116 | pattern = r"https?://[^/]+/(?:watch/)?([a-zA-Z0-9-]+)/?" 117 | match = re.search(pattern, url) 118 | if match: 119 | return match.group(1) 120 | return None 121 | 122 | 123 | 124 | def get_language_code(language_name): 125 | """ 126 | Get the ISO 639-2 language code for a given language name. 127 | 128 | This function takes a language name and searches for its corresponding ISO 639-2 language code. 129 | It reads language information from a JSON file and matches the input language name to the stored data. 130 | If a match is found, it returns the ISO 639-2 code; otherwise, it returns an empty string. 131 | 132 | Args: 133 | language_name (str): The name of the language. 134 | 135 | Returns: 136 | str: The ISO 639-2 language code if a match is found, or an empty string if no match is found. 137 | """ 138 | 139 | json_file_path = os.path.join(script_directory, "static", "languages_info.json") 140 | 141 | with open(json_file_path, "r") as json_file: 142 | language_info = json.load(json_file) 143 | 144 | for code, info in language_info.items(): 145 | if info["en"][0] == language_name: 146 | return info["639-2"] 147 | return "" 148 | 149 | 150 | def colored_text(text, color): 151 | """ 152 | Format text with ANSI color codes for terminal output. 153 | 154 | This function takes a text and a color name as input and returns the input text formatted with ANSI color codes. 155 | The available color names are: "black", "red", "green", "yellow", "blue", "magenta", "cyan", "white", and "reset". 156 | The "reset" color is used to reset the color formatting to the default terminal color. 157 | 158 | Args: 159 | text (str): The text to be formatted. 160 | color (str): The color name to apply to the text. 161 | 162 | Returns: 163 | str: The input text formatted with the specified color. 164 | """ 165 | colors = { 166 | "black": "\033[30m", 167 | "red": "\033[31m", 168 | "green": "\033[32m", 169 | "yellow": "\033[33m", 170 | "blue": "\033[34m", 171 | "magenta": "\033[35m", 172 | "cyan": "\033[36m", 173 | "white": "\033[37m", 174 | "reset": "\033[0m", 175 | } 176 | return f"{colors[color]}{text}{colors['reset']}" 177 | 178 | 179 | def get_readable_time(seconds: int) -> str: 180 | """ 181 | Convert a time duration in seconds to a human-readable format. 182 | 183 | This function takes a time duration in seconds and converts it to a human-readable format. 184 | The format includes days, hours, minutes, and seconds, excluding any zero-value components. 185 | 186 | Args: 187 | seconds (int): The time duration in seconds. 188 | 189 | Returns: 190 | str: A human-readable representation of the time duration. 191 | """ 192 | result = "" 193 | (days, remainder) = divmod(seconds, 86400) 194 | days = int(days) 195 | if days != 0: 196 | result += f"{days}d" 197 | (hours, remainder) = divmod(remainder, 3600) 198 | hours = int(hours) 199 | if hours != 0: 200 | result += f"{hours}h" 201 | (minutes, seconds) = divmod(remainder, 60) 202 | minutes = int(minutes) 203 | if minutes != 0: 204 | result += f"{minutes}m" 205 | seconds = int(seconds) 206 | result += f"{seconds}s" 207 | return result 208 | --------------------------------------------------------------------------------