├── .github └── workflows │ └── build.yml ├── Dockerfile ├── LICENSE ├── README.md ├── binary ├── Hulu4.sh.x ├── Hulu4_arm.sh.x ├── Hulu4_arm64.sh.x ├── Hulu4_darwin.sh.x ├── Hulu4_i686.sh.x ├── Hulu6.sh.x ├── Hulu6_arm.sh.x ├── Hulu6_arm64.sh.x ├── Hulu6_darwin.sh.x └── Hulu6_i686.sh.x ├── cookies ├── csm.sh └── reference ├── AD ├── AD1 ├── AD2 ├── ADBF ├── ADJP ├── ADKR ├── ADTW └── ADUS ├── CountryCode.csv ├── HBO_GO_EU_REGION ├── IATACode.txt ├── IATACode2.txt └── supported_platforms.list /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | 3 | on: 4 | push: 5 | branches: 6 | - 'main' 7 | 8 | jobs: 9 | docker: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v2 13 | 14 | - name: Set up QEMU 15 | uses: docker/setup-qemu-action@v1 16 | 17 | - name: Set up Docker Buildx 18 | uses: docker/setup-buildx-action@v1 19 | 20 | - name: Login to DockerHub 21 | uses: docker/login-action@v1 22 | with: 23 | username: ${{ secrets.DOCKERHUB_USERNAME }} 24 | password: ${{ secrets.DOCKERHUB_PASSWORD }} 25 | 26 | - name: Build images 27 | run: | 28 | docker buildx build --output "type=image,push=true" --platform=linux/amd64,linux/arm/v7,linux/arm64/v8,linux/386 --tag ${{ github.repository_owner }}/regioncheck:latest . 29 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:2.7-alpine 2 | 3 | COPY check.sh /check.sh 4 | 5 | RUN chmod +x /check.sh && \ 6 | apk add --no-cache curl wget bash && \ 7 | apk add --no-cache bind-tools --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main 8 | 9 | ENTRYPOINT ["/bin/bash", "-l", "-c", "/check.sh"] 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU AFFERO GENERAL PUBLIC LICENSE 2 | Version 3, 19 November 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU Affero General Public License is a free, copyleft license for 11 | software and other kinds of works, specifically designed to ensure 12 | cooperation with the community in the case of network server software. 13 | 14 | The licenses for most software and other practical works are designed 15 | to take away your freedom to share and change the works. By contrast, 16 | our General Public Licenses are intended to guarantee your freedom to 17 | share and change all versions of a program--to make sure it remains free 18 | software for all its users. 19 | 20 | When we speak of free software, we are referring to freedom, not 21 | price. Our General Public Licenses are designed to make sure that you 22 | have the freedom to distribute copies of free software (and charge for 23 | them if you wish), that you receive source code or can get it if you 24 | want it, that you can change the software or use pieces of it in new 25 | free programs, and that you know you can do these things. 26 | 27 | Developers that use our General Public Licenses protect your rights 28 | with two steps: (1) assert copyright on the software, and (2) offer 29 | you this License which gives you legal permission to copy, distribute 30 | and/or modify the software. 31 | 32 | A secondary benefit of defending all users' freedom is that 33 | improvements made in alternate versions of the program, if they 34 | receive widespread use, become available for other developers to 35 | incorporate. Many developers of free software are heartened and 36 | encouraged by the resulting cooperation. However, in the case of 37 | software used on network servers, this result may fail to come about. 38 | The GNU General Public License permits making a modified version and 39 | letting the public access it on a server without ever releasing its 40 | source code to the public. 41 | 42 | The GNU Affero General Public License is designed specifically to 43 | ensure that, in such cases, the modified source code becomes available 44 | to the community. It requires the operator of a network server to 45 | provide the source code of the modified version running there to the 46 | users of that server. Therefore, public use of a modified version, on 47 | a publicly accessible server, gives the public access to the source 48 | code of the modified version. 49 | 50 | An older license, called the Affero General Public License and 51 | published by Affero, was designed to accomplish similar goals. This is 52 | a different license, not a version of the Affero GPL, but Affero has 53 | released a new version of the Affero GPL which permits relicensing under 54 | this license. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | TERMS AND CONDITIONS 60 | 61 | 0. Definitions. 62 | 63 | "This License" refers to version 3 of the GNU Affero General Public License. 64 | 65 | "Copyright" also means copyright-like laws that apply to other kinds of 66 | works, such as semiconductor masks. 67 | 68 | "The Program" refers to any copyrightable work licensed under this 69 | License. Each licensee is addressed as "you". "Licensees" and 70 | "recipients" may be individuals or organizations. 71 | 72 | To "modify" a work means to copy from or adapt all or part of the work 73 | in a fashion requiring copyright permission, other than the making of an 74 | exact copy. The resulting work is called a "modified version" of the 75 | earlier work or a work "based on" the earlier work. 76 | 77 | A "covered work" means either the unmodified Program or a work based 78 | on the Program. 79 | 80 | To "propagate" a work means to do anything with it that, without 81 | permission, would make you directly or secondarily liable for 82 | infringement under applicable copyright law, except executing it on a 83 | computer or modifying a private copy. Propagation includes copying, 84 | distribution (with or without modification), making available to the 85 | public, and in some countries other activities as well. 86 | 87 | To "convey" a work means any kind of propagation that enables other 88 | parties to make or receive copies. Mere interaction with a user through 89 | a computer network, with no transfer of a copy, is not conveying. 90 | 91 | An interactive user interface displays "Appropriate Legal Notices" 92 | to the extent that it includes a convenient and prominently visible 93 | feature that (1) displays an appropriate copyright notice, and (2) 94 | tells the user that there is no warranty for the work (except to the 95 | extent that warranties are provided), that licensees may convey the 96 | work under this License, and how to view a copy of this License. If 97 | the interface presents a list of user commands or options, such as a 98 | menu, a prominent item in the list meets this criterion. 99 | 100 | 1. Source Code. 101 | 102 | The "source code" for a work means the preferred form of the work 103 | for making modifications to it. "Object code" means any non-source 104 | form of a work. 105 | 106 | A "Standard Interface" means an interface that either is an official 107 | standard defined by a recognized standards body, or, in the case of 108 | interfaces specified for a particular programming language, one that 109 | is widely used among developers working in that language. 110 | 111 | The "System Libraries" of an executable work include anything, other 112 | than the work as a whole, that (a) is included in the normal form of 113 | packaging a Major Component, but which is not part of that Major 114 | Component, and (b) serves only to enable use of the work with that 115 | Major Component, or to implement a Standard Interface for which an 116 | implementation is available to the public in source code form. A 117 | "Major Component", in this context, means a major essential component 118 | (kernel, window system, and so on) of the specific operating system 119 | (if any) on which the executable work runs, or a compiler used to 120 | produce the work, or an object code interpreter used to run it. 121 | 122 | The "Corresponding Source" for a work in object code form means all 123 | the source code needed to generate, install, and (for an executable 124 | work) run the object code and to modify the work, including scripts to 125 | control those activities. However, it does not include the work's 126 | System Libraries, or general-purpose tools or generally available free 127 | programs which are used unmodified in performing those activities but 128 | which are not part of the work. For example, Corresponding Source 129 | includes interface definition files associated with source files for 130 | the work, and the source code for shared libraries and dynamically 131 | linked subprograms that the work is specifically designed to require, 132 | such as by intimate data communication or control flow between those 133 | subprograms and other parts of the work. 134 | 135 | The Corresponding Source need not include anything that users 136 | can regenerate automatically from other parts of the Corresponding 137 | Source. 138 | 139 | The Corresponding Source for a work in source code form is that 140 | same work. 141 | 142 | 2. Basic Permissions. 143 | 144 | All rights granted under this License are granted for the term of 145 | copyright on the Program, and are irrevocable provided the stated 146 | conditions are met. This License explicitly affirms your unlimited 147 | permission to run the unmodified Program. The output from running a 148 | covered work is covered by this License only if the output, given its 149 | content, constitutes a covered work. This License acknowledges your 150 | rights of fair use or other equivalent, as provided by copyright law. 151 | 152 | You may make, run and propagate covered works that you do not 153 | convey, without conditions so long as your license otherwise remains 154 | in force. You may convey covered works to others for the sole purpose 155 | of having them make modifications exclusively for you, or provide you 156 | with facilities for running those works, provided that you comply with 157 | the terms of this License in conveying all material for which you do 158 | not control copyright. Those thus making or running the covered works 159 | for you must do so exclusively on your behalf, under your direction 160 | and control, on terms that prohibit them from making any copies of 161 | your copyrighted material outside their relationship with you. 162 | 163 | Conveying under any other circumstances is permitted solely under 164 | the conditions stated below. Sublicensing is not allowed; section 10 165 | makes it unnecessary. 166 | 167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 168 | 169 | No covered work shall be deemed part of an effective technological 170 | measure under any applicable law fulfilling obligations under article 171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 172 | similar laws prohibiting or restricting circumvention of such 173 | measures. 174 | 175 | When you convey a covered work, you waive any legal power to forbid 176 | circumvention of technological measures to the extent such circumvention 177 | is effected by exercising rights under this License with respect to 178 | the covered work, and you disclaim any intention to limit operation or 179 | modification of the work as a means of enforcing, against the work's 180 | users, your or third parties' legal rights to forbid circumvention of 181 | technological measures. 182 | 183 | 4. Conveying Verbatim Copies. 184 | 185 | You may convey verbatim copies of the Program's source code as you 186 | receive it, in any medium, provided that you conspicuously and 187 | appropriately publish on each copy an appropriate copyright notice; 188 | keep intact all notices stating that this License and any 189 | non-permissive terms added in accord with section 7 apply to the code; 190 | keep intact all notices of the absence of any warranty; and give all 191 | recipients a copy of this License along with the Program. 192 | 193 | You may charge any price or no price for each copy that you convey, 194 | and you may offer support or warranty protection for a fee. 195 | 196 | 5. Conveying Modified Source Versions. 197 | 198 | You may convey a work based on the Program, or the modifications to 199 | produce it from the Program, in the form of source code under the 200 | terms of section 4, provided that you also meet all of these conditions: 201 | 202 | a) The work must carry prominent notices stating that you modified 203 | it, and giving a relevant date. 204 | 205 | b) The work must carry prominent notices stating that it is 206 | released under this License and any conditions added under section 207 | 7. This requirement modifies the requirement in section 4 to 208 | "keep intact all notices". 209 | 210 | c) You must license the entire work, as a whole, under this 211 | License to anyone who comes into possession of a copy. This 212 | License will therefore apply, along with any applicable section 7 213 | additional terms, to the whole of the work, and all its parts, 214 | regardless of how they are packaged. This License gives no 215 | permission to license the work in any other way, but it does not 216 | invalidate such permission if you have separately received it. 217 | 218 | d) If the work has interactive user interfaces, each must display 219 | Appropriate Legal Notices; however, if the Program has interactive 220 | interfaces that do not display Appropriate Legal Notices, your 221 | work need not make them do so. 222 | 223 | A compilation of a covered work with other separate and independent 224 | works, which are not by their nature extensions of the covered work, 225 | and which are not combined with it such as to form a larger program, 226 | in or on a volume of a storage or distribution medium, is called an 227 | "aggregate" if the compilation and its resulting copyright are not 228 | used to limit the access or legal rights of the compilation's users 229 | beyond what the individual works permit. Inclusion of a covered work 230 | in an aggregate does not cause this License to apply to the other 231 | parts of the aggregate. 232 | 233 | 6. Conveying Non-Source Forms. 234 | 235 | You may convey a covered work in object code form under the terms 236 | of sections 4 and 5, provided that you also convey the 237 | machine-readable Corresponding Source under the terms of this License, 238 | in one of these ways: 239 | 240 | a) Convey the object code in, or embodied in, a physical product 241 | (including a physical distribution medium), accompanied by the 242 | Corresponding Source fixed on a durable physical medium 243 | customarily used for software interchange. 244 | 245 | b) Convey the object code in, or embodied in, a physical product 246 | (including a physical distribution medium), accompanied by a 247 | written offer, valid for at least three years and valid for as 248 | long as you offer spare parts or customer support for that product 249 | model, to give anyone who possesses the object code either (1) a 250 | copy of the Corresponding Source for all the software in the 251 | product that is covered by this License, on a durable physical 252 | medium customarily used for software interchange, for a price no 253 | more than your reasonable cost of physically performing this 254 | conveying of source, or (2) access to copy the 255 | Corresponding Source from a network server at no charge. 256 | 257 | c) Convey individual copies of the object code with a copy of the 258 | written offer to provide the Corresponding Source. This 259 | alternative is allowed only occasionally and noncommercially, and 260 | only if you received the object code with such an offer, in accord 261 | with subsection 6b. 262 | 263 | d) Convey the object code by offering access from a designated 264 | place (gratis or for a charge), and offer equivalent access to the 265 | Corresponding Source in the same way through the same place at no 266 | further charge. You need not require recipients to copy the 267 | Corresponding Source along with the object code. If the place to 268 | copy the object code is a network server, the Corresponding Source 269 | may be on a different server (operated by you or a third party) 270 | that supports equivalent copying facilities, provided you maintain 271 | clear directions next to the object code saying where to find the 272 | Corresponding Source. Regardless of what server hosts the 273 | Corresponding Source, you remain obligated to ensure that it is 274 | available for as long as needed to satisfy these requirements. 275 | 276 | e) Convey the object code using peer-to-peer transmission, provided 277 | you inform other peers where the object code and Corresponding 278 | Source of the work are being offered to the general public at no 279 | charge under subsection 6d. 280 | 281 | A separable portion of the object code, whose source code is excluded 282 | from the Corresponding Source as a System Library, need not be 283 | included in conveying the object code work. 284 | 285 | A "User Product" is either (1) a "consumer product", which means any 286 | tangible personal property which is normally used for personal, family, 287 | or household purposes, or (2) anything designed or sold for incorporation 288 | into a dwelling. In determining whether a product is a consumer product, 289 | doubtful cases shall be resolved in favor of coverage. For a particular 290 | product received by a particular user, "normally used" refers to a 291 | typical or common use of that class of product, regardless of the status 292 | of the particular user or of the way in which the particular user 293 | actually uses, or expects or is expected to use, the product. A product 294 | is a consumer product regardless of whether the product has substantial 295 | commercial, industrial or non-consumer uses, unless such uses represent 296 | the only significant mode of use of the product. 297 | 298 | "Installation Information" for a User Product means any methods, 299 | procedures, authorization keys, or other information required to install 300 | and execute modified versions of a covered work in that User Product from 301 | a modified version of its Corresponding Source. The information must 302 | suffice to ensure that the continued functioning of the modified object 303 | code is in no case prevented or interfered with solely because 304 | modification has been made. 305 | 306 | If you convey an object code work under this section in, or with, or 307 | specifically for use in, a User Product, and the conveying occurs as 308 | part of a transaction in which the right of possession and use of the 309 | User Product is transferred to the recipient in perpetuity or for a 310 | fixed term (regardless of how the transaction is characterized), the 311 | Corresponding Source conveyed under this section must be accompanied 312 | by the Installation Information. But this requirement does not apply 313 | if neither you nor any third party retains the ability to install 314 | modified object code on the User Product (for example, the work has 315 | been installed in ROM). 316 | 317 | The requirement to provide Installation Information does not include a 318 | requirement to continue to provide support service, warranty, or updates 319 | for a work that has been modified or installed by the recipient, or for 320 | the User Product in which it has been modified or installed. Access to a 321 | network may be denied when the modification itself materially and 322 | adversely affects the operation of the network or violates the rules and 323 | protocols for communication across the network. 324 | 325 | Corresponding Source conveyed, and Installation Information provided, 326 | in accord with this section must be in a format that is publicly 327 | documented (and with an implementation available to the public in 328 | source code form), and must require no special password or key for 329 | unpacking, reading or copying. 330 | 331 | 7. Additional Terms. 332 | 333 | "Additional permissions" are terms that supplement the terms of this 334 | License by making exceptions from one or more of its conditions. 335 | Additional permissions that are applicable to the entire Program shall 336 | be treated as though they were included in this License, to the extent 337 | that they are valid under applicable law. If additional permissions 338 | apply only to part of the Program, that part may be used separately 339 | under those permissions, but the entire Program remains governed by 340 | this License without regard to the additional permissions. 341 | 342 | When you convey a copy of a covered work, you may at your option 343 | remove any additional permissions from that copy, or from any part of 344 | it. (Additional permissions may be written to require their own 345 | removal in certain cases when you modify the work.) You may place 346 | additional permissions on material, added by you to a covered work, 347 | for which you have or can give appropriate copyright permission. 348 | 349 | Notwithstanding any other provision of this License, for material you 350 | add to a covered work, you may (if authorized by the copyright holders of 351 | that material) supplement the terms of this License with terms: 352 | 353 | a) Disclaiming warranty or limiting liability differently from the 354 | terms of sections 15 and 16 of this License; or 355 | 356 | b) Requiring preservation of specified reasonable legal notices or 357 | author attributions in that material or in the Appropriate Legal 358 | Notices displayed by works containing it; or 359 | 360 | c) Prohibiting misrepresentation of the origin of that material, or 361 | requiring that modified versions of such material be marked in 362 | reasonable ways as different from the original version; or 363 | 364 | d) Limiting the use for publicity purposes of names of licensors or 365 | authors of the material; or 366 | 367 | e) Declining to grant rights under trademark law for use of some 368 | trade names, trademarks, or service marks; or 369 | 370 | f) Requiring indemnification of licensors and authors of that 371 | material by anyone who conveys the material (or modified versions of 372 | it) with contractual assumptions of liability to the recipient, for 373 | any liability that these contractual assumptions directly impose on 374 | those licensors and authors. 375 | 376 | All other non-permissive additional terms are considered "further 377 | restrictions" within the meaning of section 10. If the Program as you 378 | received it, or any part of it, contains a notice stating that it is 379 | governed by this License along with a term that is a further 380 | restriction, you may remove that term. If a license document contains 381 | a further restriction but permits relicensing or conveying under this 382 | License, you may add to a covered work material governed by the terms 383 | of that license document, provided that the further restriction does 384 | not survive such relicensing or conveying. 385 | 386 | If you add terms to a covered work in accord with this section, you 387 | must place, in the relevant source files, a statement of the 388 | additional terms that apply to those files, or a notice indicating 389 | where to find the applicable terms. 390 | 391 | Additional terms, permissive or non-permissive, may be stated in the 392 | form of a separately written license, or stated as exceptions; 393 | the above requirements apply either way. 394 | 395 | 8. Termination. 396 | 397 | You may not propagate or modify a covered work except as expressly 398 | provided under this License. Any attempt otherwise to propagate or 399 | modify it is void, and will automatically terminate your rights under 400 | this License (including any patent licenses granted under the third 401 | paragraph of section 11). 402 | 403 | However, if you cease all violation of this License, then your 404 | license from a particular copyright holder is reinstated (a) 405 | provisionally, unless and until the copyright holder explicitly and 406 | finally terminates your license, and (b) permanently, if the copyright 407 | holder fails to notify you of the violation by some reasonable means 408 | prior to 60 days after the cessation. 409 | 410 | Moreover, your license from a particular copyright holder is 411 | reinstated permanently if the copyright holder notifies you of the 412 | violation by some reasonable means, this is the first time you have 413 | received notice of violation of this License (for any work) from that 414 | copyright holder, and you cure the violation prior to 30 days after 415 | your receipt of the notice. 416 | 417 | Termination of your rights under this section does not terminate the 418 | licenses of parties who have received copies or rights from you under 419 | this License. If your rights have been terminated and not permanently 420 | reinstated, you do not qualify to receive new licenses for the same 421 | material under section 10. 422 | 423 | 9. Acceptance Not Required for Having Copies. 424 | 425 | You are not required to accept this License in order to receive or 426 | run a copy of the Program. Ancillary propagation of a covered work 427 | occurring solely as a consequence of using peer-to-peer transmission 428 | to receive a copy likewise does not require acceptance. However, 429 | nothing other than this License grants you permission to propagate or 430 | modify any covered work. These actions infringe copyright if you do 431 | not accept this License. Therefore, by modifying or propagating a 432 | covered work, you indicate your acceptance of this License to do so. 433 | 434 | 10. Automatic Licensing of Downstream Recipients. 435 | 436 | Each time you convey a covered work, the recipient automatically 437 | receives a license from the original licensors, to run, modify and 438 | propagate that work, subject to this License. You are not responsible 439 | for enforcing compliance by third parties with this License. 440 | 441 | An "entity transaction" is a transaction transferring control of an 442 | organization, or substantially all assets of one, or subdividing an 443 | organization, or merging organizations. If propagation of a covered 444 | work results from an entity transaction, each party to that 445 | transaction who receives a copy of the work also receives whatever 446 | licenses to the work the party's predecessor in interest had or could 447 | give under the previous paragraph, plus a right to possession of the 448 | Corresponding Source of the work from the predecessor in interest, if 449 | the predecessor has it or can get it with reasonable efforts. 450 | 451 | You may not impose any further restrictions on the exercise of the 452 | rights granted or affirmed under this License. For example, you may 453 | not impose a license fee, royalty, or other charge for exercise of 454 | rights granted under this License, and you may not initiate litigation 455 | (including a cross-claim or counterclaim in a lawsuit) alleging that 456 | any patent claim is infringed by making, using, selling, offering for 457 | sale, or importing the Program or any portion of it. 458 | 459 | 11. Patents. 460 | 461 | A "contributor" is a copyright holder who authorizes use under this 462 | License of the Program or a work on which the Program is based. The 463 | work thus licensed is called the contributor's "contributor version". 464 | 465 | A contributor's "essential patent claims" are all patent claims 466 | owned or controlled by the contributor, whether already acquired or 467 | hereafter acquired, that would be infringed by some manner, permitted 468 | by this License, of making, using, or selling its contributor version, 469 | but do not include claims that would be infringed only as a 470 | consequence of further modification of the contributor version. For 471 | purposes of this definition, "control" includes the right to grant 472 | patent sublicenses in a manner consistent with the requirements of 473 | this License. 474 | 475 | Each contributor grants you a non-exclusive, worldwide, royalty-free 476 | patent license under the contributor's essential patent claims, to 477 | make, use, sell, offer for sale, import and otherwise run, modify and 478 | propagate the contents of its contributor version. 479 | 480 | In the following three paragraphs, a "patent license" is any express 481 | agreement or commitment, however denominated, not to enforce a patent 482 | (such as an express permission to practice a patent or covenant not to 483 | sue for patent infringement). To "grant" such a patent license to a 484 | party means to make such an agreement or commitment not to enforce a 485 | patent against the party. 486 | 487 | If you convey a covered work, knowingly relying on a patent license, 488 | and the Corresponding Source of the work is not available for anyone 489 | to copy, free of charge and under the terms of this License, through a 490 | publicly available network server or other readily accessible means, 491 | then you must either (1) cause the Corresponding Source to be so 492 | available, or (2) arrange to deprive yourself of the benefit of the 493 | patent license for this particular work, or (3) arrange, in a manner 494 | consistent with the requirements of this License, to extend the patent 495 | license to downstream recipients. "Knowingly relying" means you have 496 | actual knowledge that, but for the patent license, your conveying the 497 | covered work in a country, or your recipient's use of the covered work 498 | in a country, would infringe one or more identifiable patents in that 499 | country that you have reason to believe are valid. 500 | 501 | If, pursuant to or in connection with a single transaction or 502 | arrangement, you convey, or propagate by procuring conveyance of, a 503 | covered work, and grant a patent license to some of the parties 504 | receiving the covered work authorizing them to use, propagate, modify 505 | or convey a specific copy of the covered work, then the patent license 506 | you grant is automatically extended to all recipients of the covered 507 | work and works based on it. 508 | 509 | A patent license is "discriminatory" if it does not include within 510 | the scope of its coverage, prohibits the exercise of, or is 511 | conditioned on the non-exercise of one or more of the rights that are 512 | specifically granted under this License. You may not convey a covered 513 | work if you are a party to an arrangement with a third party that is 514 | in the business of distributing software, under which you make payment 515 | to the third party based on the extent of your activity of conveying 516 | the work, and under which the third party grants, to any of the 517 | parties who would receive the covered work from you, a discriminatory 518 | patent license (a) in connection with copies of the covered work 519 | conveyed by you (or copies made from those copies), or (b) primarily 520 | for and in connection with specific products or compilations that 521 | contain the covered work, unless you entered into that arrangement, 522 | or that patent license was granted, prior to 28 March 2007. 523 | 524 | Nothing in this License shall be construed as excluding or limiting 525 | any implied license or other defenses to infringement that may 526 | otherwise be available to you under applicable patent law. 527 | 528 | 12. No Surrender of Others' Freedom. 529 | 530 | If conditions are imposed on you (whether by court order, agreement or 531 | otherwise) that contradict the conditions of this License, they do not 532 | excuse you from the conditions of this License. If you cannot convey a 533 | covered work so as to satisfy simultaneously your obligations under this 534 | License and any other pertinent obligations, then as a consequence you may 535 | not convey it at all. For example, if you agree to terms that obligate you 536 | to collect a royalty for further conveying from those to whom you convey 537 | the Program, the only way you could satisfy both those terms and this 538 | License would be to refrain entirely from conveying the Program. 539 | 540 | 13. Remote Network Interaction; Use with the GNU General Public License. 541 | 542 | Notwithstanding any other provision of this License, if you modify the 543 | Program, your modified version must prominently offer all users 544 | interacting with it remotely through a computer network (if your version 545 | supports such interaction) an opportunity to receive the Corresponding 546 | Source of your version by providing access to the Corresponding Source 547 | from a network server at no charge, through some standard or customary 548 | means of facilitating copying of software. This Corresponding Source 549 | shall include the Corresponding Source for any work covered by version 3 550 | of the GNU General Public License that is incorporated pursuant to the 551 | following paragraph. 552 | 553 | Notwithstanding any other provision of this License, you have 554 | permission to link or combine any covered work with a work licensed 555 | under version 3 of the GNU General Public License into a single 556 | combined work, and to convey the resulting work. The terms of this 557 | License will continue to apply to the part which is the covered work, 558 | but the work with which it is combined will remain governed by version 559 | 3 of the GNU General Public License. 560 | 561 | 14. Revised Versions of this License. 562 | 563 | The Free Software Foundation may publish revised and/or new versions of 564 | the GNU Affero General Public License from time to time. Such new versions 565 | will be similar in spirit to the present version, but may differ in detail to 566 | address new problems or concerns. 567 | 568 | Each version is given a distinguishing version number. If the 569 | Program specifies that a certain numbered version of the GNU Affero General 570 | Public License "or any later version" applies to it, you have the 571 | option of following the terms and conditions either of that numbered 572 | version or of any later version published by the Free Software 573 | Foundation. If the Program does not specify a version number of the 574 | GNU Affero General Public License, you may choose any version ever published 575 | by the Free Software Foundation. 576 | 577 | If the Program specifies that a proxy can decide which future 578 | versions of the GNU Affero General Public License can be used, that proxy's 579 | public statement of acceptance of a version permanently authorizes you 580 | to choose that version for the Program. 581 | 582 | Later license versions may give you additional or different 583 | permissions. However, no additional obligations are imposed on any 584 | author or copyright holder as a result of your choosing to follow a 585 | later version. 586 | 587 | 15. Disclaimer of Warranty. 588 | 589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 597 | 598 | 16. Limitation of Liability. 599 | 600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 608 | SUCH DAMAGES. 609 | 610 | 17. Interpretation of Sections 15 and 16. 611 | 612 | If the disclaimer of warranty and limitation of liability provided 613 | above cannot be given local legal effect according to their terms, 614 | reviewing courts shall apply local law that most closely approximates 615 | an absolute waiver of all civil liability in connection with the 616 | Program, unless a warranty or assumption of liability accompanies a 617 | copy of the Program in return for a fee. 618 | 619 | END OF TERMS AND CONDITIONS 620 | 621 | How to Apply These Terms to Your New Programs 622 | 623 | If you develop a new program, and you want it to be of the greatest 624 | possible use to the public, the best way to achieve this is to make it 625 | free software which everyone can redistribute and change under these terms. 626 | 627 | To do so, attach the following notices to the program. It is safest 628 | to attach them to the start of each source file to most effectively 629 | state the exclusion of warranty; and each file should have at least 630 | the "copyright" line and a pointer to where the full notice is found. 631 | 632 | 633 | Copyright (C) 634 | 635 | This program is free software: you can redistribute it and/or modify 636 | it under the terms of the GNU Affero General Public License as published 637 | by the Free Software Foundation, either version 3 of the License, or 638 | (at your option) any later version. 639 | 640 | This program is distributed in the hope that it will be useful, 641 | but WITHOUT ANY WARRANTY; without even the implied warranty of 642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 643 | GNU Affero General Public License for more details. 644 | 645 | You should have received a copy of the GNU Affero General Public License 646 | along with this program. If not, see . 647 | 648 | Also add information on how to contact you by electronic and paper mail. 649 | 650 | If your software can interact with users remotely through a computer 651 | network, you should also make sure that it provides a way for users to 652 | get its source. For example, if your program is a web application, its 653 | interface could display a "Source" link that leads users to an archive 654 | of the code. There are many ways you could offer source, and different 655 | solutions will be better for different programs; see section 13 for the 656 | specific requirements. 657 | 658 | You should also get your employer (if you work as a programmer) or school, 659 | if any, to sign a "copyright disclaimer" for the program, if necessary. 660 | For more information on this, and how to apply and follow the GNU AGPL, see 661 | . 662 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Introduce 2 | The code for this script to detect streaming media unlocking is all from the open source project [https://github.com/lmc999/RegionRestrictionCheck](https://github.com/lmc999/RegionRestrictionCheck) , and the open source protocol is AGPL-3.0. This script is open source as required by the open source license. Thanks to the original author @lmc999 and everyone who made the pull request for this project for their contributions. 3 | # How to use 4 | ``` 5 | wget https://raw.githubusercontent.com/iamsaltedfish/check-stream-media/main/csm.sh 6 | bash csm.sh 7 | ``` 8 | -------------------------------------------------------------------------------- /binary/Hulu4.sh.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamsaltedfish/check-stream-media/740adc45af84b7c8d74849bba09cece62b2d5b0a/binary/Hulu4.sh.x -------------------------------------------------------------------------------- /binary/Hulu4_arm.sh.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamsaltedfish/check-stream-media/740adc45af84b7c8d74849bba09cece62b2d5b0a/binary/Hulu4_arm.sh.x -------------------------------------------------------------------------------- /binary/Hulu4_arm64.sh.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamsaltedfish/check-stream-media/740adc45af84b7c8d74849bba09cece62b2d5b0a/binary/Hulu4_arm64.sh.x -------------------------------------------------------------------------------- /binary/Hulu4_darwin.sh.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamsaltedfish/check-stream-media/740adc45af84b7c8d74849bba09cece62b2d5b0a/binary/Hulu4_darwin.sh.x -------------------------------------------------------------------------------- /binary/Hulu4_i686.sh.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamsaltedfish/check-stream-media/740adc45af84b7c8d74849bba09cece62b2d5b0a/binary/Hulu4_i686.sh.x -------------------------------------------------------------------------------- /binary/Hulu6.sh.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamsaltedfish/check-stream-media/740adc45af84b7c8d74849bba09cece62b2d5b0a/binary/Hulu6.sh.x -------------------------------------------------------------------------------- /binary/Hulu6_arm.sh.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamsaltedfish/check-stream-media/740adc45af84b7c8d74849bba09cece62b2d5b0a/binary/Hulu6_arm.sh.x -------------------------------------------------------------------------------- /binary/Hulu6_arm64.sh.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamsaltedfish/check-stream-media/740adc45af84b7c8d74849bba09cece62b2d5b0a/binary/Hulu6_arm64.sh.x -------------------------------------------------------------------------------- /binary/Hulu6_darwin.sh.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamsaltedfish/check-stream-media/740adc45af84b7c8d74849bba09cece62b2d5b0a/binary/Hulu6_darwin.sh.x -------------------------------------------------------------------------------- /binary/Hulu6_i686.sh.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamsaltedfish/check-stream-media/740adc45af84b7c8d74849bba09cece62b2d5b0a/binary/Hulu6_i686.sh.x -------------------------------------------------------------------------------- /cookies: -------------------------------------------------------------------------------- 1 | grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&latitude=0&longitude=0&platform=browser&subject_token=DISNEYASSERTION&subject_token_type=urn%3Abamtech%3Aparams%3Aoauth%3Atoken-type%3Adevice 2 | 'authorization: Bearer ZGlzbmV5JmJyb3dzZXImMS4wLjA.Cu56AgSfBTDag5NiRA81oLHkDZfu5L3CKadnefEAY84' 3 | "AMCVS_CFAF55745DD2611E0A495C82%40AdobeOrg=1; s_pvDate=2021%2F06%2F17; s_cc=true; wowow2_mem_guide=visited; wowow2_MGSID=4440260aa4011f0162393267600028772; wowow2_MGSID_AuthTicket=fd28d6b1349fd2e672af97370c4eaa4d42a4fdf2; demographics=01301; u-demographics=BAD81A3D84A07B32EC333E1BEFE72F10; wowow2_sls=1; wowow2_ext_MGSID=4440260aa4011f0162393267600028772; wod_auth=CfDJ8D-H-2bqdw1AjJk3TVDbKLaZydf2DfrFVw51ktRQdWqpml0TtbTZudBFfOd-ReyghPDX8aTlo8Ys_shmm-Nv7GBeFMrsM-pUufuTmiSYX7yEa5D9h6YDRA7OviqDLyAKDHUpZifwVToT1vKg_A9G1UMaS0exxBx_TcoOe9U_3Ex4HAb98A5106gj-6ztKoSPVxxKEneO1JdtLe3uVCZ_HMqh6oCeJCZvvlOVN_w_lECjchu58NGtZWmV3mE02DZ-SK5X6xT6GTetvr5EvFKJAxNfaNvkHoS_e-20dz-c-8huuTuvXTg3-i5OAQSyG5UQ_VRz-qqMVV-JR2xmRyxPuEifLU3Iy_B0IWvE65YZlexmL2KVEP745nB7-wCRuVzu9zEdO1IRHQ3fruQ_8RJqb0g; wod_secret=1e4c8db631cd4d2f986102a87811e8e5; s_ips=1010; s_sq=%5B%5BB%5D%5D; x_xsrf_token=1623934360j1T6bPwpGswOnPp3IrcHFZ5vPMo8LE; s_gpvPage=www%3Awowow%3Amember%3Alogin.php%3Ard%3Ahttps%3A%2B%2Bwww.wowow.co.jp%2Bsupport%2Bregist_self.php; s_tp=1010; s_ppv=www%253Awowow%253Amember%253Alogin.php%253Ard%253Ahttps%253A%2B%2Bwww.wowow.co.jp%2Bsupport%2Bregist_self.php%2C100%2C100%2C1010%2C1%2C1; s_nr365=1623934367877-Repeat; AMCV_CFAF55745DD2611E0A495C82%40AdobeOrg=-432600572%7CMCIDTS%7C18796%7CMCMID%7C30796674720677405047057880592301178864%7CMCOPTOUT-1623941567s%7CNONE%7CvVersion%7C4.5.2" 4 | "Accept: application/json;pk=BCpkADawqM3ZdH8iYjCnmIpuIRqzCn12gVrtpk_qOePK3J9B6h7MuqOw5T_qIqdzpLvuvb_hTvu7hs-7NsvXnPTYKd9Cgw7YiwI9kFfOOCDDEr20WDEYMjGiLptzWouXXdfE996WWM8myP3Z" 5 | {"device_identifier":"2B3BACF5B121715649E5D667D863612E:2ea6","deejay_device_id":190,"version":1,"all_cdn":true,"content_eab_id":"EAB::ea0def9a-afa3-4371-b126-964e1c6bea89::60515729::2000604","region":"US","xlink_support":false,"device_ad_id":"7DC1A194-92E0-117A-A072-E22535FD3B8D","limit_ad_tracking":false,"ignore_kids_block":false,"language":"en","guid":"2B3BACF5B121715649E5D667D863612E","rv":838281,"kv":451730,"unencrypted":true,"include_t2_revenue_beacon":"1","cp_session_id":"D5A29AC4-45C5-28EC-2D90-310D8B603665","interface_version":"1.11.0","network_mode":"wifi","play_intent":"resume","lat":23.1192247,"long":113.2199658,"playback":{"version":2,"video":{"codecs":{"values":[{"type":"H264","width":1920,"height":1080,"framerate":60,"level":"4.2","profile":"HIGH"}],"selection_mode":"ONE"}},"audio":{"codecs":{"values":[{"type":"AAC"}],"selection_mode":"ONE"}},"drm":{"values":[{"type":"WIDEVINE","version":"MODULAR","security_level":"L3"},{"type":"PLAYREADY","version":"V2","security_level":"SL2000"}],"selection_mode":"ALL"},"manifest":{"type":"DASH","https":true,"multiple_cdns":true,"patch_updates":true,"hulu_types":true,"live_dai":true,"multiple_periods":false,"xlink":false,"secondary_audio":true,"live_fragment_delay":3},"segments":{"values":[{"type":"FMP4","encryption":{"mode":"CENC","type":"CENC"},"https":true}],"selection_mode":"ONE"}}} 6 | _h_csrf_id=7409960e2a4c5cacdf4ad0b40d02f1f419ec19a5cf5efde88838f56154d36dab; _hulu_uid=201194534; _hulu_e_id=f49WXX_ScBCK8xPpPfT7JA; _hulu_bluekai_hashed_uid=c0e4c9575742fe7542cbc0eb475f6585; _hulu_dt=CJDtoJLb0AF7xJTRQLO7v6aOJ7I-dqaPkHo8l6LPP1bcLnYA_A--PkyDXJwUJG3o0hWDnKkYILcL_%2FBrDxIXAlyoHDx14NHeeJfctC29Xzsx4tNJedYQZuy1w%2FZLgczSI3qt8nirWwAobE0wmi8OhdO_%2FLmh7Ln7bRqner5sqC0xIsSvDYv%2FkpKdrRyPCzLX0GNhWEcU1sjqGNJhcNySujfMh%2Fq%2FfTe6Gz9vb7rtjpGCRWKNdPWG3vSyNnOKd8J6HLZIWQpVkUuvYqF_D0HrdhVRRAEAu9cpfgW%2F_bPgaG_mWKAt3%2F9_iF0ksf1trvm4Vw01HA1ufRMi1kxTrMfcQ%2FRfmsIL0lVIoUPtdCNWJuQ_xyncNryUK27dYEBI1ZBKpVWk9QO_0F_6XtIjq2etmGLG98e%2Fx74yefigQ7aQACuedPlvDRHOm2Dx7ElxcIBzKGnOBtLt66wPzOHIxa94awZzpjhjBjEJ4JdhngP0DSsaFGzvzXlio9QivBgeAh8FgAl%2F3odQ8mLstQH1Cslz1NiPU9rruTuGmLASk%2F%2FLpYUyOYUOJl%2FfD7K02Xq7nF3MnWv4PTC79Gl5AoxZeGKy9WBFQAVCUKI6OYx_oc3I1McQXBNK1GFkegEHahWO7qUgA6547ucmytiM0llw%2Fyvv8M%2FTuIebc0fGdeV6Ym2AK5ElvBmqMCPVUTrAOP1qK8JC7CkZQ6Cm5U7qw8AEyRrpPfNqdZK00Abne0RAyrbthfzy7bfoMktRMqiP704AgaT3M_YRn9SshQ081Fx8uHI1GE5YmJvo7umw0ZtV0gGxXexxtaZQgqrAx75uyLoWyG2uvuvNCmufWvJrNJ9uEAiXIrghWdtQYYXqbVjFTa6gt4DKKpiDW_J39vf6EeSQyu0jCzlFYrVGmweLDbVXWLk_zeqUBzcbuB4-; _hulu_pid=201194639; _hulu_pname=Bill%20Gates; _hulu_is_p_kids=0; guid=051BDA2EDE200DE1E7C1E48FBE9BE703; AMCVS_0A19F13A598372E90A495D62%40AdobeOrg=1; _hulu_uname=Bill+Gates; _hulu_utype=plus%3Aios; _hulu_pgid=3; _hulu_plid=70828; _hulu_psh=0; _hulu_psvh=0; _csrf_id=75e11783d40cc993792dad9e0816af9443362c9b53e92ef7797f0355a8b95d68; s_cc=true; _hulu_assignments=eyJ2MSI6W3siZSI6OTc5LCJ0IjoyNjk3LCJuIjoiaHVsdV8xMzU3OF93ZWxjb21lX2Jfd2hpdGVfY3RhIn1dfQ%3D%3D; _hulu_hbc=1624194121035; _hulu_session=k2JE4gPqVlM3LtStdErz12jw0U8-lI3d5nWPy2Q8W4tMGGbtzg--atiahdg9XQKv5WqAhkS9t7POnyCifqFVkGE3tpGy6tEMl9UPrfBQ6_RsNDR%2FcGVnz%2FPILVruTsa58eLUq5zdtqFb9nNbvQ53lrRn3WYess8Gs1IMI6Hxj1Zkknh0FbxUcS18um%2FqAeWcyLKTSjJ_FtHwRBzw34fufh0UgyvdcygP_yif9jJ4vLy7W7vhyhRVS_9wLMi206arcdFKfgMNglamSjyxVcBJFEzs91vHiZyK0UEfnpzCpKCujWu38bUIiGbHfpR06kuQ4P80OBp7PXFZ5U3w%2FQT5PzfCdutdQoHbjqw_W8yCdwp0HTzdwmDuRCGKrqBk6KArHtLZA4zFAoovr_d9dKWsZDnWXMc4RjomDzNRP0cjyAa7vXnV_viWf3BoGRuuyBLEwEak%2Fj86fHOW1frY94bdSSQidgZck_8yKl6zHY8Uk_e_TMMrItdSRGO7NwkoWDjl_%2FtbTcahUBhHqVTSOTnVO3U1IzIWW3o8JA0568k92g5roSTKBI6EUD9SktBFcfrzPszL5CJtjt_FuWp9agQyLcQODapMEYhq9USPsnM9MWJatxpHhgY%2FlFmOdOx6z1QK8fBdYuWSK9ExYmr9xYh10DzsO7tYlJn0P6pq65Zv1_US61CVtsHNHOXr4DEsvWuAJGi17f6s2boUrKJiCIxQOuJMwZiJTpjkW2eTH3oeg4nisbUlnb15IrdMdtdwTG26vOGjG5ByHeXZ721mVZfNbm7ghx0nSrKLb_gmM0mdtUM9qyTSB_cyJM5aqQB2LctzuaEaIeLKkUIlXIPGsSiLSDmNX3HGRLdLKuQl1Yoq_7TNkv%2FRXN7t7ybUTTTo6cFsTp7JbbS4%2Ft3HT04m3jY9UhBN80l29hwft0M3eeE2tASFnn90KZs8jd43l0xHu4on9Vbsd2cjHbPi2FyF_utXqI0OUBAQltuNyC9mXW755KbryCErZnb7xkt3VrK5eqdPS70ZdLgfGtID4NGrPCCLgMsPEqNwK4pKbK1kH4exmksjDnwyj5YVIRYywj9LoipgKEnFJzD6IUqhB5ybA8bKLc8qFXPJbUZnmn_u6lEwtUh_heet1mu5; bm_mi=C7288944D1321EF6C7049F7B9FA20378~0QSp6QjTtRiEjeSjIpWX2cS6CplgPGcGlXazUQnps1dJF2Nv2BNe3oqUpw+u+oCKfOR1BMCbrHb3VOpz5cOed+rbDVzxclxodIKKJC/ZXNjTo15F5PC9vIkYqgNSAk5yU4gWV2SaLwT+JBsOydzNcPRwuY+z6+gkCw6eqGSQx0kZQfE/d+xMaJiStH+uUD6tNyCA4nIps5JpeEaNLzWjwuE4EaOuOCC8yZyLh7x8W0AsdEdkeEQEz1GLYgJmwnS0954PSECxwS5zQyqMB2vJSg==; ak_bmsc=72FC22728A28C7F3DC94376C9C3554F3~000000000000000000000000000000~YAAQTXZiaOhghx96AQAAWha6KQwV7/I2tiArb8nII7tGbF20EEmg3lH9OsRYJE/tzpyywpT3eeD2Td/IVRmVmurRrQ5Vp+YIs++zYbvI4XVQKXRtmv7mM0lDDhqOeR+dpM4CRBdT7Vv9eNYchfzID5cd7xzgYLqubfP70LR0zfaTubjfFdjMvawyOIQwAPfaErrsX0iiEpmy4G/nonxdTGB3bBQ7kAYoVpWAtAon8QoYoRx5HCjFzE/c7TKqZ/iDXcUq5tvZjptzNfnF5iChraxr5wlkiDh9eyWWCk/rTJozMeI1tX1HwH+In8iv4T7cTtZJh5MRq+IH/bXrwJtty51jvGu8B5mCaDUsHZKWRtEJpJMp7ta5o1nHrAQuiymFNRMEIPDqxDLbAA==; XSRF-TOKEN=8335e11a-8c68-483e-9a80-2d7f79856b44; AMCV_0A19F13A598372E90A495D62%40AdobeOrg=-408604571%7CMCIDTS%7C18799%7CMCMID%7C59607436576250353666502608938647993204%7CMCAID%7CNONE%7CMCOPTOUT-1624204908s%7CNONE%7CvVersion%7C4.6.0; bm_sv=A5945B0C79D7AA8B5A878BCDD21707C7~uii8SKBBdtZtDcwf0sopMCO3ldEL6L8p4F4PuMBF2DW9zw1kwgQO3b0dRgkojZaH5rNoMisLrt4Fz4c+JeL/zj4YKNr/3DOgt3wK7/tUvEZZPpLFFMlSPjel2Y7D3Gt7N8JMW42t9Gj2gAXFO4nCFA==; _hulu_metrics_context_v1_=%7B%22cookie_session_guid%22%3A%228d152d975a317957990c7d80022cd87c%22%2C%22referrer_url%22%3A%22%22%2C%22curr_page_uri%22%3A%22app%3Awatch%22%2C%22primary_ref_page_uri%22%3A%22urn%3Ahulu%3Ahub%3Ahome%22%2C%22secondary_ref_page_uri%22%3Anull%2C%22curr_page_type%22%3A%22watch%22%2C%22primary_ref_page_type%22%3A%22home%22%2C%22secondary_ref_page_type%22%3Anull%2C%22secondary_ref_click%22%3Anull%2C%22primary_ref_click%22%3A%22Demon%20Slayer%20Kimetsu%20No%20Yaiba%22%2C%22primary_ref_collection%22%3A%22282%22%2C%22secondary_ref_collection%22%3Anull%2C%22primary_ref_collection_source%22%3A%22heimdall%22%2C%22secondary_ref_collection_source%22%3Anull%2C%22ref_collection_position%22%3A0%7D; metrics_tracker_session_manager=%7B%22session_id%22%3A%22051BDA2EDE200DE1E7C1E48FBE9BE703-4040a0e1-3ec2-4b14-b7d2-85115b386d30%22%2C%22creation_time%22%3A1624197697579%2C%22visit_count%22%3A1%2C%22session_seq%22%3A11%2C%22idle_time%22%3A1624197708635%7D 7 | {"query":"mutation refreshToken($input: RefreshTokenInput!) {\n refreshToken(refreshToken: $input) {\n activeSession {\n sessionId\n }\n }\n }","variables":{"input":{"refreshToken":"eyJ6aXAiOiJERUYiLCJraWQiOiJLcTYtNW1Ia3BxOXdzLUtsSUUyaGJHYkRIZFduRjU3UjZHY1h6aFlvZi04IiwiY3R5IjoiSldUIiwiZW5jIjoiQzIwUCIsImFsZyI6ImRpciJ9..qnHbUZQXPtEv5n5s.kKfiwHFTT-u6b92OIDNGE8HBbJd_1EsCx3apaucHSvIj44bbLVvwDWkvtnD67qgtqY08_ohitM51nawYdPbLOE45hA2j7d7kaksYtDcj3rVg_Vys_Mxjs_HMdIDn8MdY71SqRl-f9848oDdzTrEswgW-fYqzWjY1Ur7mwmqDTumWWDhzjWCl_-aQWJuHp4CD8UdvfcIr7kVAbJR4_NL0VN69cYCMnBslxo53zNSc8v2MWYsENLxvpU1RD38EoJRjAWCYYmToeqNkxehEemn_qDJNxLdilp40ca4xcLCOCQgjl2hQnLDL4SFj6lIo1Gz2nWI8SOtQECia3Y9Rm778rjfPt2VYsmGux_rnRjipjiCnSSjy2VEjxT_BYFTpfxMU51OqlaqUB5v7xpjAmiQCA20GZcmJBizrHwjRKyFLn7b5jM72_MUE84jruVbgt7PR8XqFAmn76w8SnkgIdZvmnyHHsDB66jGBaRRY91Jrnx5RMyavsYTQRb_JMmCXvNZY1DDpAMuRTOB98uoRdhGsdItROJgKrdY_dyNlmp3BU9mi64Q76JQsRQpqgpIHJParHprX1CSGURa57SP0lo8RUPzwW2c0XJWITicYwvSbpuMGKwFyHECvY7-LqFwrS_VgQzYwv7zxJ_DGSqGGkwLpUAtJgBQ5tZEIeDFUVy_hy8O0Pxu35sHwmOqE3YGvUZagDKU6A_WfXNgP5HX9A9myI57iGxDte2xIEdVjsrEi8OaDByJ9epWMJH97yovmRjw9sv6eJIlfRqHmNi7p9ZFP2seOSaMweVqY4U7gGdNL33kh4VN8QrDD7Iz9l9499lmrB5Zr6jOVDSYJ20PhfXyLWG8WyxY8bPg2kI9xCO295ngti58cyKRteZ_mmGaFoaJjQGNHYKBoFzDCWts4o7T8jgjsMarTx30BjAr09ruyp5zd6C743iaVPQKdhA3gx8gPWlQhpHDoqXx5c6gosiS_Ty8i_pS5eGHuVqiz9Qv4Nb-uZXqgvcWEcbHYxc76dx9sLUzulOY66AdWUWXQc6G6z-XbgkwmK-BpaQrVZcoAhU_Ci69SBHD_XR9eN6XOAUVh2Bsu7Bgb8q5fFJn7gyz2oqujBWpDKM8hraV_IPU8geGOPUQyMetepIFY1SjeOqVM_h6ng9LehWQ0aQiPOn-BDlXhEVCjQDtAmxrW6tj0Hc7InvURGUaL97y22A2MvNh9eaG_h6ztzpm-iBdCkOzdOihrzXZqZmHhaoZADxYgZTL0UDnXBH6CtPuWiBfTycQbXNyjM9nm4y0EsDl14asIUqymDzTq-S9ZYfu2QzLMZXaw4khhLZ7bYsHNaIWd22phXhUxIJQb3Sb_xOlaWlEjWebTw-wWKJ9KQEcroSuKCIKoLLhb21qw_WX8-IN0qlWrk02UJJR1Kz7hoa0Da5QF_yQgkqk4dE_JNn9IxnQOFAEKqASmwORW-3bAH2SqEUhSAUvOIZjVAgO721aUF5TDgiEjLJvfQcEWmETjcHFFwzfnoKVjMRFOj_zHwrsZ-OoPst0D14GT4cs26M4yi7d15Pt28v2CNSHWug4gh89IT5EtkV_wlzuTyBc9hgronT5kN7v6-DHyYPSDh4vfT4BckqzMsi4QxsMBUZ0hYBojdODoW40ckBTncizRf5QqObzfk3WSmv4y7zoseY4c4erV7k6O_O9_op8mcRcVyMDiWchMT4SmrFRP-tBbTmIkp18F3YUIOdPzY1m40c3DdkaP-TrQlNsbpfPSpZURKT97BoZjy3JGofFr--zNvBHUS1lxXxkOkLXCEHSudnBsqSoc5HJP7-qjwfoqCV76E_iZ9zjWNrNN6X3NnYmRfZ8dso8KZfaGBf6u_90qpg6ZBtRa9GzyWS9qBJRi95408UqK5R9m5IDZtQ2B_J7yhMBN2MWXuyBmJoq0_a1BUGXmF50z4avcHbQWQdD-Yf76z1xMD1pLvgb8b9rk6wxxda94XnyvOmX8orY8O7wJXEKSygDm2nKE4gBK1apAi0SbKdXcAdnQfh4hbfcJDmWr5NBjjdKuOzJdnTI8voEFQB4BiUsP2t40orQRFxu-gdmpnGGiApgsojcvCx25ev1TFK0845-NmK0rY2Nvd9o_NBulWnSsWJcGKzODceqi3qaxoQ9U90tOFnipqvJ3lu3BTJWqMedQSrQDzbiUegeAjQd9w2Fz7LLNDSY0V4UO764pCVDJKJBLByifkOuFrkiUJwBVe8LIb7raFYO9P9HOUw1fmcH1rsZajPuWQJQBaQMLm-gon7uJpORZUuYyovv4MBWtJDl_VmIUI4mPwRL8YrzfvuzdMKwCw6ri6zKCbxkBsocALSVBJACPIRvvi4SgeV_F--efROD0.UjQJShStniHGbdb5WwRH5Q"}}} 8 | {"query":"mutation refreshToken($input: RefreshTokenInput!) {\n refreshToken(refreshToken: $input) {\n activeSession {\n sessionId\n }\n }\n }","variables":{"input":{"refreshToken":"ILOVEDISNEY"}}} 9 | grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&latitude=0&longitude=0&platform=browser&subject_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJlM2NkMTFmYi1hZjA4LTQ4Y2UtOGJmNi03ZTVhNDdmNDdmMzUiLCJhdWQiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOnRva2VuIiwibmJmIjoxNjMwNDIxNDc0LCJpc3MiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOmRldmljZSIsImV4cCI6MjQ5NDQyMTQ3NCwiaWF0IjoxNjMwNDIxNDc0LCJqdGkiOiI0NGFhNWE4NC01YzdmLTQzOTMtYWFjNy1kN2U5OGM3MzU2NmMifQ.3NIPcVfIPgkDsJJoBD2RS9MK86i-xuIABKcYNl1oCCJJ2bzTiK8cgdPZNrpah7EMzIesVQdVet4Epxpy99jw2w&subject_token_type=urn%3Abamtech%3Aparams%3Aoauth%3Atoken-type%3Adevice 10 | {"query":"mutation registerDevice($input: RegisterDeviceInput!) {\n registerDevice(registerDevice: $input) {\n grant {\n grantType\n assertion\n }\n }\n }","variables":{"input":{"deviceFamily":"browser","applicationRuntime":"chrome","deviceProfile":"windows","deviceLanguage":"zh-CN","attributes":{"osDeviceIds":[],"manufacturer":"microsoft","model":null,"operatingSystem":"windows","operatingSystemVersion":"10.0","browserName":"chrome","browserVersion":"96.0.4664"}}}} 11 | grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&latitude=0&longitude=0&platform=browser&subject_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJjYWJmMDNkMi0xMmEyLTQ0YjYtODJjOS1lOWJkZGNhMzYwNjkiLCJhdWQiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOnRva2VuIiwibmJmIjoxNjMyMjMwMTY4LCJpc3MiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOmRldmljZSIsImV4cCI6MjQ5NjIzMDE2OCwiaWF0IjoxNjMyMjMwMTY4LCJqdGkiOiJhYTI0ZWI5Yi1kNWM4LTQ5ODctYWI4ZS1jMDdhMWVhMDgxNzAifQ.8RQ-44KqmctKgdXdQ7E1DmmWYq0gIZsQw3vRL8RvCtrM_hSEHa-CkTGIFpSLpJw8sMlmTUp5ZGwvhghX-4HXfg&subject_token_type=urn%3Abamtech%3Aparams%3Aoauth%3Atoken-type%3Adevice 12 | authorization: Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiOTNlZDQyZC00M2RiLTQzNDMtYThjZi1mZTk4YTY2NzVkNTgiLCJpc3MiOiJMaWdodGJveCIsImV4cCI6MTY2NDk3NTExMSwiZGV2aWNlSWQiOiI2NTgzZWU4YmM0YzQwZmJhOTgzMGQ0ZTYwNTM5ZDAzNSIsInBsYXRmb3JtIjoiV2ViIiwiYnJvd3NlciI6IkNocm9tZSIsInRhYiI6MTYzMzQxNzUwNzY4OSwib3MiOiJXaW5kb3dzIDEwLjAiLCJpYXQiOjE2MzM0MTc1MTF9.E7qgVpqsJEPsh0B3lgK9x8hPs7nQ_Bio_FCt1H8mB4XCPrsand4kHVHA5LpiB5rvBLfOaSfJKru-gKuMlgLJhg 13 | {"operationName":"UpdateAccount","variables":{"input":{"name":"Reid","surname":"Hershel","email":"restriction.check@gmail.com","password":"restriction.check","optIns":[{"id":"RECEIVE_UPDATES","subscribed":false}]}},"query":"mutation UpdateAccount($input: AccountInput!, $pin: String) {\n account(input: $input, pin: $pin) {\n ...AccountFields\n __typename\n }\n}\n\nfragment AccountFields on Account {\n name\n surname\n email\n selectedProfile\n hasPin\n optIns {\n id\n text\n subscribed\n __typename\n }\n phoneNumbers {\n home\n mobile\n __typename\n }\n session {\n token\n __typename\n }\n profiles {\n ...ProfileFields\n __typename\n }\n settings {\n requirePinForSwitchProfile\n requirePinForManageProfile\n tvodPurchaseRestriction\n playbackQuality {\n ...PlaybackQualityFields\n __typename\n }\n __typename\n }\n purchases {\n totalItems\n items {\n ...PurchaseFields\n __typename\n }\n __typename\n }\n cpCustomerID\n subscription {\n ...SubscriptionInformationFields\n __typename\n }\n __typename\n}\n\nfragment ProfileFields on Profile {\n id\n name\n email\n isKid\n isDefault\n needToConfigure\n ageGroup\n avatar {\n uri\n id\n __typename\n }\n closedCaption\n maxRating\n mobile\n __typename\n}\n\nfragment PlaybackQualityFields on PlaybackQuality {\n wifi {\n id\n label\n description\n bitrate\n __typename\n }\n __typename\n}\n\nfragment PurchaseFields on Purchase {\n id\n profile {\n id\n name\n __typename\n }\n contentItem {\n ...ContentItemLightFields\n __typename\n }\n product {\n id\n name\n renewable\n __typename\n }\n total\n startAvailable\n endAvailable\n endViewable\n __typename\n}\n\nfragment ContentItemLightFields on ContentItem {\n id\n isRental\n ... on Title {\n id\n ldId\n path\n title\n year\n rating {\n id\n rating\n __typename\n }\n genres\n duration\n images {\n uri\n __typename\n }\n createdAt\n products {\n id\n originalPrice\n currentPrice\n name\n currency\n __typename\n }\n isComingSoon\n videoExtras {\n ...VideoExtraFields\n __typename\n }\n tile {\n image\n header\n subHeader\n badge\n contentItem {\n id\n __typename\n }\n sortValues {\n key\n value\n __typename\n }\n playbackInfo {\n status\n numberMinutesRemaining\n numberMinutesWatched\n position\n __typename\n }\n rentalInfo {\n secondsLeftToStartWatching\n secondsLeftToWatch\n __typename\n }\n __typename\n }\n __typename\n }\n ... on Series {\n title\n ldId\n genres\n path\n products {\n id\n originalPrice\n currentPrice\n name\n currency\n __typename\n }\n seasons {\n id\n episodes {\n id\n title\n seasonNumber\n episodeNumber\n __typename\n }\n __typename\n }\n images {\n uri\n __typename\n }\n createdAt\n isComingSoon\n videoExtras {\n ...VideoExtraFields\n __typename\n }\n tile {\n image\n header\n subHeader\n badge\n contentItem {\n id\n __typename\n }\n sortValues {\n key\n value\n __typename\n }\n playbackInfo {\n status\n numberMinutesRemaining\n numberMinutesWatched\n position\n __typename\n }\n rentalInfo {\n secondsLeftToStartWatching\n secondsLeftToWatch\n __typename\n }\n __typename\n }\n __typename\n }\n ... on Episode {\n episodeNumber\n seasonNumber\n series {\n id\n title\n path\n seasons {\n episodes {\n id\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n ... on VideoExtra {\n contentItems {\n id\n __typename\n }\n __typename\n }\n __typename\n}\n\nfragment VideoExtraFields on VideoExtra {\n id\n description\n images {\n id\n uri\n height\n width\n __typename\n }\n tile {\n image\n __typename\n }\n start\n end\n title\n videoEncodings {\n ...VideoEncodingFields\n __typename\n }\n __typename\n}\n\nfragment VideoEncodingFields on VideoEncoding {\n id\n format\n referenceId\n size\n offlineEnabled\n __typename\n}\n\nfragment SubscriptionInformationFields on SubscriptionInformation {\n currentSubscription {\n name\n sku\n endsAt\n startsAt\n price\n features\n order {\n voucherCode\n __typename\n }\n subscriptionGAType\n promotion {\n name\n price\n isSpark\n isFreeTrial\n expiration\n isBridgingOfferPromotion\n __typename\n }\n evSubscriptionStatus\n __typename\n }\n upcomingSubscription {\n name\n sku\n endsAt\n startsAt\n price\n order {\n voucherCode\n __typename\n }\n subscriptionGAType\n promotion {\n name\n price\n isSpark\n isFreeTrial\n expiration\n __typename\n }\n evSubscriptionStatus\n __typename\n }\n upcomingFinalBillSubscription {\n sku\n evSubscriptionStatus\n __typename\n }\n nextPayment {\n date\n method\n type\n price\n __typename\n }\n recentPayments {\n date\n method\n type\n price\n __typename\n }\n status\n renewalStatus\n recurringVouchers {\n orderDetails {\n productName\n voucherCode\n status\n promotion {\n endDate\n id\n amount\n isExhausted\n __typename\n }\n __typename\n }\n __typename\n }\n dcbSubscriptionInfo {\n partnerName\n __typename\n }\n __typename\n}\n"} 14 | mid=Y1_jFQALAAESwuLfrykcPY44iiIn; ig_did=B755589F-4987-4BED-B6F1-B74C38CDDA46; ig_nrcb=1; fbm_124024574287414=base_domain=.instagram.com; csrftoken=jAYfEUaIhg4JesaPCEw1HaMv20FJ6SZZ; datr=TZ5UYyACdSfnzT1SNWn1oIYE; ds_user_id=56650907390; sessionid=56650907390%3AiPRndDWmoZupKb%3A9%3AAYdsMadARTC9Sys8SCMeMpjqQFWyhnMaVCgPfPyCGw; dpr=1.25 15 | -------------------------------------------------------------------------------- /csm.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | shopt -s expand_aliases 3 | Font_Black="\033[30m" 4 | Font_Red="\033[31m" 5 | Font_Green="\033[32m" 6 | Font_Yellow="\033[33m" 7 | Font_Blue="\033[34m" 8 | Font_Purple="\033[35m" 9 | Font_SkyBlue="\033[36m" 10 | Font_White="\033[37m" 11 | Font_Suffix="\033[0m" 12 | 13 | while getopts ":I:M:EX:P:" optname; do 14 | case "$optname" in 15 | "I") 16 | iface="$OPTARG" 17 | useNIC="--interface $iface" 18 | ;; 19 | "M") 20 | if [[ "$OPTARG" == "4" ]]; then 21 | NetworkType=4 22 | elif [[ "$OPTARG" == "6" ]]; then 23 | NetworkType=6 24 | fi 25 | ;; 26 | "E") 27 | language="e" 28 | ;; 29 | "X") 30 | XIP="$OPTARG" 31 | xForward="--header X-Forwarded-For:$XIP" 32 | ;; 33 | "P") 34 | proxy="$OPTARG" 35 | usePROXY="-x $proxy" 36 | ;; 37 | ":") 38 | echo "Unknown error while processing options" 39 | exit 1 40 | ;; 41 | esac 42 | 43 | done 44 | 45 | if [ -z "$iface" ]; then 46 | useNIC="" 47 | fi 48 | 49 | if [ -z "$XIP" ]; then 50 | xForward="" 51 | fi 52 | 53 | if [ -z "$proxy" ]; then 54 | usePROXY="" 55 | elif [ -n "$proxy" ]; then 56 | NetworkType=4 57 | fi 58 | 59 | if ! mktemp -u --suffix=RRC &>/dev/null; then 60 | is_busybox=1 61 | fi 62 | 63 | UA_Browser="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36" 64 | UA_Dalvik="Dalvik/2.1.0 (Linux; U; Android 9; ALP-AL00 Build/HUAWEIALP-AL00)" 65 | Media_Cookie=$(curl -s --retry 3 --max-time 10 "https://raw.githubusercontent.com/lmc999/RegionRestrictionCheck/main/cookies") 66 | IATACode=$(curl -s --retry 3 --max-time 10 "https://raw.githubusercontent.com/lmc999/RegionRestrictionCheck/main/reference/IATACode.txt") 67 | WOWOW_Cookie=$(echo "$Media_Cookie" | awk 'NR==3') 68 | TVer_Cookie="Accept: application/json;pk=BCpkADawqM0_rzsjsYbC1k1wlJLU4HiAtfzjxdUmfvvLUQB-Ax6VA-p-9wOEZbCEm3u95qq2Y1CQQW1K9tPaMma9iAqUqhpISCmyXrgnlpx9soEmoVNuQpiyGsTpePGumWxSs1YoKziYB6Wz" 69 | 70 | blue() 71 | { 72 | echo -e "\033[34m[input]\033[0m" 73 | } 74 | 75 | countRunTimes() { 76 | if [ "$is_busybox" == 1 ]; then 77 | count_file=$(mktemp) 78 | else 79 | count_file=$(mktemp --suffix=RRC) 80 | fi 81 | RunTimes=$(curl -s --max-time 10 "https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fcheck.unclock.media&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=visit&edge_flat=false" >"${count_file}") 82 | TodayRunTimes=$(cat "${count_file}" | tail -3 | head -n 1 | awk '{print $5}') 83 | TotalRunTimes=$(($(cat "${count_file}" | tail -3 | head -n 1 | awk '{print $7}') + 2527395)) 84 | } 85 | countRunTimes 86 | 87 | checkOS() { 88 | ifTermux=$(echo $PWD | grep termux) 89 | ifMacOS=$(uname -a | grep Darwin) 90 | if [ -n "$ifTermux" ]; then 91 | os_version=Termux 92 | is_termux=1 93 | elif [ -n "$ifMacOS" ]; then 94 | os_version=MacOS 95 | is_macos=1 96 | else 97 | os_version=$(grep 'VERSION_ID' /etc/os-release | cut -d '"' -f 2 | tr -d '.') 98 | fi 99 | 100 | if [[ "$os_version" == "2004" ]] || [[ "$os_version" == "10" ]] || [[ "$os_version" == "11" ]]; then 101 | is_windows=1 102 | ssll="-k --ciphers DEFAULT@SECLEVEL=1" 103 | fi 104 | 105 | if [ "$(which apt 2>/dev/null)" ]; then 106 | InstallMethod="apt" 107 | is_debian=1 108 | elif [ "$(which dnf 2>/dev/null)" ] || [ "$(which yum 2>/dev/null)" ]; then 109 | InstallMethod="yum" 110 | is_redhat=1 111 | elif [[ "$os_version" == "Termux" ]]; then 112 | InstallMethod="pkg" 113 | elif [[ "$os_version" == "MacOS" ]]; then 114 | InstallMethod="brew" 115 | fi 116 | } 117 | 118 | checkCPU() { 119 | CPUArch=$(uname -m) 120 | if [[ "$CPUArch" == "aarch64" ]]; then 121 | arch=_arm64 122 | elif [[ "$CPUArch" == "i686" ]]; then 123 | arch=_i686 124 | elif [[ "$CPUArch" == "arm" ]]; then 125 | arch=_arm 126 | elif [[ "$CPUArch" == "x86_64" ]] && [ -n "$ifMacOS" ]; then 127 | arch=_darwin 128 | fi 129 | } 130 | 131 | checkDependencies() { 132 | 133 | # os_detail=$(cat /etc/os-release 2> /dev/null) 134 | 135 | if ! command -v python &>/dev/null; then 136 | if command -v python3 &>/dev/null; then 137 | alias python="python3" 138 | else 139 | if [ "$is_debian" == 1 ]; then 140 | echo -e "${Font_Green}Installing python${Font_Suffix}" 141 | $InstallMethod update >/dev/null 2>&1 142 | $InstallMethod install python -y >/dev/null 2>&1 143 | elif [ "$is_redhat" == 1 ]; then 144 | echo -e "${Font_Green}Installing python${Font_Suffix}" 145 | if [[ "$os_version" -gt 7 ]]; then 146 | $InstallMethod makecache >/dev/null 2>&1 147 | $InstallMethod install python3 -y >/dev/null 2>&1 148 | alias python="python3" 149 | else 150 | $InstallMethod makecache >/dev/null 2>&1 151 | $InstallMethod install python -y >/dev/null 2>&1 152 | fi 153 | 154 | elif [ "$is_termux" == 1 ]; then 155 | echo -e "${Font_Green}Installing python${Font_Suffix}" 156 | $InstallMethod update -y >/dev/null 2>&1 157 | $InstallMethod install python -y >/dev/null 2>&1 158 | 159 | elif [ "$is_macos" == 1 ]; then 160 | echo -e "${Font_Green}Installing python${Font_Suffix}" 161 | $InstallMethod install python 162 | fi 163 | fi 164 | fi 165 | 166 | if ! command -v dig &>/dev/null; then 167 | if [ "$is_debian" == 1 ]; then 168 | echo -e "${Font_Green}Installing dnsutils${Font_Suffix}" 169 | $InstallMethod update >/dev/null 2>&1 170 | $InstallMethod install dnsutils -y >/dev/null 2>&1 171 | elif [ "$is_redhat" == 1 ]; then 172 | echo -e "${Font_Green}Installing bind-utils${Font_Suffix}" 173 | $InstallMethod makecache >/dev/null 2>&1 174 | $InstallMethod install bind-utils -y >/dev/null 2>&1 175 | elif [ "$is_termux" == 1 ]; then 176 | echo -e "${Font_Green}Installing dnsutils${Font_Suffix}" 177 | $InstallMethod update -y >/dev/null 2>&1 178 | $InstallMethod install dnsutils -y >/dev/null 2>&1 179 | elif [ "$is_macos" == 1 ]; then 180 | echo -e "${Font_Green}Installing bind${Font_Suffix}" 181 | $InstallMethod install bind 182 | fi 183 | fi 184 | 185 | if [ "$is_macos" == 1 ]; then 186 | if ! command -v md5sum &>/dev/null; then 187 | echo -e "${Font_Green}Installing md5sha1sum${Font_Suffix}" 188 | $InstallMethod install md5sha1sum 189 | fi 190 | fi 191 | 192 | } 193 | checkDependencies 194 | 195 | local_ipv4=$(curl $useNIC $usePROXY -4 -s --max-time 10 api64.ipify.org) 196 | local_ipv4_asterisk=$(awk -F"." '{print $1"."$2".*.*"}' <<<"${local_ipv4}") 197 | local_ipv6=$(curl $useNIC -6 -s --max-time 20 api64.ipify.org) 198 | local_ipv6_asterisk=$(awk -F":" '{print $1":"$2":"$3":*:*"}' <<<"${local_ipv6}") 199 | local_isp4=$(curl $useNIC -s -4 --max-time 10 --user-agent "${UA_Browser}" "https://api.ip.sb/geoip/${local_ipv4}" | grep organization | cut -f4 -d '"') 200 | local_isp6=$(curl $useNIC -s -6 --max-time 10 --user-agent "${UA_Browser}" "https://api.ip.sb/geoip/${local_ipv6}" | grep organization | cut -f4 -d '"') 201 | 202 | ShowRegion() { 203 | echo -e "${Font_Yellow} ---${1}---${Font_Suffix}" 204 | } 205 | 206 | ########################################### 207 | # # 208 | # required check item # 209 | # # 210 | ########################################### 211 | 212 | MediaUnlockTest_BBCiPLAYER() { 213 | local tmpresult=$(curl $useNIC $usePROXY $xForward --user-agent "${UA_Browser}" -${1} ${ssll} -fsL --max-time 10 "https://open.live.bbc.co.uk/mediaselector/6/select/version/2.0/mediaset/pc/vpid/bbc_one_london/format/json/jsfunc/JS_callbacks0" 2>&1) 214 | if [ "${tmpresult}" = "000" ]; then 215 | echo -n -e "\r BBC iPLAYER:\t\t\t\t${Font_Red}Failed (Network Connection)${Font_Suffix}\n" 216 | return 217 | fi 218 | 219 | if [ -n "$tmpresult" ]; then 220 | result=$(echo $tmpresult | grep 'geolocation') 221 | if [ -n "$result" ]; then 222 | echo -n -e "\r BBC iPLAYER:\t\t\t\t${Font_Red}No${Font_Suffix}\n" 223 | modifyJsonTemplate 'BBC_result' 'No' 224 | else 225 | echo -n -e "\r BBC iPLAYER:\t\t\t\t${Font_Green}Yes${Font_Suffix}\n" 226 | modifyJsonTemplate 'BBC_result' 'Yes' 227 | fi 228 | else 229 | echo -n -e "\r BBC iPLAYER:\t\t\t\t${Font_Red}Failed${Font_Suffix}\n" 230 | modifyJsonTemplate 'BBC_result' 'Unknow' 231 | fi 232 | } 233 | 234 | MediaUnlockTest_MyTVSuper() { 235 | local result=$(curl $useNIC $usePROXY $xForward -s -${1} --max-time 10 "https://www.mytvsuper.com/api/auth/getSession/self/" 2>&1 | python -m json.tool 2>/dev/null | grep 'region' | awk '{print $2}') 236 | 237 | if [[ "$result" == "1" ]]; then 238 | echo -n -e "\r MyTVSuper:\t\t\t\t${Font_Green}Yes${Font_Suffix}\n" 239 | modifyJsonTemplate 'MyTVSuper_result' 'Yes' 240 | return 241 | else 242 | echo -n -e "\r MyTVSuper:\t\t\t\t${Font_Red}No${Font_Suffix}\n" 243 | modifyJsonTemplate 'MyTVSuper_result' 'No' 244 | return 245 | fi 246 | 247 | echo -n -e "\r MyTVSuper:\t\t\t\t${Font_Red}Failed (Network Connection)${Font_Suffix}\n" 248 | modifyJsonTemplate 'MyTVSuper_result' 'Unknow' 249 | return 250 | 251 | } 252 | 253 | MediaUnlockTest_BilibiliHKMCTW() { 254 | local randsession="$(cat /dev/urandom | head -n 32 | md5sum | head -c 32)" 255 | # 尝试获取成功的结果 256 | local result=$(curl $useNIC $usePROXY $xForward --user-agent "${UA_Browser}" -${1} -fsSL --max-time 10 "https://api.bilibili.com/pgc/player/web/playurl?avid=18281381&cid=29892777&qn=0&type=&otype=json&ep_id=183799&fourk=1&fnver=0&fnval=16&session=${randsession}&module=bangumi" 2>&1) 257 | if [[ "$result" != "curl"* ]]; then 258 | local result="$(echo "${result}" | python -m json.tool 2>/dev/null | grep '"code"' | head -1 | awk '{print $2}' | cut -d ',' -f1)" 259 | if [ "${result}" = "0" ]; then 260 | echo -n -e "\r BiliBili Hongkong/Macau/Taiwan:\t${Font_Green}Yes${Font_Suffix}\n" 261 | modifyJsonTemplate 'BilibiliHKMCTW_result' 'Yes' 262 | elif [ "${result}" = "-10403" ]; then 263 | echo -n -e "\r BiliBili Hongkong/Macau/Taiwan:\t${Font_Red}No${Font_Suffix}\n" 264 | modifyJsonTemplate 'BilibiliHKMCTW_result' 'No' 265 | else 266 | echo -n -e "\r BiliBili Hongkong/Macau/Taiwan:\t${Font_Red}Failed${Font_Suffix} ${Font_SkyBlue}(${result})${Font_Suffix}\n" 267 | modifyJsonTemplate 'BilibiliHKMCTW_result' 'Unknow' 268 | fi 269 | else 270 | echo -n -e "\r BiliBili Hongkong/Macau/Taiwan:\t${Font_Red}Failed (Network Connection)${Font_Suffix}\n" 271 | modifyJsonTemplate 'BilibiliHKMCTW_result' 'Unknow' 272 | fi 273 | } 274 | 275 | MediaUnlockTest_BilibiliTW() { 276 | local randsession="$(cat /dev/urandom | head -n 32 | md5sum | head -c 32)" 277 | # 尝试获取成功的结果 278 | local result=$(curl $useNIC $usePROXY $xForward --user-agent "${UA_Browser}" -${1} -fsSL --max-time 10 "https://api.bilibili.com/pgc/player/web/playurl?avid=50762638&cid=100279344&qn=0&type=&otype=json&ep_id=268176&fourk=1&fnver=0&fnval=16&session=${randsession}&module=bangumi" 2>&1) 279 | if [[ "$result" != "curl"* ]]; then 280 | local result="$(echo "${result}" | python -m json.tool 2>/dev/null | grep '"code"' | head -1 | awk '{print $2}' | cut -d ',' -f1)" 281 | if [ "${result}" = "0" ]; then 282 | echo -n -e "\r Bilibili Taiwan Only:\t\t\t${Font_Green}Yes${Font_Suffix}\n" 283 | modifyJsonTemplate 'BilibiliTW_result' 'Yes' 284 | elif [ "${result}" = "-10403" ]; then 285 | echo -n -e "\r Bilibili Taiwan Only:\t\t\t${Font_Red}No${Font_Suffix}\n" 286 | modifyJsonTemplate 'BilibiliTW_result' 'No' 287 | else 288 | echo -n -e "\r Bilibili Taiwan Only:\t\t\t${Font_Red}Failed${Font_Suffix} ${Font_SkyBlue}(${result})${Font_Suffix}\n" 289 | modifyJsonTemplate 'BilibiliTW_result' 'Unknow' 290 | fi 291 | else 292 | echo -n -e "\r Bilibili Taiwan Only:\t\t\t${Font_Red}Failed (Network Connection)${Font_Suffix}\n" 293 | modifyJsonTemplate 'BilibiliTW_result' 'Unknow' 294 | fi 295 | } 296 | 297 | MediaUnlockTest_AbemaTV_IPTest() { 298 | # 299 | local tempresult=$(curl $useNIC $usePROXY $xForward --user-agent "${UA_Dalvik}" -${1} -fsL --write-out %{http_code} --max-time 10 "https://api.abema.io/v1/ip/check?device=android" 2>&1) 300 | if [[ "$tempresult" == "000" ]]; then 301 | echo -n -e "\r Abema.TV:\t\t\t\t${Font_Red}Failed (Network Connection)${Font_Suffix}\n" 302 | return 303 | fi 304 | 305 | result=$(curl $useNIC $usePROXY $xForward --user-agent "${UA_Dalvik}" -${1} -fsL --max-time 10 "https://api.abema.io/v1/ip/check?device=android" 2>&1 | python -m json.tool 2>/dev/null | grep isoCountryCode | awk '{print $2}' | cut -f2 -d'"') 306 | if [ -n "$result" ]; then 307 | if [[ "$result" == "JP" ]]; then 308 | echo -n -e "\r Abema.TV:\t\t\t\t${Font_Green}Yes${Font_Suffix}\n" 309 | modifyJsonTemplate 'AbemaTV_result' 'Yes' 310 | else 311 | echo -n -e "\r Abema.TV:\t\t\t\t${Font_Yellow}Oversea Only${Font_Suffix}\n" 312 | modifyJsonTemplate 'AbemaTV_result' 'Yes' 'Oversea Only' 313 | fi 314 | else 315 | echo -n -e "\r Abema.TV:\t\t\t\t${Font_Red}No${Font_Suffix}\n" 316 | modifyJsonTemplate 'AbemaTV_result' 'No' 317 | fi 318 | } 319 | 320 | MediaUnlockTest_Netflix() { 321 | local result1=$(curl $useNIC $usePROXY $xForward -${1} --user-agent "${UA_Browser}" -fsL --write-out %{http_code} --output /dev/null --max-time 10 "https://www.netflix.com/title/81280792" 2>&1) 322 | 323 | if [[ "$result1" == "404" ]]; then 324 | modifyJsonTemplate 'Netflix_result' 'No' 'Originals Only' 325 | echo -n -e "\r Netflix:\t\t\t\t${Font_Yellow}Originals Only${Font_Suffix}\n" 326 | return 327 | elif [[ "$result1" == "403" ]]; then 328 | echo -n -e "\r Netflix:\t\t\t\t${Font_Red}No${Font_Suffix}\n" 329 | modifyJsonTemplate 'Netflix_result' 'No' 330 | return 331 | elif [[ "$result1" == "200" ]]; then 332 | local region=$(curl $useNIC $usePROXY $xForward -${1} --user-agent "${UA_Browser}" -fs --max-time 10 --write-out %{redirect_url} --output /dev/null "https://www.netflix.com/title/80018499" 2>&1 | cut -d '/' -f4 | cut -d '-' -f1 | tr [:lower:] [:upper:]) 333 | if [[ ! -n "$region" ]]; then 334 | region="US" 335 | fi 336 | echo -n -e "\r Netflix:\t\t\t\t${Font_Green}Yes (Region: ${region})${Font_Suffix}\n" 337 | modifyJsonTemplate 'Netflix_result' 'Yes' "${region}" 338 | return 339 | elif [[ "$result1" == "000" ]]; then 340 | echo -n -e "\r Netflix:\t\t\t\t${Font_Red}Failed (Network Connection)${Font_Suffix}\n" 341 | modifyJsonTemplate 'Netflix_result' 'Unknow' 342 | return 343 | fi 344 | } 345 | 346 | MediaUnlockTest_DisneyPlus() { 347 | local PreAssertion=$(curl $useNIC $usePROXY $xForward -${1} --user-agent "${UA_Browser}" -s --max-time 10 -X POST "https://disney.api.edge.bamgrid.com/devices" -H "authorization: Bearer ZGlzbmV5JmJyb3dzZXImMS4wLjA.Cu56AgSfBTDag5NiRA81oLHkDZfu5L3CKadnefEAY84" -H "content-type: application/json; charset=UTF-8" -d '{"deviceFamily":"browser","applicationRuntime":"chrome","deviceProfile":"windows","attributes":{}}' 2>&1) 348 | if [[ "$PreAssertion" == "curl"* ]] && [[ "$1" == "6" ]]; then 349 | echo -n -e "\r Disney+:\t\t\t\t${Font_Red}IPv6 Not Support${Font_Suffix}\n" 350 | return 351 | elif [[ "$PreAssertion" == "curl"* ]]; then 352 | echo -n -e "\r Disney+:\t\t\t\t${Font_Red}Failed (Network Connection)${Font_Suffix}\n" 353 | modifyJsonTemplate 'DisneyPlus_result' 'Unknow' 354 | return 355 | fi 356 | 357 | local assertion=$(echo $PreAssertion | python -m json.tool 2>/dev/null | grep assertion | cut -f4 -d'"') 358 | local PreDisneyCookie=$(echo "$Media_Cookie" | sed -n '1p') 359 | local disneycookie=$(echo $PreDisneyCookie | sed "s/DISNEYASSERTION/${assertion}/g") 360 | local TokenContent=$(curl $useNIC $usePROXY $xForward -${1} --user-agent "${UA_Browser}" -s --max-time 10 -X POST "https://disney.api.edge.bamgrid.com/token" -H "authorization: Bearer ZGlzbmV5JmJyb3dzZXImMS4wLjA.Cu56AgSfBTDag5NiRA81oLHkDZfu5L3CKadnefEAY84" -d "$disneycookie" 2>&1) 361 | local isBanned=$(echo $TokenContent | python -m json.tool 2>/dev/null | grep 'forbidden-location') 362 | local is403=$(echo $TokenContent | grep '403 ERROR') 363 | 364 | if [ -n "$isBanned" ] || [ -n "$is403" ]; then 365 | echo -n -e "\r Disney+:\t\t\t\t${Font_Red}No${Font_Suffix}\n" 366 | modifyJsonTemplate 'DisneyPlus_result' 'No' 367 | return 368 | fi 369 | 370 | local fakecontent=$(echo "$Media_Cookie" | sed -n '8p') 371 | local refreshToken=$(echo $TokenContent | python -m json.tool 2>/dev/null | grep 'refresh_token' | awk '{print $2}' | cut -f2 -d'"') 372 | local disneycontent=$(echo $fakecontent | sed "s/ILOVEDISNEY/${refreshToken}/g") 373 | local tmpresult=$(curl $useNIC $usePROXY $xForward -${1} --user-agent "${UA_Browser}" -X POST -sSL --max-time 10 "https://disney.api.edge.bamgrid.com/graph/v1/device/graphql" -H "authorization: ZGlzbmV5JmJyb3dzZXImMS4wLjA.Cu56AgSfBTDag5NiRA81oLHkDZfu5L3CKadnefEAY84" -d "$disneycontent" 2>&1) 374 | local previewcheck=$(curl $useNIC $usePROXY $xForward -${1} -s -o /dev/null -L --max-time 10 -w '%{url_effective}\n' "https://disneyplus.com" | grep preview) 375 | local isUnabailable=$(echo $previewcheck | grep 'unavailable') 376 | local region=$(echo $tmpresult | python -m json.tool 2>/dev/null | grep 'countryCode' | cut -f4 -d'"') 377 | local inSupportedLocation=$(echo $tmpresult | python -m json.tool 2>/dev/null | grep 'inSupportedLocation' | awk '{print $2}' | cut -f1 -d',') 378 | 379 | if [[ "$region" == "JP" ]]; then 380 | echo -n -e "\r Disney+:\t\t\t\t${Font_Green}Yes (Region: JP)${Font_Suffix}\n" 381 | modifyJsonTemplate 'DisneyPlus_result' 'Yes' 'JP' 382 | return 383 | elif [ -n "$region" ] && [[ "$inSupportedLocation" == "false" ]] && [ -z "$isUnabailable" ]; then 384 | echo -n -e "\r Disney+:\t\t\t\t${Font_Yellow}Available For [Disney+ $region] Soon${Font_Suffix}\n" 385 | modifyJsonTemplate 'DisneyPlus_result' 'No' 386 | return 387 | elif [ -n "$region" ] && [ -n "$isUnavailable" ]; then 388 | echo -n -e "\r Disney+:\t\t\t\t${Font_Red}No${Font_Suffix}\n" 389 | modifyJsonTemplate 'DisneyPlus_result' 'No' 390 | return 391 | elif [ -n "$region" ] && [[ "$inSupportedLocation" == "true" ]]; then 392 | echo -n -e "\r Disney+:\t\t\t\t${Font_Green}Yes (Region: $region)${Font_Suffix}\n" 393 | modifyJsonTemplate 'DisneyPlus_result' 'Yes' "${region}" 394 | return 395 | elif [ -z "$region" ]; then 396 | echo -n -e "\r Disney+:\t\t\t\t${Font_Red}No${Font_Suffix}\n" 397 | modifyJsonTemplate 'DisneyPlus_result' 'No' 398 | return 399 | else 400 | echo -n -e "\r Disney+:\t\t\t\t${Font_Red}Failed${Font_Suffix}\n" 401 | modifyJsonTemplate 'DisneyPlus_result' 'Unknow' 402 | return 403 | fi 404 | 405 | } 406 | 407 | MediaUnlockTest_YouTube_Premium() { 408 | local tmpresult=$(curl $useNIC $usePROXY $xForward --user-agent "${UA_Browser}" -${1} --max-time 10 -sSL -H "Accept-Language: en" -b "YSC=BiCUU3-5Gdk; CONSENT=YES+cb.20220301-11-p0.en+FX+700; GPS=1; VISITOR_INFO1_LIVE=4VwPMkB7W5A; PREF=tz=Asia.Shanghai; _gcl_au=1.1.1809531354.1646633279" "https://www.youtube.com/premium" 2>&1) 409 | 410 | if [[ "$tmpresult" == "curl"* ]]; then 411 | echo -n -e "\r YouTube Premium:\t\t\t${Font_Red}Failed (Network Connection)${Font_Suffix}\n" 412 | modifyJsonTemplate 'YouTube_Premium_result' 'Unknow' 413 | return 414 | fi 415 | 416 | local isCN=$(echo $tmpresult | grep 'www.google.cn') 417 | if [ -n "$isCN" ]; then 418 | echo -n -e "\r YouTube Premium:\t\t\t${Font_Red}No${Font_Suffix} ${Font_Green} (Region: CN)${Font_Suffix} \n" 419 | modifyJsonTemplate 'YouTube_Premium_result' 'No' 'CN' 420 | return 421 | fi 422 | local isNotAvailable=$(echo $tmpresult | grep 'Premium is not available in your country') 423 | local region=$(echo $tmpresult | grep "countryCode" | sed 's/.*"countryCode"//' | cut -f2 -d'"') 424 | local isAvailable=$(echo $tmpresult | grep '/month') 425 | 426 | if [ -n "$isNotAvailable" ]; then 427 | echo -n -e "\r YouTube Premium:\t\t\t${Font_Red}No${Font_Suffix} \n" 428 | modifyJsonTemplate 'YouTube_Premium_result' 'No' 429 | return 430 | elif [ -n "$isAvailable" ] && [ -n "$region" ]; then 431 | echo -n -e "\r YouTube Premium:\t\t\t${Font_Green}Yes (Region: $region)${Font_Suffix}\n" 432 | modifyJsonTemplate 'YouTube_Premium_result' 'Yes' "${region}" 433 | return 434 | elif [ -z "$region" ] && [ -n "$isAvailable" ]; then 435 | echo -n -e "\r YouTube Premium:\t\t\t${Font_Green}Yes${Font_Suffix}\n" 436 | modifyJsonTemplate 'YouTube_Premium_result' 'Yes' 437 | return 438 | else 439 | echo -n -e "\r YouTube Premium:\t\t\t${Font_Red}Failed${Font_Suffix}\n" 440 | modifyJsonTemplate 'YouTube_Premium_result' 'Unknow' 441 | fi 442 | } 443 | 444 | ### 445 | # @Author: Vincent Young 446 | # @Date: 2023-02-09 17:39:59 447 | # @LastEditors: Vincent Young 448 | # @LastEditTime: 2023-02-15 20:54:40 449 | # @FilePath: /OpenAI-Checker/openai.sh 450 | # @Telegram: https://t.me/missuo 451 | # 452 | # Copyright © 2023 by Vincent, All Rights Reserved. 453 | ### 454 | 455 | OpenAiUnlockTest() 456 | { 457 | RED='\033[0;31m' 458 | GREEN='\033[0;32m' 459 | YELLOW='\033[0;33m' 460 | PLAIN='\033[0m' 461 | BLUE="\033[36m" 462 | 463 | SUPPORT_COUNTRY=(AL DZ AD AO AG AR AM AU AT AZ BS BD BB BE BZ BJ BT BA BW BR BG BF CV CA CL CO KM CR HR CY DK DJ DM DO EC SV EE FJ FI FR GA GM GE DE GH GR GD GT GN GW GY HT HN HU IS IN ID IQ IE IL IT JM JP JO KZ KE KI KW KG LV LB LS LR LI LT LU MG MW MY MV ML MT MH MR MU MX MC MN ME MA MZ MM NA NR NP NL NZ NI NE NG MK NO OM PK PW PA PG PE PH PL PT QA RO RW KN LC VC WS SM ST SN RS SC SL SG SK SI SB ZA ES LK SR SE CH TH TG TO TT TN TR TV UG AE US UY VU ZM BO BN CG CZ VA FM MD PS KR TW TZ TL GB) 464 | echo 465 | echo -e "${BLUE}OpenAI Access Checker. Made by Vincent${PLAIN}" 466 | echo -e "${BLUE}https://github.com/missuo/OpenAI-Checker${PLAIN}" 467 | #echo "-------------------------------------" 468 | if [[ $(curl -sS https://chat.openai.com/ -I | grep "text/plain") != "" ]] 469 | then 470 | echo "Your IP is BLOCKED!" 471 | else 472 | #echo -e "[IPv4]" 473 | # check4=`ping 1.1.1.1 -c 1 2>&1`; 474 | # if [[ "$check4" != *"received"* ]] && [[ "$check4" != *"transmitted"* ]];then 475 | # echo -e "\033[34mIPv4 is not supported on the current host. Skip...\033[0m"; 476 | # modifyJsonTemplate 'OpenAI_result' 'Unknow' 477 | # else 478 | # local_ipv4=$(curl -4 -s --max-time 10 api64.ipify.org) 479 | #local_ipv4=$(curl -4 -sS https://chat.openai.com/cdn-cgi/trace | grep "ip=" | awk -F= '{print $2}') 480 | #local_isp4=$(curl -s -4 --max-time 10 --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36" "https://api.ip.sb/geoip/${local_ipv4}" | grep organization | cut -f4 -d '"') 481 | #local_asn4=$(curl -s -4 --max-time 10 --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36" "https://api.ip.sb/geoip/${local_ipv4}" | grep asn | cut -f8 -d ',' | cut -f2 -d ':') 482 | #echo -e "${BLUE}Your IPv4: ${local_ipv4} - ${local_isp4}${PLAIN}" 483 | iso2_code4=$(curl -4 -sS https://chat.openai.com/cdn-cgi/trace | grep "loc=" | awk -F= '{print $2}') 484 | found=0 485 | for country in "${SUPPORT_COUNTRY[@]}" 486 | do 487 | if [[ "${country}" == "${iso2_code4}" ]]; 488 | then 489 | echo -e "${BLUE}Your IP supports access to OpenAI. Region: ${iso2_code4}${PLAIN}" 490 | modifyJsonTemplate 'OpenAI_result' 'Yes' "${iso2_code4}" 491 | found=1 492 | break 493 | fi 494 | done 495 | 496 | if [[ $found -eq 0 ]]; 497 | then 498 | echo -e "${RED}Region: ${iso2_code4}. Not support OpenAI at this time.${PLAIN}" 499 | modifyJsonTemplate 'OpenAI_result' 'No' 500 | fi 501 | # fi 502 | fi 503 | } 504 | 505 | ########################################### 506 | # # 507 | # sspanel unlock check function code # 508 | # # 509 | ########################################### 510 | 511 | createJsonTemplate() { 512 | echo '{ 513 | "YouTube": "YouTube_Premium_result", 514 | "Netflix": "Netflix_result", 515 | "DisneyPlus": "DisneyPlus_result", 516 | "BilibiliHKMCTW": "BilibiliHKMCTW_result", 517 | "BilibiliTW": "BilibiliTW_result", 518 | "MyTVSuper": "MyTVSuper_result", 519 | "BBC": "BBC_result", 520 | "Abema": "AbemaTV_result", 521 | "OpenAI": "OpenAI_result" 522 | }' > /root/media_test_tpl.json 523 | } 524 | 525 | modifyJsonTemplate() { 526 | key_word=$1 527 | result=$2 528 | region=$3 529 | 530 | if [[ "$3" == "" ]]; then 531 | sed -i "s#${key_word}#${result}#g" /root/media_test_tpl.json 532 | else 533 | sed -i "s#${key_word}#${result} (${region})#g" /root/media_test_tpl.json 534 | fi 535 | } 536 | 537 | setCronTask() { 538 | addTask() { 539 | execution_time_interval=$1 540 | 541 | crontab -l >/root/crontab.list 542 | echo "0 */${execution_time_interval} * * * /bin/bash /root/csm.sh" >>/root/crontab.list 543 | crontab /root/crontab.list 544 | rm -rf /root/crontab.list 545 | echo -e "$(green) The scheduled task is added successfully." 546 | } 547 | 548 | crontab -l | grep "csm.sh" >/dev/null 549 | if [[ "$?" != "0" ]]; then 550 | echo "[1] 1 hour" 551 | echo "[2] 2 hour" 552 | echo "[3] 3 hour" 553 | echo "[4] 4 hour" 554 | echo "[5] 6 hour" 555 | echo "[6] 8 hour" 556 | echo "[7] 12 hour" 557 | echo "[8] 24 hour" 558 | echo 559 | read -p "$(blue) Please select the detection frequency and enter the serial number (eg: 1):" time_interval_id 560 | 561 | if [[ "${time_interval_id}" == "5" ]];then 562 | time_interval=6 563 | elif [[ "${time_interval_id}" == "6" ]];then 564 | time_interval=8 565 | elif [[ "${time_interval_id}" == "7" ]];then 566 | time_interval=12 567 | elif [[ "${time_interval_id}" == "8" ]];then 568 | time_interval=24 569 | else 570 | time_interval=$time_interval_id 571 | fi 572 | 573 | case "${time_interval_id}" in 574 | [1-8]) 575 | addTask ${time_interval};; 576 | *) 577 | echo -e "$(red) Choose one from the list given and enter the sequence number." 578 | exit;; 579 | esac 580 | fi 581 | } 582 | 583 | checkConfig() { 584 | getConfig() { 585 | read -p "$(blue) Please enter the panel address (eg: https://demo.sspanel.org):" panel_address 586 | read -p "$(blue) Please enter the mu key:" mu_key 587 | read -p "$(blue) Please enter the node id:" node_id 588 | 589 | if [[ "${panel_address}" = "" ]] || [[ "${mu_key}" = "" ]];then 590 | echo -e "$(red) Complete all necessary parameter entries." 591 | exit 592 | fi 593 | 594 | curl -s "${panel_address}/mod_mu/nodes?key=${mu_key}" | grep "invalid" > /dev/null 595 | if [[ "$?" = "0" ]];then 596 | echo -e "$(red) Wrong website address or mukey error, please try again." 597 | exit 598 | fi 599 | 600 | echo "${panel_address}" > /root/.csm.config 601 | echo "${mu_key}" >> /root/.csm.config 602 | echo "${node_id}" >> /root/.csm.config 603 | } 604 | 605 | if [[ ! -e "/root/.csm.config" ]];then 606 | getConfig 607 | fi 608 | } 609 | 610 | postData() { 611 | if [[ ! -e "/root/.csm.config" ]];then 612 | echo -e "$(red) Missing configuration file." 613 | exit 614 | fi 615 | if [[ ! -e "/root/media_test_tpl.json" ]];then 616 | echo -e "$(red) Missing detection report." 617 | exit 618 | fi 619 | 620 | panel_address=$(sed -n 1p /root/.csm.config) 621 | mu_key=$(sed -n 2p /root/.csm.config) 622 | node_id=$(sed -n 3p /root/.csm.config) 623 | 624 | curl -s -X POST -d "content=$(cat /root/media_test_tpl.json | base64 | xargs echo -n | sed 's# ##g')" "${panel_address}/mod_mu/media/save_report?key=${mu_key}&node_id=${node_id}" > /root/.csm.response 625 | if [[ "$(cat /root/.csm.response)" != "ok" ]];then 626 | curl -s -X POST -d "content=$(cat /root/media_test_tpl.json | base64 | xargs echo -n | sed 's# ##g')" "${panel_address}/mod_mu/media/saveReport?key=${mu_key}&node_id=${node_id}" > /root/.csm.response 627 | fi 628 | 629 | rm -rf /root/media_test_tpl.json /root/.csm.response 630 | } 631 | 632 | printInfo() { 633 | green_start='\033[32m' 634 | color_end='\033[0m' 635 | 636 | echo 637 | echo -e "${green_start}The code for this script to detect streaming media unlocking is all from the open source project https://github.com/lmc999/RegionRestrictionCheck , and the open source protocol is AGPL-3.0. This script is open source as required by the open source license. Thanks to the original author @lmc999 and everyone who made the pull request for this project for their contributions.${color_end}" 638 | echo 639 | echo -e "${green_start}Project: https://github.com/iamsaltedfish/check-stream-media${color_end}" 640 | echo -e "${green_start}Version: 2023-08-07 v.2.0.1${color_end}" 641 | echo -e "${green_start}Author: @iamsaltedfish${color_end}" 642 | } 643 | 644 | runCheck() { 645 | createJsonTemplate 646 | MediaUnlockTest_BBCiPLAYER 4 647 | MediaUnlockTest_MyTVSuper 4 648 | MediaUnlockTest_BilibiliHKMCTW 4 649 | MediaUnlockTest_BilibiliTW 4 650 | MediaUnlockTest_AbemaTV_IPTest 4 651 | MediaUnlockTest_Netflix 4 652 | MediaUnlockTest_YouTube_Premium 4 653 | MediaUnlockTest_DisneyPlus 4 654 | OpenAiUnlockTest 655 | } 656 | 657 | checkData() 658 | { 659 | counter=0 660 | max_check_num=3 661 | cat /root/media_test_tpl.json | grep "_result" > /dev/null 662 | until [ $? != '0' ] || [[ ${counter} -ge ${max_check_num} ]] 663 | do 664 | sleep 1 665 | runCheck > /dev/null 666 | echo -e "\033[33mThere is something wrong with the data and it is being retested for the ${counter} time...\033[0m" 667 | counter=$(expr ${counter} + 1) 668 | done 669 | } 670 | 671 | main() { 672 | echo 673 | checkOS 674 | checkCPU 675 | checkDependencies 676 | setCronTask 677 | checkConfig 678 | runCheck 679 | checkData 680 | postData 681 | printInfo 682 | } 683 | 684 | main 685 | -------------------------------------------------------------------------------- /reference/AD/AD1: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | shopt -s expand_aliases 3 | Font_Black="\033[30m" 4 | Font_Red="\033[31m" 5 | Font_Green="\033[32m" 6 | Font_Yellow="\033[33m" 7 | Font_Blue="\033[34m" 8 | Font_Purple="\033[35m" 9 | Font_SkyBlue="\033[36m" 10 | Font_White="\033[37m" 11 | Font_Suffix="\033[0m" 12 | 13 | echo -e "${Font_SkyBlue}【荐鸡时刻】${Font_Suffix}" 14 | echo -e "================================================" 15 | echo -e "${Font_Yellow}DMIT HKG Lite系列路由优化! 三网去回程直连升级!${Font_Suffix}" 16 | echo "" 17 | echo -e "${Font_SkyBlue}✅ 三网回程CMI${Font_Suffix}" 18 | echo -e "${Font_SkyBlue}✅ 电信联通去程CN2${Font_Suffix}" 19 | echo -e "${Font_SkyBlue}✅ 端口带宽1Gbps起${Font_Suffix}" 20 | echo "" 21 | echo -e "${Font_SkyBlue}Lite系列优惠码(Tiny除外): ${Font_Suffix}" 22 | echo -e "${Font_Green}年付七折【Lite-Annually-Recur-30OFF】 ${Font_Suffix}" 23 | echo -e "${Font_Green}半年付八折【Lite-Semi-Annually-Recur-20OFF】 ${Font_Suffix}" 24 | echo -e "${Font_Red}传送门:${Font_Suffix}https://www.dmit.io/aff.php?aff=3198&gid=1" 25 | echo -e "================================================" 26 | -------------------------------------------------------------------------------- /reference/AD/AD2: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | Font_Black="\033[30m" 3 | Font_Red="\033[31m" 4 | Font_Green="\033[32m" 5 | Font_Yellow="\033[33m" 6 | Font_Blue="\033[34m" 7 | Font_Purple="\033[35m" 8 | Font_SkyBlue="\033[36m" 9 | Font_White="\033[37m" 10 | Font_Suffix="\033[0m" 11 | echo -e "${Font_SkyBlue}【广告推广】${Font_Suffix}" 12 | echo -e "================================================" 13 | echo -e "${Font_Red}流媒体DNS解锁 Pro Max!${Font_Suffix}" 14 | echo "" 15 | echo -e "${Font_SkyBlue}仅需接入一个DNS即可解锁全球超过60+流媒体平台!${Font_Suffix}" 16 | echo "" 17 | echo -e "解锁支持列表:https://i.imgur.com/fhKbQTK.jpg" 18 | echo "" 19 | echo -e "${Font_Yellow}了解详情请关注频道: https://t.me/LMT_Unblock${Font_Suffix}" 20 | echo "" 21 | echo -e "================================================" 22 | -------------------------------------------------------------------------------- /reference/AD/ADBF: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | shopt -s expand_aliases 3 | Font_Black="\033[30m" 4 | Font_Red="\033[31m" 5 | Font_Green="\033[32m" 6 | Font_Yellow="\033[33m" 7 | Font_Blue="\033[34m" 8 | Font_Purple="\033[35m" 9 | Font_SkyBlue="\033[36m" 10 | Font_White="\033[37m" 11 | Font_Suffix="\033[0m" 12 | 13 | echo -e "${Font_SkyBlue}【荐鸡时刻】${Font_Suffix}" 14 | echo -e "================================================" 15 | echo -e "${Font_Yellow}DMIT 黑色星期五疯狂优惠!${Font_Suffix}" 16 | echo "" 17 | echo -e "${Font_SkyBlue}✅ 高达30%全区域折扣${Font_Suffix}" 18 | echo -e "${Font_SkyBlue}✅ 买多省多${Font_Suffix}" 19 | echo -e "${Font_SkyBlue}✅ 买一送一${Font_Suffix}" 20 | echo -e "${Font_SkyBlue}✅ 批量采购优惠${Font_Suffix}" 21 | echo "" 22 | echo -e "${Font_Red}传送门:${Font_Suffix}https://www.dmit.io/aff.php?aff=3198" 23 | echo -e "================================================" 24 | -------------------------------------------------------------------------------- /reference/AD/ADJP: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | Font_Black="\033[30m" 3 | Font_Red="\033[31m" 4 | Font_Green="\033[32m" 5 | Font_Yellow="\033[33m" 6 | Font_Blue="\033[34m" 7 | Font_Purple="\033[35m" 8 | Font_SkyBlue="\033[36m" 9 | Font_White="\033[37m" 10 | Font_Suffix="\033[0m" 11 | echo -e "${Font_SkyBlue}【广告推广】${Font_Suffix}" 12 | echo -e "================================================" 13 | echo -e "${Font_Red}日本【So-net家宽】流媒体DNS解锁${Font_Suffix}" 14 | echo "" 15 | echo -e "${Font_SkyBlue}解锁所有日本流媒体及游戏!${Font_Suffix}" 16 | echo "" 17 | echo -e "${Font_Yellow}了解详情请关注频道: https://t.me/LMT_Unblock${Font_Suffix}" 18 | echo "" 19 | echo -e "================================================" 20 | -------------------------------------------------------------------------------- /reference/AD/ADKR: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | Font_Black="\033[30m" 3 | Font_Red="\033[31m" 4 | Font_Green="\033[32m" 5 | Font_Yellow="\033[33m" 6 | Font_Blue="\033[34m" 7 | Font_Purple="\033[35m" 8 | Font_SkyBlue="\033[36m" 9 | Font_White="\033[37m" 10 | Font_Suffix="\033[0m" 11 | echo -e "${Font_SkyBlue}【广告推广】${Font_Suffix}" 12 | echo -e "================================================" 13 | echo -e "${Font_Red}韩国【KT家宽】流媒体DNS解锁${Font_Suffix}" 14 | echo "" 15 | echo -e "${Font_SkyBlue}解锁所有韩国流媒体及游戏!${Font_Suffix}" 16 | echo "" 17 | echo -e "${Font_Yellow}了解详情请关注频道: https://t.me/LMT_Unblock${Font_Suffix}" 18 | echo "" 19 | echo -e "================================================" 20 | -------------------------------------------------------------------------------- /reference/AD/ADTW: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | Font_Black="\033[30m" 3 | Font_Red="\033[31m" 4 | Font_Green="\033[32m" 5 | Font_Yellow="\033[33m" 6 | Font_Blue="\033[34m" 7 | Font_Purple="\033[35m" 8 | Font_SkyBlue="\033[36m" 9 | Font_White="\033[37m" 10 | Font_Suffix="\033[0m" 11 | echo -e "${Font_SkyBlue}【台湾VPS推荐】${Font_Suffix}" 12 | echo -e "================================================" 13 | echo -e "${Font_Yellow}筋斗云台湾VPS 5刀/月起${Font_Suffix}" 14 | echo "" 15 | echo -e "${Font_SkyBlue}✅ 解锁所有台湾流媒体平台${Font_Suffix}" 16 | echo -e "${Font_SkyBlue}✅ 1Gbps端口${Font_Suffix}" 17 | echo "" 18 | echo -e "${Font_Red}传送门:${Font_Suffix}https://portal.nimbus.com.tw/aff.php?aff=16&gid=35" 19 | echo -e "================================================" 20 | -------------------------------------------------------------------------------- /reference/AD/ADUS: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | shopt -s expand_aliases 3 | Font_Black="\033[30m" 4 | Font_Red="\033[31m" 5 | Font_Green="\033[32m" 6 | Font_Yellow="\033[33m" 7 | Font_Blue="\033[34m" 8 | Font_Purple="\033[35m" 9 | Font_SkyBlue="\033[36m" 10 | Font_White="\033[37m" 11 | Font_Suffix="\033[0m" 12 | 13 | echo -e "${Font_SkyBlue}【荐鸡时刻】${Font_Suffix}" 14 | echo -e "================================================" 15 | echo -e "${Font_Yellow}DMIT 美西CN2 GIA系列流量速率大升级! 价格更优惠!${Font_Suffix}" 16 | echo "" 17 | echo -e "${Font_SkyBlue}✅ x1.3倍流量${Font_Suffix}" 18 | echo -e "${Font_SkyBlue}✅ 端口速率升级至最低1Gbps${Font_Suffix}" 19 | echo -e "${Font_SkyBlue}✅ 7折折扣码优惠${Font_Suffix}" 20 | echo "" 21 | echo -e "${Font_SkyBlue}pocket机型年付七折码: ${Font_Suffix}" 22 | echo -e "${Font_Green}【LAX-Pocket-Special-Annual-30off-Replace-IP-Restricted-To-Once-Per-90-Days】 ${Font_Suffix}" 23 | echo -e "${Font_Red}传送门:${Font_Suffix}https://www.dmit.io/aff.php?aff=3198&gid=137" 24 | echo -e "================================================" 25 | -------------------------------------------------------------------------------- /reference/CountryCode.csv: -------------------------------------------------------------------------------- 1 | Country,Alpha-2 code,Alpha-3 code 2 | Afghanistan,AF,AFG 3 | Albania,AL,ALB 4 | Algeria,DZ,DZA 5 | American Samoa,AS,ASM 6 | Andorra,AD,AND 7 | Angola,AO,AGO 8 | Anguilla,AI,AIA 9 | Antarctica,AQ,ATA 10 | Antigua and Barbuda,AG,ATG 11 | Argentina,AR,ARG 12 | Armenia,AM,ARM 13 | Aruba,AW,ABW 14 | Australia,AU,AUS 15 | Austria,AT,AUT 16 | Azerbaijan,AZ,AZE 17 | Bahamas (the),BS,BHS 18 | Bahrain,BH,BHR 19 | Bangladesh,BD,BGD 20 | Barbados,BB,BRB 21 | Belarus,BY,BLR 22 | Belgium,BE,BEL 23 | Belize,BZ,BLZ 24 | Benin,BJ,BEN 25 | Bermuda,BM,BMU 26 | Bhutan,BT,BTN 27 | Bolivia (Plurinational State of),BO,BOL 28 | "Bonaire, Sint Eustatius and Saba",BQ,BES 29 | Bosnia and Herzegovina,BA,BIH 30 | Botswana,BW,BWA 31 | Bouvet Island,BV,BVT 32 | Brazil,BR,BRA 33 | British Indian Ocean Territory (the),IO,IOT 34 | Brunei Darussalam,BN,BRN 35 | Bulgaria,BG,BGR 36 | Burkina Faso,BF,BFA 37 | Burundi,BI,BDI 38 | Cabo Verde,CV,CPV 39 | Cambodia,KH,KHM 40 | Cameroon,CM,CMR 41 | Canada,CA,CAN 42 | Cayman Islands (the),KY,CYM 43 | Central African Republic (the),CF,CAF 44 | Chad,TD,TCD 45 | Chile,CL,CHL 46 | China,CN,CHN 47 | Christmas Island,CX,CXR 48 | Cocos (Keeling) Islands (the),CC,CCK 49 | Colombia,CO,COL 50 | Comoros (the),KM,COM 51 | Congo (the Democratic Republic of the),CD,COD 52 | Congo (the),CG,COG 53 | Cook Islands (the),CK,COK 54 | Costa Rica,CR,CRI 55 | Croatia,HR,HRV 56 | Cuba,CU,CUB 57 | Cura?ao,CW,CUW 58 | Cyprus,CY,CYP 59 | Czechia,CZ,CZE 60 | C?te d'Ivoire,CI,CIV 61 | Denmark,DK,DNK 62 | Djibouti,DJ,DJI 63 | Dominica,DM,DMA 64 | Dominican Republic (the),DO,DOM 65 | Ecuador,EC,ECU 66 | Egypt,EG,EGY 67 | El Salvador,SV,SLV 68 | Equatorial Guinea,GQ,GNQ 69 | Eritrea,ER,ERI 70 | Estonia,EE,EST 71 | Eswatini,SZ,SWZ 72 | Ethiopia,ET,ETH 73 | Falkland Islands (the) [Malvinas],FK,FLK 74 | Faroe Islands (the),FO,FRO 75 | Fiji,FJ,FJI 76 | Finland,FI,FIN 77 | France,FR,FRA 78 | French Guiana,GF,GUF 79 | French Polynesia,PF,PYF 80 | French Southern Territories (the),TF,ATF 81 | Gabon,GA,GAB 82 | Gambia (the),GM,GMB 83 | Georgia,GE,GEO 84 | Germany,DE,DEU 85 | Ghana,GH,GHA 86 | Gibraltar,GI,GIB 87 | Greece,GR,GRC 88 | Greenland,GL,GRL 89 | Grenada,GD,GRD 90 | Guadeloupe,GP,GLP 91 | Guam,GU,GUM 92 | Guatemala,GT,GTM 93 | Guernsey,GG,GGY 94 | Guinea,GN,GIN 95 | Guinea-Bissau,GW,GNB 96 | Guyana,GY,GUY 97 | Haiti,HT,HTI 98 | Heard Island and McDonald Islands,HM,HMD 99 | Holy See (the),VA,VAT 100 | Honduras,HN,HND 101 | Hong Kong,HK,HKG 102 | Hungary,HU,HUN 103 | Iceland,IS,ISL 104 | India,IN,IND 105 | Indonesia,ID,IDN 106 | Iran (Islamic Republic of),IR,IRN 107 | Iraq,IQ,IRQ 108 | Ireland,IE,IRL 109 | Isle of Man,IM,IMN 110 | Israel,IL,ISR 111 | Italy,IT,ITA 112 | Jamaica,JM,JAM 113 | Japan,JP,JPN 114 | Jersey,JE,JEY 115 | Jordan,JO,JOR 116 | Kazakhstan,KZ,KAZ 117 | Kenya,KE,KEN 118 | Kiribati,KI,KIR 119 | Korea (the Democratic People's Republic of),KP,PRK 120 | Korea (the Republic of),KR,KOR 121 | Kuwait,KW,KWT 122 | Kyrgyzstan,KG,KGZ 123 | Lao People's Democratic Republic (the),LA,LAO 124 | Latvia,LV,LVA 125 | Lebanon,LB,LBN 126 | Lesotho,LS,LSO 127 | Liberia,LR,LBR 128 | Libya,LY,LBY 129 | Liechtenstein,LI,LIE 130 | Lithuania,LT,LTU 131 | Luxembourg,LU,LUX 132 | Macao,MO,MAC 133 | Madagascar,MG,MDG 134 | Malawi,MW,MWI 135 | Malaysia,MY,MYS 136 | Maldives,MV,MDV 137 | Mali,ML,MLI 138 | Malta,MT,MLT 139 | Marshall Islands (the),MH,MHL 140 | Martinique,MQ,MTQ 141 | Mauritania,MR,MRT 142 | Mauritius,MU,MUS 143 | Mayotte,YT,MYT 144 | Mexico,MX,MEX 145 | Micronesia (Federated States of),FM,FSM 146 | Moldova (the Republic of),MD,MDA 147 | Monaco,MC,MCO 148 | Mongolia,MN,MNG 149 | Montenegro,ME,MNE 150 | Montserrat,MS,MSR 151 | Morocco,MA,MAR 152 | Mozambique,MZ,MOZ 153 | Myanmar,MM,MMR 154 | Namibia,NA,NAM 155 | Nauru,NR,NRU 156 | Nepal,NP,NPL 157 | Netherlands (the),NL,NLD 158 | New Caledonia,NC,NCL 159 | New Zealand,NZ,NZL 160 | Nicaragua,NI,NIC 161 | Niger (the),NE,NER 162 | Nigeria,NG,NGA 163 | Niue,NU,NIU 164 | Norfolk Island,NF,NFK 165 | Northern Mariana Islands (the),MP,MNP 166 | Norway,NO,NOR 167 | Oman,OM,OMN 168 | Pakistan,PK,PAK 169 | Palau,PW,PLW 170 | "Palestine, State of",PS,PSE 171 | Panama,PA,PAN 172 | Papua New Guinea,PG,PNG 173 | Paraguay,PY,PRY 174 | Peru,PE,PER 175 | Philippines (the),PH,PHL 176 | Pitcairn,PN,PCN 177 | Poland,PL,POL 178 | Portugal,PT,PRT 179 | Puerto Rico,PR,PRI 180 | Qatar,QA,QAT 181 | Republic of North Macedonia,MK,MKD 182 | Romania,RO,ROU 183 | Russian Federation (the),RU,RUS 184 | Rwanda,RW,RWA 185 | Réunion,RE,REU 186 | Saint Barthélemy,BL,BLM 187 | "Saint Helena, Ascension and Tristan da Cunha",SH,SHN 188 | Saint Kitts and Nevis,KN,KNA 189 | Saint Lucia,LC,LCA 190 | Saint Martin (French part),MF,MAF 191 | Saint Pierre and Miquelon,PM,SPM 192 | Saint Vincent and the Grenadines,VC,VCT 193 | Samoa,WS,WSM 194 | San Marino,SM,SMR 195 | Sao Tome and Principe,ST,STP 196 | Saudi Arabia,SA,SAU 197 | Senegal,SN,SEN 198 | Serbia,RS,SRB 199 | Seychelles,SC,SYC 200 | Sierra Leone,SL,SLE 201 | Singapore,SG,SGP 202 | Sint Maarten (Dutch part),SX,SXM 203 | Slovakia,SK,SVK 204 | Slovenia,SI,SVN 205 | Solomon Islands,SB,SLB 206 | Somalia,SO,SOM 207 | South Africa,ZA,ZAF 208 | South Georgia and the South Sandwich Islands,GS,SGS 209 | South Sudan,SS,SSD 210 | Spain,ES,ESP 211 | Sri Lanka,LK,LKA 212 | Sudan (the),SD,SDN 213 | Suriname,SR,SUR 214 | Svalbard and Jan Mayen,SJ,SJM 215 | Sweden,SE,SWE 216 | Switzerland,CH,CHE 217 | Syrian Arab Republic,SY,SYR 218 | Taiwan (Province of China),TW,TWN 219 | Tajikistan,TJ,TJK 220 | "Tanzania, United Republic of",TZ,TZA 221 | Thailand,TH,THA 222 | Timor-Leste,TL,TLS 223 | Togo,TG,TGO 224 | Tokelau,TK,TKL 225 | Tonga,TO,TON 226 | Trinidad and Tobago,TT,TTO 227 | Tunisia,TN,TUN 228 | Turkey,TR,TUR 229 | Turkmenistan,TM,TKM 230 | Turks and Caicos Islands (the),TC,TCA 231 | Tuvalu,TV,TUV 232 | Uganda,UG,UGA 233 | Ukraine,UA,UKR 234 | United Arab Emirates (the),AE,ARE 235 | United Kingdom of Great Britain and Northern Ireland (the),GB,GBR 236 | United States Minor Outlying Islands (the),UM,UMI 237 | United States of America (the),US,USA 238 | Uruguay,UY,URY 239 | Uzbekistan,UZ,UZB 240 | Vanuatu,VU,VUT 241 | Venezuela (Bolivarian Republic of),VE,VEN 242 | Viet Nam,VN,VNM 243 | Virgin Islands (British),VG,VGB 244 | Virgin Islands (U.S.),VI,VIR 245 | Wallis and Futuna,WF,WLF 246 | Western Sahara,EH,ESH 247 | Yemen,YE,YEM 248 | Zambia,ZM,ZMB 249 | Zimbabwe,ZW,ZWE 250 | Aland Islands,AX,ALA 251 | -------------------------------------------------------------------------------- /reference/HBO_GO_EU_REGION: -------------------------------------------------------------------------------- 1 | HUN 2 | CZE 3 | SVK 4 | ROU 5 | POL 6 | HRV 7 | SRB 8 | SVN 9 | MKD 10 | MNE 11 | BGR 12 | BIH 13 | -------------------------------------------------------------------------------- /reference/IATACode.txt: -------------------------------------------------------------------------------- 1 | Aalborg | Denmark | AAL 2 | Aalesund | Norway | AES 3 | Aarhus | Denmark | AAR 4 | Abbotsford, BC | Canada | YXX 5 | Aberdeen | Scotland | ABZ 6 | Aberdeen, SD | USA | ABR 7 | Abidjan | Ivory Coast | ABJ 8 | Abilene, TX | USA | ABI 9 | Abu Dhabi | United Arab Emirates | AUH 10 | Abuja | Nigeria | ABV 11 | Acapulco | Mexico | ACA 12 | Accra | Ghana | ACC 13 | Adana | Turkey | ADA 14 | Addis Ababa | Ethiopia | ADD 15 | Adelaide, S.A. | Australia | ADL 16 | Aden | Yemen | ADE 17 | Adiyaman | Turkey | ADF 18 | Agadir | Morocco | AGA 19 | Agana | Guam | GUM 20 | Aguadilla | Puerto Rico | BQN 21 | Aguascalientes | Mexico | AGU 22 | Ahe | French Polynesia | AHE 23 | Ahmedabad | India | AMD 24 | Ajaccio, Corsica | France | AJA 25 | Akita | Japan | AXT 26 | Akron, OH | USA | CAK 27 | Alamosa, CO | USA | ALS 28 | Albany, GA | USA | ABY 29 | Albany, NY | USA | ALB 30 | Albenga | Italy | ALL 31 | Albuquerque, NM | USA | ABQ 32 | Albury, N.S.W. | Australia | ABX 33 | Alexandria | Egypt | ALY 34 | Alexandria | Egypt | HBE 35 | Alexandria, LA | USA | AEX 36 | Alexandroupolis | Greece | AXD 37 | Alghero, Sardinia | Italy | AHO 38 | Algiers | Algeria | ALG 39 | Alicante | Spain | ALC 40 | Alice Springs, N.T. | Australia | ASP 41 | Alice Town, North Bimini Island | Bahamas | NSB 42 | Allentown, PA | USA | ABE 43 | Alliance, NE | USA | AIA 44 | Almaty | Kazakhstan | ALA 45 | Almeria | Spain | LEI 46 | Alor Setar | Malaysia | AOR 47 | Alpena, MI | USA | APN 48 | Alta | Norway | ALF 49 | Altenrhein | Switzerland | ACH 50 | Altoona, PA | USA | AOO 51 | Amarillo, TX | USA | AMA 52 | Amman | Jordan | AMM 53 | Amsterdam | Netherlands | AMS 54 | Anahim Lake, BC | Canada | YAA 55 | Anchorage, AK | USA | ANC 56 | Ancona | Italy | AOI 57 | Andros Town | Bahamas | ASD 58 | Angeles City | Philippines | CRK 59 | Angra do Heroismo, Terceira Island | Azores | TER 60 | Ankara | Turkey | ESB 61 | Annaba | Algeria | AAE 62 | Annecy | France | NCY 63 | Antalya | Turkey | AYT 64 | Antananarivo | Madagascar | TNR 65 | Antofagasta | Chile | ANF 66 | Antwerp | Belgium | ANR 67 | Aomori | Japan | AOJ 68 | Aosta | Italy | AOT 69 | Appleton, WI | USA | ATW 70 | Ardabil | Iran | ADU 71 | Arequipa | Peru | AQP 72 | Argostoli, Kefalonia Island | Greece | EFL 73 | Arica | Chile | ARI 74 | Arkhangelsk | Russia | ARH 75 | Armidale, N.S.W. | Australia | ARM 76 | Arrecife, Lanzarote Island | Canary Islands | ACE 77 | Arusha | Tanzania | ARK 78 | Arviat, NWT | Canada | YEK 79 | Arvidsjaur | Sweden | AJR 80 | Asheville, NC | USA | AVL 81 | Asmara | Eritrea | ASM 82 | Aspen, CO | USA | ASE 83 | Astana | Kazakhstan | TSE 84 | Asuncion | Paraguay | ASU 85 | Aswan | Egypt | ASW 86 | Athens | Greece | ATH 87 | Athens, GA | USA | AHN 88 | Atlanta, GA | USA | ATL 89 | Atlantic City, NJ | USA | ACY 90 | Auckland | New Zealand | AKL 91 | Augusta, GA | USA | AGS 92 | Augusta, ME | USA | AUG 93 | Austin, TX | USA | AUS 94 | Avarua, Rarotonga Island | Cook Islands | RAR 95 | Ayers Rock, N.T. | Australia | AYQ 96 | Bacolod | Philippines | BCD 97 | Badajoz | Spain | BJZ 98 | Baghdad | Iraq | SDA 99 | Bagotville, PQ | Canada | YBG 100 | Baie-Comeau, PQ | Canada | YBC 101 | Bakersfield, CA | USA | BFL 102 | Baku | Azerbaijan | BAK 103 | Baku | Azerbaijan | GYD 104 | Balaton | Hungary | SOB 105 | Balephuil | Scotland | TRE 106 | Balikpapan, Kalimantan | Indonesia | BPN 107 | Ballina, N.S.W. | Australia | BNK 108 | Balmaceda | Chile | BBA 109 | Baltimore, MD | USA | BWI 110 | Ban Me Thuot | Vietnam | BMV 111 | Bandar Seri Begawan | Brunei | BWN 112 | Bangalore | India | BLR 113 | Bangda | China | BPX 114 | Bangkok | Thailand | BKK 115 | Bangkok | Thailand | DMK 116 | Bangor, ME | USA | BGR 117 | Bangui | Central African Republic | BGF 118 | Banjul | Gambia | BJL 119 | Bar Harbor, ME | USA | BHB 120 | Barcelona | Spain | BCN 121 | Bardufoss | Norway | BDU 122 | Bari | Italy | BRI 123 | Barisal | Bangladesh | BZL 124 | Barranquilla | Colombia | BAQ 125 | Barrow, AK | USA | BRW 126 | Basel | Switzerland | BSL 127 | Basseterre | St. Kitts | SKB 128 | Bastia, Corsica | France | BIA 129 | Bathurst, N.S.W. | Australia | BHS 130 | Baton Rouge, LA | USA | BTR 131 | Bauru | Brazil | BAU 132 | Beaumont, TX | USA | BPT 133 | Beauvais | France | BVA 134 | Beckley, WV | USA | BKW 135 | Bedford, MA | USA | BED 136 | Beef Island, Tortola | British Virgin Islands | EIS 137 | Beijing | China | BJS 138 | Beirut | Lebanon | BEY 139 | Belem | Brazil | BEL 140 | Belfast | Northern Ireland | BFS 141 | Belfast | Northern Ireland | BHD 142 | Belgrade | Serbia and Montenegro | BEG 143 | Belize City | Belize | BZE 144 | Bellingham, WA | USA | BLI 145 | Belo Horizonte | Brazil | CNF 146 | Bemidji, MN | USA | BJI 147 | Benbecula | Scotland | BEB 148 | Benguela | Angola | BUG 149 | Bergen | Norway | BGO 150 | Berlin | Germany | BER - All Airports 151 | Berlin | Germany | SXF 152 | Berlin | Germany | THF 153 | Berlin | Germany | TXL 154 | Berne | Switzerland | BRN 155 | Bethel, AK | USA | BET 156 | Bettles, AK | USA | BTT 157 | Biak, Papua | Indonesia | BIK 158 | Biarritz | France | BIQ 159 | Bilbao | Spain | BIO 160 | Billings, MT | USA | BIL 161 | Billund | Denmark | BLL 162 | Binghamton, NY | USA | BGM 163 | Bintulu, Sarawak | Malaysia | BTU 164 | Birmingham | England | BHX 165 | Birmingham, AL | USA | BHM 166 | Bishkek | Kyrgyzstan | FRU 167 | Bismarck, ND | USA | BIS 168 | Bissau | Guinea-Bissau | OXB 169 | Blantyre | Malawi | BLZ 170 | Blenheim | New Zealand | BHE 171 | Bloemfontein | South Africa | BFN 172 | Bloomington, IL | USA | BMI 173 | Bloomington, IN | USA | BMG 174 | Bluefield, WV | USA | BLF 175 | Bodo | Norway | BOO 176 | Bogota | Colombia | BOG 177 | Boise, ID | USA | BOI 178 | Bologna | Italy | BLQ 179 | Bolzano | Italy | BZO 180 | Bordeaux | France | BOD 181 | Borlange | Sweden | BLE 182 | Boston, MA | USA | BOS 183 | Bozeman, MT | USA | BZN 184 | Brasilia | Brazil | BSB 185 | Bratislava | Slovakia | BTS 186 | Brazzaville | Congo | BZV 187 | Bremen | Germany | BRE 188 | Brest | France | BES 189 | Bridgetown | Barbados | BGI 190 | Brindisi | Italy | BDS 191 | Brisbane, Qld. | Australia | BNE 192 | Bristol | England | BRS 193 | Broken Hill, N.S.W. | Australia | BHQ 194 | Brookings, SD | USA | BKX 195 | Broome, W.A. | Australia | BME 196 | Brownsville, TX | USA | BRO 197 | Brunswick, GA | USA | BQK 198 | Brussels | Belgium | BRU 199 | Bucharest | Romania | OTP 200 | Budapest | Hungary | BUD 201 | Buenos Aires | Argentina | EZE 202 | Buffalo, NY | USA | BUF 203 | Bujumbura | Burundi | BJM 204 | Bulawayo | Zimbabwe | BUQ 205 | Bundaberg, Qld. | Australia | BDB 206 | Burbank, CA | USA | BUR 207 | Buri Ram | Thailand | BFV 208 | Burlington, IA | USA | BRL 209 | Burlington, MA | USA | BBF 210 | Burlington, VT | USA | BTV 211 | Busan, Korea | Republic of | PUS 212 | Butte, MT | USA | BTM 213 | Butuan | Philippines | BXU 214 | Bydgoszcz | Poland | BZG 215 | Caen | France | CFR 216 | Cagayan de Oro | Philippines | CGY 217 | Cagliari, Sardinia | Italy | CAG 218 | Cairns, Qld. | Australia | CNS 219 | Cairo | Egypt | CAI 220 | Calcutta | India | CCU 221 | Calgary, AB | Canada | YYC 222 | Cali | Colombia | CLO 223 | Calvi, Corsica | France | CLY 224 | Campbell River, BC | Canada | YBL 225 | Campbeltown | Scotland | CAL 226 | Campeche | Mexico | CPE 227 | Canberra, A.C.T. | Australia | CBR 228 | Cancun | Mexico | CUN 229 | Cap-aux-Meules, | Canada | YGR 230 | Cape Girardeau, MO | USA | CGI 231 | Cape Town | South Africa | CPT 232 | Caracas | Venezuela | CCS 233 | Cardiff | Wales | CWL 234 | Carlsbad, CA | USA | CLD 235 | Carlsbad, NM | USA | CNM 236 | Cartagena | Colombia | CTG 237 | Casablanca | Morocco | CMN 238 | Casper, WY | USA | CPR 239 | Castlegar, BC | Canada | YCG 240 | Castries | St. Lucia | SLU 241 | Catania, Sicily | Italy | CTA 242 | Cayenne | French Guiana | CAY 243 | Cayman Brac | Cayman Islands | CYB 244 | Cebu | Philippines | CEB 245 | Cedar Rapids, IA | USA | CID 246 | Ceduna, S.A. | Australia | CED 247 | Champaign, IL | USA | CMI 248 | Changchun | China | CGQ 249 | Changsha | China | CSX 250 | Chania, Crete | Greece | CHQ 251 | Charleston, SC | USA | CHS 252 | Charleston, WV | USA | CRW 253 | Charleville, Qld. | Australia | CTL 254 | Charlotte Amalie, St. Thomas | U.S. Virgin Islands | STT 255 | Charlotte, NC | USA | CLT 256 | Charlottesville, VA | USA | CHO 257 | Charlottetown, PEI | Canada | YYG 258 | Chattanooga, TN | USA | CHA 259 | Chengdu | China | CTU 260 | Chennai (Madras) | India | MAA 261 | Chetumal | Mexico | CTM 262 | Cheyenne, WY | USA | CYS 263 | Chiang Mai | Thailand | CNX 264 | Chiang Rai | Thailand | CEI 265 | Chibougamau, PQ | Canada | YMT 266 | Chicago, IL | USA | CHI - All 267 | Chicago, IL | USA | MDW 268 | Chicago, IL | USA | ORD 269 | Chico, CA | USA | CIC 270 | Chihuahua | Mexico | CUU 271 | Chios | Greece | JKH 272 | Chisinau | Moldova | KIV 273 | Chongqing | China | CKG 274 | Christchurch | New Zealand | CHC 275 | Christiansted, St. Croix | U.S. Virgin Islands | STX 276 | Churchill, MB | Canada | YYQ 277 | Cincinnati, OH | USA | CVG 278 | Ciudad Bolivar | Venezuela | CBL 279 | Ciudad Del Carmen | Mexico | CME 280 | Ciudad del Este | Paraguay | AGT 281 | Ciudad Juarez | Mexico | CJS 282 | Ciudad Obregon | Mexico | CEN 283 | Ciudad Victoria | Mexico | CVM 284 | Clarksburg, WV | USA | CKB 285 | Clermont-Ferrand | France | CFE 286 | Cleveland, OH | USA | CLE 287 | Clovis, NM | USA | CVN 288 | Cockburn Town, San Salvador Island | Bahamas | ZSA 289 | Cody, WY | USA | COD 290 | Coffs Harbour, N.S.W. | Australia | CFS 291 | Colima | Mexico | CLQ 292 | College Station, TX | USA | CLL 293 | Cologne | Germany | CGN 294 | Colombo | Sri Lanka | CMB 295 | Colorado Springs, CO | USA | COS 296 | Columbia, MO | USA | COU 297 | Columbia, SC | USA | CAE 298 | Columbus, GA | USA | CSG 299 | Columbus, IN | USA | CLU 300 | Columbus, MS | USA | GTR 301 | Columbus, NE | USA | OLU 302 | Columbus, OH | USA | CMH 303 | Conakry | Guinea | CKY 304 | Concepcion | Chile | CCP 305 | Connaught | Ireland | NOC 306 | Coober Pedy, S.A. | Australia | CPD 307 | Copenhagen | Denmark | CPH 308 | Copiapo | Chile | CPO 309 | Cordoba | Argentina | COR 310 | Cordova, AK | USA | CDV 311 | Cork | Ireland | ORK 312 | Corpus Christi, TX | USA | CRP 313 | Cotabato | Philippines | CBO 314 | Cozumel | Mexico | CZM 315 | Cranbrook, BC | Canada | YXC 316 | Crotone | Italy | CRV 317 | Cubi Point Nas | Philippines | NCP 318 | Culiacan | Mexico | CUL 319 | Curitiba | Brazil | CWB 320 | Cusco | Peru | CUZ 321 | Da Nang | Vietnam | DAD 322 | Dakar | Senegal | DKR 323 | Dalaman | Turkey | DLM 324 | Dali City | China | DLU 325 | Dalian | China | DLC 326 | Dallas, TX | USA | DAL 327 | Dallas, TX | USA | DFW 328 | Damascus | Syria | DAM 329 | Dangriga | Belize | DGA 330 | Dar es Salaam | Tanzania | DAR 331 | Darwin, N.T. | Australia | DRW 332 | Davao | Philippines | DVO 333 | Dawadmi | Saudi Arabia | DWD 334 | Dayong | China | DYG 335 | Dayton, OH | USA | DAY 336 | Daytona Beach, FL | USA | DAB 337 | Deadmans Cay, Long Island | Bahamas | LGI 338 | Deboyne | Papua-New Guinea | DOY 339 | Decatur, IL | USA | DEC 340 | Deer Lake, NF | Canada | YDF 341 | Delhi | India | DEL 342 | Denpasar, Bali | Indonesia | DPS 343 | Denver, CO | USA | DEN 344 | Des Moines, IA | USA | DSM 345 | Detroit, MI | USA | DTT - All 346 | Detroit, MI | USA | DTW 347 | Devils Lake, ND | USA | DVL 348 | Devonport, Tas. | Australia | DPO 349 | Dhahran | Saudi Arabia | DHA 350 | Dhaka | Bangladesh | DAC 351 | Dickinson, ND | USA | DIK 352 | Dien-Bien-Phu | Vietnam | DIN 353 | Dillingham, AK | USA | DLG 354 | Dipolog | Philippines | DPL 355 | Djibouti | Djibouti | JIB 356 | Dnepropetrovsk | Ukraine | DNK 357 | Dodge City, KS | USA | DDC 358 | Doha | Qatar | DOH 359 | Doncaster | England | DSA 360 | Donetsk | Ukraine | DOK 361 | Dortmund | Germany | DTM 362 | Dothan, AL | USA | DHN 363 | Douala | Cameroon | DLA 364 | Dresden | Germany | DRS 365 | Dryden, ON | Canada | YHD 366 | Du Bois, PA | USA | DUJ 367 | Dubai | United Arab Emirates | DXB 368 | Dubbo, N.S.W. | Australia | DBO 369 | Dublin | Ireland | DUB 370 | Dubrovnik | Croatia | DBV 371 | Dubuque, IA | USA | DBQ 372 | Duluth, MN | USA | DLH 373 | Dumaguete | Philippines | DGT 374 | Dunedin | New Zealand | DUD 375 | Durango | Mexico | DGO 376 | Durango, CO | USA | DRO 377 | Durban | South Africa | DUR 378 | Dushanbe | Tajikistan | DYU 379 | Dusseldorf | Germany | DUS 380 | Dutch Harbor, Un Island, AK | USA | DUT 381 | East London | South Africa | ELS 382 | East Midlands | England | EMA 383 | Eau Claire, WI | USA | EAU 384 | Edinburgh | Scotland | EDI 385 | Edmonton, AB | Canada | YEG 386 | Eek, AK | USA | EEK 387 | Ekaterinburg, Siberia | Russia | SVX 388 | El Calafate | Argentina | FTE 389 | El Centro, CA | USA | IPL 390 | El Dorado, AR | USA | ELD 391 | El Paso, TX | USA | ELP 392 | El Salvador | Chile | ESR 393 | Elko, NV | USA | EKO 394 | Elmira, NY | USA | ELM 395 | Emerald, Qld. | Australia | EMD 396 | Enid, OK | USA | WDG 397 | Entebbe | Uganda | EBB 398 | Erfurt | Germany | ERF 399 | Erie, PA | USA | ERI 400 | Esbjerg | Denmark | EBJ 401 | Escanaba, MI | USA | ESC 402 | Eugene, OR | USA | EUG 403 | Eureka, CA | USA | ACV 404 | Evansville, IN | USA | EVV 405 | Evenes | Norway | EVE 406 | Fairbanks, AK | USA | FAI 407 | Fargo, ND | USA | FAR 408 | Farmington, NM | USA | FMN 409 | Faro | Portugal | FAO 410 | Fayetteville, AR | USA | XNA 411 | Fayetteville, NC | USA | FAY 412 | Fernando de Noronha | Brazil | FEN 413 | Figari, Corsica | France | FSC 414 | Flagstaff, AZ | USA | FLG 415 | Flin Flon, MB | Canada | YFO 416 | Flint, MI | USA | FNT 417 | Florence | Italy | FLR 418 | Florence, SC | USA | FLO 419 | Flores | Guatemala | FRS 420 | Fort Dodge, IA | USA | FOD 421 | Fort Lauderdale, FL | USA | FLL 422 | Fort Leonard Wood, MO | USA | TBN 423 | Fort McMurray, AB | Canada | YMM 424 | Fort Myers, FL | USA | RSW 425 | Fort Nelson, BC | Canada | YYE 426 | Fort Saint John, BC | Canada | YXJ 427 | Fort Smith, AR | USA | FSM 428 | Fort Smith, NWT | Canada | YSM 429 | Fort Walton Beach, FL | USA | VPS 430 | Fort Wayne, IN | USA | FWA 431 | Fort Yukon, AK | USA | FYU 432 | Fort-de-France | Martinique | FDF 433 | Frankfurt | Germany | FRA 434 | Fredericton, NB | Canada | YFC 435 | Freeport, Grand Bahama Island | Bahamas | FPO 436 | Freetown | Sierra Leone | FNA 437 | Fresno, CA | USA | FAT 438 | Friedrichshafen | Germany | FDH 439 | Fukuoka | Japan | FUK 440 | Fukushima | Japan | FKS 441 | Funchal | Madeira | FNC 442 | Fuzhou | China | FOC 443 | Gainesville, FL | USA | GNV 444 | Gander, NF | Canada | YQX 445 | Garden City, KS | USA | GCK 446 | Gaspe, PQ | Canada | YGP 447 | Gdansk | Poland | GDN 448 | General Santos | Philippines | GES 449 | Geneva | Switzerland | GVA 450 | Genoa | Italy | GOA 451 | George Town, Great Exuma Island | Bahamas | GGT 452 | Georgetown | Guyana | GEO 453 | Georgetown, Grand Cayman Island | Cayman Islands | GCM 454 | Gillette, WY | USA | GCC 455 | Gisborne | New Zealand | GIS 456 | Gladstone, Qld. | Australia | GLT 457 | Glasgow | Scotland | GLA 458 | Glasgow | Scotland | PIK 459 | Glendive, MT | USA | GDV 460 | Gold Coast, Qld. | Australia | OOL 461 | Gothenburg | Sweden | GOT 462 | Gove, N.T. | Australia | GOV 463 | Governor's Harbour, Eleuthera Island | Bahamas | GHB 464 | Granada | Spain | GRX 465 | Grand Forks, ND | USA | GFK 466 | Grand Island, NE | USA | GRI 467 | Grand Junction, CO | USA | GJT 468 | Grand Rapids, MI | USA | GRR 469 | Grande Prairie, AB | Canada | YQU 470 | Graz | Austria | GRZ 471 | Great Bend, KS | USA | GBD 472 | Great Falls, MT | USA | GTF 473 | Green Bay, WI | USA | GRB 474 | Greenbrier, WV | USA | LWB 475 | Greensboro, NC | USA | GSO 476 | Greenville, MS | USA | GLH 477 | Greenville, NC | USA | PGV 478 | Greenville, SC | USA | GSP 479 | Griffith, N.S.W. | Australia | GFF 480 | Guadalajara | Mexico | GDL 481 | Guangzhou | China | CAN 482 | Guatemala City | Guatemala | GUA 483 | Guayaquil | Ecuador | GYE 484 | Guaymas | Mexico | GYM 485 | Guernsey | Channel Islands | GCI 486 | Guilin | China | KWL 487 | Gulfport, MS | USA | GPT 488 | Gunnison, CO | USA | GUC 489 | Gustavia | St. Barts | SBH 490 | Hagerstown, MD | USA | HGR 491 | Haikou, Hainan Island | China | HAK 492 | Hailar | China | HLD 493 | Hakodate | Japan | HKD 494 | Halifax, NS | Canada | YHZ 495 | Halmstad | Sweden | HAD 496 | Hamburg | Germany | HAM 497 | Hamilton | Bermuda | BDA 498 | Hamilton | New Zealand | HLZ 499 | Hamilton Island, Whitsunday Island, Qld. | Australia | HTI 500 | Hamilton, ON | Canada | YHM 501 | Hammerfest | Norway | HFT 502 | Hana, Maui, HI | USA | HNM 503 | Hancock, MI | USA | CMX 504 | Hanga Roa, Easter Island | Chile | IPC 505 | Hangzhou | China | HGH 506 | Hannover | Germany | HAJ 507 | Hanoi | Vietnam | HAN 508 | Harare | Zimbabwe | HRE 509 | Harbin | China | HRB 510 | Harlingen, TX | USA | HRL 511 | Harrisburg, PA | USA | MDT 512 | Harrison, AR | USA | HRO 513 | Hartford, CT | USA | BDL 514 | Hat Yai | Thailand | HDY 515 | Haugesund | Norway | HAU 516 | Havana | Cuba | HAV 517 | Havre, MT | USA | HVR 518 | Hays, KS | USA | HYS 519 | Hefei | China | HFE 520 | Helena, MT | USA | HLN 521 | Helsingborg | Sweden | AGH 522 | Helsinki | Finland | HEL 523 | Hemavan | Sweden | HMV 524 | Hengchun | Taiwan | HCN 525 | Heraklion, Crete | Greece | HER 526 | Hermosillo | Mexico | HMO 527 | Hibbing, MN | USA | HIB 528 | Hilo, Hawaii | USA | Big 529 | Hilton Head Island, SC | USA | HHH 530 | Ho Chi Minh City (Saigon) | Vietnam | SGN 531 | Hobart, Tas. | Australia | HBA 532 | Hobbs, NM | USA | HOB 533 | Hof | Germany | HOQ 534 | Hohhot | China | HET 535 | Hokitika | New Zealand | HKK 536 | Homer, AK | USA | HOM 537 | Hong Kong | China | HKG 538 | Honiara, Guadalcanal | Solomon Islands | HIR 539 | Honolulu, Oahu, HI | USA | HNL 540 | Hoolehua, Molokai, HI | USA | MKK 541 | Horn Island, Qld. | Australia | HID 542 | Hot Springs, AR | USA | HOT 543 | Houmt Souk | Tunisia | DJE 544 | Houston, TX | USA | EFD 545 | Houston, TX | USA | HOU 546 | Houston, TX | USA | IAH 547 | Hualien | Taiwan | HUN 548 | Hue | Vietnam | HUI 549 | Humberside | England | HUY 550 | Huntington, WV | USA | HTS 551 | Huntsville, AL | USA | HSV 552 | Hurghada | Egypt | HRG 553 | Huron, SD | USA | HON 554 | Hyannis, MA | USA | HYA 555 | Hyderabad | India | HYD 556 | Ibadan | Nigeria | IBA 557 | Ibiza | Spain | IBZ 558 | Idaho Falls, ID | USA | IDA 559 | Ikaria Island | Greece | JIK 560 | Iloilo | Philippines | ILO 561 | Indianapolis, IN | USA | IND 562 | Innsbruck | Austria | INN 563 | International Falls, MN | USA | INL 564 | Invercargill | New Zealand | IVC 565 | Inverness | Scotland | INV 566 | Inyokern, CA | USA | IYK 567 | Ioannina | Greece | IOA 568 | Ipoh | Malaysia | IPH 569 | Iqaluit, Nunavut | Canada | YFB 570 | Irkutsk, Siberia | Russia | IKT 571 | Iron Mountain, MI | USA | IMT 572 | Ironwood, MI | USA | IWD 573 | Islamabad-Rawalpindi | Pakistan | ISB 574 | Islay Island | Scotland | ILY 575 | Islip, NY | USA | ISP 576 | Istanbul | Turkey | IST 577 | Istanbul | Turkey | SAW 578 | Ithaca, NY | USA | ITH 579 | Ivalo | Finland | IVL 580 | Iwami | Japan | IWJ 581 | Ixtapa | Mexico | ZIH 582 | Izmir | Turkey | ADB 583 | Izumo | Japan | IZO 584 | Jackson Hole, WY | USA | JAC 585 | Jackson, MS | USA | JAN 586 | Jackson, TN | USA | MKL 587 | Jacksonville, FL | USA | JAX 588 | Jacksonville, NC | USA | OAJ 589 | Jakarta, Java | Indonesia | CGK 590 | Jakarta, Java | Indonesia | JKT - All Airports 591 | Jalapa | Mexico | JAL 592 | Jamestown, ND | USA | JMS 593 | Jamestown, NY | USA | JHW 594 | Jeddah | Saudi Arabia | JED 595 | Jeju, Korea | Republic of | CJU 596 | Jerez de La Frontera | Spain | XRY 597 | Jersey | Channel Islands | JER 598 | Jiamusi | China | JMU 599 | Jijiga | Ethiopia | JIJ 600 | Joensuu | Finland | JOE 601 | Johannesburg | South Africa | JNB 602 | Johnstown, PA | USA | JST 603 | Johor Bahru | Malaysia | JHB 604 | Jonesboro, AR | USA | JBR 605 | Jonkoping | Sweden | JKG 606 | Joplin, MO | USA | JLN 607 | Juneau, AK | USA | JNU 608 | Jyvaskyla | Finland | JYV 609 | Kabul | Afghanistan | KBL 610 | Kagoshima | Japan | KOJ 611 | Kahului, Maui, HI | USA | OGG 612 | Kailua-Kona, HI | USA | KOA 613 | Kaitaia | New Zealand | KAT 614 | Kajaani | Finland | KAJ 615 | Kalamazoo, MI | USA | AZO 616 | Kalaupapa, Molokai, HI | USA | LUP 617 | Kalgoorlie, W.A. | Australia | KGI 618 | Kalibo | Philippines | KLO 619 | Kaliningrad | Russia | KGD 620 | Kalispell, MT | USA | FCA 621 | Kalmar | Sweden | KLR 622 | Kamloops, BC | Canada | YKA 623 | Kansas City, MO | USA | MCI 624 | Kaohsiung | Taiwan | KHH 625 | Kapalua, Maui, HI | USA | JHM 626 | Karachi | Pakistan | KHI 627 | Karaganda | Kazakhstan | KGF 628 | Karlstad | Sweden | KSD 629 | Karratha, W.A. | Australia | KTA 630 | Karup | Denmark | KRP 631 | Kashi | China | KHG 632 | Kathmandu | Nepal | KTM 633 | Katowice | Poland | KTW 634 | Kearney, NE | USA | EAR 635 | Kelowna, BC | Canada | YLW 636 | Kenai, AK | USA | ENA 637 | Kenora, ON | Canada | YQK 638 | Kerikeri | New Zealand | KKE 639 | Ketchikan, AK | USA | KTN 640 | Key West, FL | USA | EYW 641 | Kharkov | Ukraine | HRK 642 | Khartoum | Sudan | KRT 643 | Khon Kaen | Thailand | KKC 644 | Kiel | Germany | KEL 645 | Kiev | Ukraine | KBP 646 | Kigali | Rwanda | KGL 647 | Killeen, TX | USA | GRK 648 | King Salmon, AK | USA | AKN 649 | Kingman, AZ | USA | IGM 650 | Kingscote, Kangaroo Island, S.A. | Australia | KGC 651 | Kingston | Jamaica | KIN 652 | Kingston | Jamaica | KTP 653 | Kingston, ON | Canada | YGK 654 | Kingstown | St. Vincent | SVD 655 | Kinshasa | Zaire | FIH 656 | Kirksville, MO | USA | IRK 657 | Kirkwall, Orkney Islands | Scotland | KOI 658 | Kiruna | Sweden | KRN 659 | Kisangani | Zaire | FKI 660 | Kittila | Finland | KTT 661 | Klagenfurt | Austria | KLU 662 | Klamath Falls, OR | USA | LMT 663 | Knoxville, TN | USA | TYS 664 | Kodiak, AK | USA | ADQ 665 | Koh Samui | Thailand | USM 666 | Kokkola | Finland | KOK 667 | Komatsu | Japan | KMQ 668 | Koror | Palau | ROR 669 | Kos | Greece | KGS 670 | Kosrae | Micronesia | KSA 671 | Kota Bharu | Malaysia | KBR 672 | Kota Kinabalu, Sabah | Malaysia | BKI 673 | Krabi | Thailand | KBV 674 | Krakow | Poland | KRK 675 | Kralendijk | Bonaire | BON 676 | Kramfors | Sweden | KRF 677 | Kristiansand | Norway | KRS 678 | Kristianstad | Sweden | KID 679 | Kuala Lumpur | Malaysia | KUL 680 | Kuala Terengganu | Malaysia | TGG 681 | Kuantan | Malaysia | KUA 682 | Kuching, Sarawak | Malaysia | KCH 683 | Kumamoto | Japan | KMJ 684 | Kunming | China | KMG 685 | Kuopio | Finland | KUO 686 | Kushiro | Japan | KUH 687 | Kuwait | Kuwait | KWI 688 | Kzyl Orda | Kazakhstan | KZO 689 | La Coruna | Spain | LCG 690 | La Crosse, WI | USA | LSE 691 | La Paz | Mexico | LAP 692 | La Paz | Bolivia | LPB 693 | La Romana | Dominican Republic | LRM 694 | La Serena | Chile | LSC 695 | Lafayette, LA | USA | LFT 696 | Lagos | Nigeria | LOS 697 | Lahad Datu, Sabah | Malaysia | LDU 698 | Lahore | Pakistan | LHE 699 | Lake Charles, LA | USA | LCH 700 | Lake Havasu City, AZ | USA | HII 701 | Lamezia Terme | Italy | SUF 702 | Lanai City, Lanai, HI | USA | LNY 703 | Lancaster, PA | USA | LNS 704 | Langkawi | Malaysia | LGK 705 | Lannion | France | LAI 706 | Lansing, MI | USA | LAN 707 | Lanzhou | China | LHW 708 | Laramie, WY | USA | LAR 709 | Laredo, TX | USA | LRD 710 | Larnaca | Cyprus | LCA 711 | Las Cruces, NM | USA | LRU 712 | Las Palmas, Grand Canary Island | Canary Islands | LPA 713 | Las Vegas, NV | USA | LAS 714 | Latrobe, PA | USA | LBE 715 | Launceston, Tas. | Australia | LST 716 | Laurel, MS | USA | PIB 717 | Lawton, OK | USA | LAW 718 | Lazaro Cardenas | Mexico | LZC 719 | Le Havre | France | LEH 720 | Lebanon, NH | USA | LEB 721 | Leeds | England | LBA 722 | Legaspi | Philippines | LGP 723 | Leipzig | Germany | LEJ 724 | Leon | Mexico | BJX 725 | Leon | Spain | LEN 726 | Lerwick, Shetland Islands | Scotland | LSI 727 | Lethbridge, AB | Canada | YQL 728 | Lewiston, ID | USA | LWS 729 | Lewiston, ME | USA | LEW 730 | Lewistown, MT | USA | LWT 731 | Lexington, KY | USA | LEX 732 | Lhasa, Tibet | China | LXA 733 | Liberal, KS | USA | LBL 734 | Liberia | Costa Rica | LIR 735 | Libreville | Gabon | LBV 736 | Lihue, Kauai, HI | USA | LIH 737 | Lijiang City | China | LJG 738 | Lille | France | LIL 739 | Lilongwe | Malawi | LLW 740 | Lima | Peru | LIM 741 | Limoges | France | LIG 742 | Lincang | China | LNJ 743 | Lincoln, NE | USA | LNK 744 | Linkoping | Sweden | LPI 745 | Linz | Austria | LNZ 746 | Lisbon | Portugal | LIS 747 | Little Rock, AR | USA | LIT 748 | Liverpool | England | LPL 749 | Ljubljana | Slovenia | LJU 750 | Logrono | Spain | RJL 751 | Lome | Togo | LFW 752 | London | England | LCY 753 | London | England | LGW 754 | London | England | LHR 755 | London | England | LON - All Airports 756 | London | England | STN 757 | London, ON | Canada | YXU 758 | Londonderry | Northern Ireland | LDY 759 | Long Banga | Malaysia | LBP 760 | Long Beach, CA | USA | LGB 761 | Longreach, Qld. | Australia | LRE 762 | Longview, TX | USA | GGG 763 | Longyearbyen, Svalbard | Norway | LYR 764 | Loreto | Mexico | LTO 765 | Lorient | France | LRT 766 | Los Angeles, CA | USA | LAX 767 | Los Angeles, CA | USA | QLA-All 768 | Los Cabos | Mexico | SJD 769 | Louisville, KY, USA | USA | SDF 770 | Lourdes | France | LDE 771 | Luanda | Angola | LAD 772 | Lubbock, TX | USA | LBB 773 | Lubumbashi | Zaire | FBM 774 | Lugano | Switzerland | LUG 775 | Lugansk | Ukraine | VSG 776 | Lukla | Nepal | LUA 777 | Lulea | Sweden | LLA 778 | Lusaka | Zambia | LUN 779 | Luton | England | LTN 780 | Luxembourg | Luxembourg | LUX 781 | Luxor | Egypt | LXR 782 | Lycksele | Sweden | LYC 783 | Lynchburg, VA | USA | LYH 784 | Lyon | France | LYS 785 | Mackay, Qld. | Australia | MKY 786 | Macon, GA | USA | MCN 787 | Madison, WI | USA | MSN 788 | Madrid | Spain | MAD 789 | Mae Hong Son | Thailand | HGN 790 | Magdalens Islands, PQ | | 791 | Mahebourg | Mauritius | MRU 792 | Majuro | Marshall Islands | MAJ 793 | Mala Mala | South Africa | AAM 794 | Malabo, Bioko Island | Equatorial Guinea | SSG 795 | Malaga | Spain | AGP 796 | Male | Maldives | MLE 797 | Malmo | Sweden | MMA - All Airports 798 | Malmo | Sweden | MMX 799 | Managua | Nicaragua | MGA 800 | Manama | Bahrain | BAH 801 | Manaus | Brazil | MAO 802 | Manchester | England | MAN 803 | Manchester, NH | USA | MHT 804 | Mangrove Cay, Andros Island | Bahamas | MAY 805 | Manhattan, KS | USA | MHK 806 | Manila | Philippines | MNL 807 | Manistee, MI | USA | MBL 808 | Manzanillo | Mexico | ZLO 809 | Manzini | Swaziland | MTS 810 | Mao, Minorca | Spain | MAH 811 | Maputo | Mozambique | MPM 812 | Maracaibo | Venezuela | MAR 813 | Mariehamn, Aland | Finland | MHQ 814 | Marilia | Brazil | MII 815 | Marion, IL | USA | MWA 816 | Mariupol | Ukraine | MPW 817 | Maroochydore, Qld. | Australia | MCY 818 | Marquette, MI | USA | MQT 819 | Marrakech | Morocco | RAK 820 | Marseille | France | MRS 821 | Marsh Harbour, Abaco Island | Bahamas | MHH 822 | Martha's Vineyard, MA | USA | MVY 823 | Maseru | Lesotho | MSU 824 | Mason City, IA | USA | MCW 825 | Massena, NY | USA | MSS 826 | Matsu | Taiwan | MFK 827 | Matsuyama | Japan | MYJ 828 | Mazatlan | Mexico | MZT 829 | McAllen, TX | USA | MFE 830 | McCook, NE | USA | MCK 831 | Medan, Sumatra | Indonesia | MES 832 | Medellin | Colombia | MDE 833 | Medford, OR | USA | MFR 834 | Medicine Hat, AB | Canada | YXH 835 | Melbourne, FL | USA | MLB 836 | Melbourne, Vic. | Australia | AVV 837 | Melbourne, Vic. | Australia | MEL 838 | Melilla | Spain | MLN 839 | Memanbetsu | Japan | MMB 840 | Memphis, TN | USA | MEM 841 | Mendoza | Argentina | MDZ 842 | Merida | Mexico | MID 843 | Meridian, MS | USA | MEI 844 | Merimbula, N.S.W. | Australia | MIM 845 | Metz | France | ETZ 846 | Mexicali | Mexico | MXL 847 | Mexico City | Mexico | MEX 848 | Miami, FL | USA | MIA 849 | Mian Yang | China | MIG 850 | Midland, TX | USA | MAF 851 | Mikonos | Greece | JMK 852 | Milan | Italy | LIN 853 | Milan | Italy | MIL - All 854 | Milan | Italy | MXP 855 | Mildura, Vic. | Australia | MQL 856 | Miles City, MT | USA | MLS 857 | Milwaukee, WI | USA | MKE 858 | Minneapolis, MN | USA | MSP 859 | Minot, ND | USA | MOT 860 | Minsk | Belarus | MHP 861 | Minsk | Belarus | MSQ 862 | Miri, Sarawak | Malaysia | MYY 863 | Misawa | Japan | MSJ 864 | Missoula, MT | USA | MSO 865 | Miyazaki | Japan | KMI 866 | Mobile, AL | USA | MOB 867 | Modesto, CA | USA | MOD 868 | Mogadishu | Somalia | MGQ 869 | Moline, IL | USA | MLI 870 | Mombasa | Kenya | MBA 871 | Monastir | Tunisia | MIR 872 | Monclova | Mexico | LOV 873 | Moncton, NB | Canada | YQM 874 | Monroe, LA | USA | MLU 875 | Monrovia | Liberia | ROB 876 | Mont-Joli, PQ | Canada | YYY 877 | Montego Bay | Jamaica | MBJ 878 | Monterey, CA | USA | MRY 879 | Monterrey | Mexico | MTY 880 | Montevideo | Uruguay | MVD 881 | Montgomery, AL | USA | MGM 882 | Montpellier | France | MPL 883 | Montreal, PQ | Canada | YMQ-All 884 | Montreal, PQ | Canada | YUL 885 | Montreal, PQ | Canada | YMQ All 886 | Montrose, CO | USA | MTJ 887 | Mora | Sweden | MXX 888 | Moree, N.S.W. | Australia | MRZ 889 | Morelia | Mexico | MLM 890 | Morgantown, WV | USA | MGW 891 | Moroni | Comoro Islands | HAH 892 | Moruya, N.S.W. | Australia | MYA 893 | Moscow | Russia | MOW All 894 | Moscow | Russia | SVO 895 | Moscow | Russia | VKO 896 | Moses Lake, WA | USA | MWH 897 | Mount Gambier, S.A. | Australia | MGB 898 | Mount Isa, Qld. | Australia | ISA 899 | Mudanjiang | China | MDG 900 | Mulhouse | France | EAP - All 901 | Mulhouse | France | MLH 902 | Mulu | Malaysia | MZV 903 | Mumbai (Bombay) | India | BOM 904 | Munich | Germany | MUC 905 | Munster | Germany | FMO 906 | Murcia | Spain | MJV 907 | Murmansk | Russia | MMK 908 | Muscat | Oman | MCT 909 | Muscle Shoals, AL | USA | MSL 910 | Muskegon, MI | USA | MKG 911 | Myrtle Beach, SC | USA | MYR 912 | Mytilene, Lesbos Island | Greece | MJT 913 | N'Djamena | Chad | NDJ 914 | Nadi | Fiji | NAN 915 | Nador | Morocco | NDR 916 | Nagasaki | Japan | NGS 917 | Nagoya | Japan | NGO 918 | Nagoya | Japan | NKM 919 | Naha, Okinawa | Japan | OKA 920 | Nairobi | Kenya | NBO 921 | Nakhon Si Thammarat | Thailand | NST 922 | Nanaimo, BC | Canada | YCD 923 | Nanchang | China | KHN 924 | Nangen | Taiwan | LZN 925 | Nanjing | China | NKG 926 | Nanki Shirahama | Japan | SHM 927 | Nanning | China | NNG 928 | Nantes | France | NTE 929 | Nantucket, MA | USA | ACK 930 | Napier | New Zealand | NPE 931 | Naples | Italy | NAP 932 | Naples, FL | USA | APF 933 | Narrabri, N.S.W. | Australia | NAA 934 | Narrandera, N.S.W. | Australia | NRA 935 | Narvik | Norway | NVK 936 | Naryan Mar | Russia | NNM 937 | Nashville, TN | USA | BNA 938 | Nassau | Bahamas | NAS 939 | Nassau | Bahamas | PID 940 | Naze, Amami-O Island | Japan | ASJ 941 | Nelson | New Zealand | NSN 942 | Nelspruit | South Africa | MQP 943 | New Bern, NC | USA | EWN 944 | New Haven, CT | USA | HVN 945 | New Orleans, LA | USA | MSY 946 | New York, NY | USA | JFK 947 | New York, NY | USA | LGA 948 | New York, NY | USA | NYC -All 949 | Newark, NJ | USA | EWR 950 | Newburgh, NY | USA | SWF 951 | Newcastle | England | NCL 952 | Newcastle, N.S.W. | Australia | NTL 953 | Newman, W.A. | Australia | ZNE 954 | Newport News, VA | USA | PHF 955 | Niamey | Niger | NIM 956 | Nice | France | NCE 957 | Niigata | Japan | KIJ 958 | Ningbo | China | NGB 959 | Nizhniy Novgorod | Russia | GOJ 960 | Nome, AK | USA | OME 961 | Norfolk, VA | USA | ORF 962 | Norrkoping | Sweden | NRK 963 | North Bay, ON | Canada | YYB 964 | North Bend, OR | USA | OTH 965 | North Eleuthera | Bahamas | ELH 966 | North Platte, NE | USA | LBF 967 | Norwich | England | NWI 968 | Nouakchott | Mauritania | NKC 969 | Noumea | New Caledonia | GEA 970 | Noumea | New Caledonia | NOU 971 | Novosibirsk, Siberia | Russia | OVB 972 | Nuevo Laredo | Mexico | NLD 973 | Nuremberg | Germany | NUE 974 | Oakland, CA | USA | OAK 975 | Oaxaca | Mexico | OAX 976 | Obihiro | Japan | OBO 977 | Ocho Rios | Jamaica | OCJ 978 | Odate Noshiro | Japan | ONJ 979 | Odessa | Ukraine | ODS 980 | Ogdensburg, NY | USA | OGS 981 | Oita | Japan | OIT 982 | Oklahoma City, OK | USA | OKC 983 | Olbia, Sardinia | Italy | OLB 984 | Olympic Dam, S.A. | Australia | OLP 985 | Omaha, NE | USA | OMA 986 | Omsk, Siberia | Russia | OMS 987 | Ontario, CA | USA | ONT 988 | Orange County, CA | USA | SNA 989 | Orange, N.S.W. | Australia | OAG 990 | Oranjestad | Aruba | AUA 991 | Oranjestad | St. Eustatius | EUX 992 | Orebro | Sweden | ORB 993 | Orlando, FL | USA | MCO 994 | Ornskoldsvik | Sweden | OER 995 | Osaka | Japan | ITM 996 | Osaka | Japan | KIX 997 | Osaka | Japan | OSA - All Airports 998 | Oshkosh, WI | USA | OSH 999 | Oslo | Norway | OSL 1000 | Osorno | Chile | ZOS 1001 | Ostersund | Sweden | OSD 1002 | Ostrava | Czech Republic | OSR 1003 | Ottawa, ON | Canada | YOW 1004 | Ouagadougou | Burkina Faso | OUA 1005 | Oulu | Finland | OUL 1006 | Owensboro, KY | USA | OWB 1007 | Oxnard, CA | USA | OXR 1008 | Paderborn | Germany | PAD 1009 | Paducah, KY | USA | PAH 1010 | Page, AZ | USA | PGA 1011 | Pago Pago, Tutuila | American Samoa | PPG 1012 | Pajala | Sweden | PJA 1013 | Palembang, Sumatra | Indonesia | PLM 1014 | Palermo, Sicily | Italy | PMO 1015 | Palm Springs, CA | USA | PSP 1016 | Palma, Mallorca | Spain | PMI 1017 | Palmas | Brazil | PMW 1018 | Palmerston North | New Zealand | PMR 1019 | Pamplona | Spain | PNA 1020 | Panama City | Panama | PTY 1021 | Panama City, FL | USA | PFN 1022 | Papeete, Tahiti | French Polynesia | PPT 1023 | Paphos | Cyprus | PFO 1024 | Paraburdoo, W.A. | Australia | PBO 1025 | Paramaribo | Suriname | PBM 1026 | Paris | France | CDG 1027 | Paris | France | ORY 1028 | Paris | France | PAR -All 1029 | Parkersburg, WV | USA | PKB 1030 | Parkes, N.S.W. | Australia | PKE 1031 | Pasco, WA | USA | PSC 1032 | Pau | France | PUF 1033 | Pellston, MI | USA | PLN 1034 | Penang, Penang Island | Malaysia | PEN 1035 | Pendleton, OR | USA | PDT 1036 | Pensacola, FL | USA | PNS 1037 | Penticton, BC | Canada | YYF 1038 | Peoria, IL | USA | PIA 1039 | Perpignan | France | PGF 1040 | Perth, W.A. | Australia | PER 1041 | Perugia | Italy | PEG 1042 | Peshawar | Pakistan | PEW 1043 | Petropavlovsk-Kamchatsky, Siberia | Russia | PKC 1044 | Philadelphia, PA | USA | PHL 1045 | Philipsburg | St. Maarten | SXM 1046 | Phitsanulok | Thailand | PHS 1047 | Phnom Penh | Cambodia | PNH 1048 | Phoenix, AZ | USA | PHX 1049 | Phuket | Thailand | HKT 1050 | Piedras Negras | Mexico | PDS 1051 | Pierre, SD | USA | PIR 1052 | Pinehurst, NC | USA | SOP 1053 | Pisa | Italy | PSA 1054 | Pittsburgh, PA | USA | PIT 1055 | Placencia | Belize | PLJ 1056 | Plattsburgh, NY | USA | PLB 1057 | Pleiku | Vietnam | PXU 1058 | Pocatello, ID | USA | PIH 1059 | Pohnpei | Micronesia | PNI 1060 | Pointe-A-Pitre, Grande-Terre | Guadeloupe | PTP 1061 | Ponca City, OK | USA | PNC 1062 | Ponta Delgada, Sao Miguel Island | Azores | PDL 1063 | Port Hardy, BC | Canada | YZT 1064 | Port Hedland, W.A. | Australia | PHE 1065 | Port Lincoln, S.A. | Australia | PLO 1066 | Port Macquarie, N.S.W. | Australia | PQQ 1067 | Port Moresby | Papua-New Guinea | POM 1068 | Port of Spain | Trinidad and Tobago | POS 1069 | Port Vila, Efate Island | Vanuatu | VLI 1070 | Port-au-Prince | Haiti | PAP 1071 | Portland, ME | USA | PWM 1072 | Portland, OR | USA | PDX 1073 | Portland, Vic. | Australia | PTJ 1074 | Porto | Portugal | OPO 1075 | Porto Alegre | Brazil | POA 1076 | Porto Santo | Madeira | PXO 1077 | Portsmouth, NH | USA | PSM 1078 | Powell River, BC | Canada | YPW 1079 | Poznan | Poland | POZ 1080 | Prague | Czech Republic | PRG 1081 | Prescott, AZ | USA | PRC 1082 | Presque Isle, ME | USA | PQI 1083 | Prince George, BC | Canada | YXS 1084 | Prince Rupert, BC | Canada | YPR 1085 | Proserpine, Qld. | Australia | PPP 1086 | Providence, RI | USA | PVD 1087 | Providenciales Island | Turks and Caicos Islands | PLS 1088 | Provincetown, MA | USA | PVC 1089 | Pucon | Chile | ZPC 1090 | Puebla | Mexico | PBC 1091 | Pueblo, CO | USA | PUB 1092 | Puerto del Rosario, Fuerteventura Island | Canary Islands | FUE 1093 | Puerto Escondido | Mexico | PXM 1094 | Puerto Montt | Chile | PMC 1095 | Puerto Plata | Dominican Republic | POP 1096 | Puerto Princesa | Philippines | PPS 1097 | Puerto Vallarta | Mexico | PVR 1098 | Pullman, WA | USA | PUW 1099 | Punta Arenas, Tierra del Fuego | Chile | PUQ 1100 | Punta Cana | Dominican Republic | PUJ 1101 | Punta Gorda | Belize | PND 1102 | Puttaparthi | India | PUT 1103 | Pyongyang | North Korea | FNJ 1104 | Qingdao | China | TAO 1105 | Quebec, PQ | Canada | YQB 1106 | Queenstown | New Zealand | ZQN 1107 | Queretaro | Mexico | QRO 1108 | Quesnel, BC | Canada | YQZ 1109 | Quimper | France | UIP 1110 | Quincy, IL | USA | UIN 1111 | Quito | Ecuador | UIO 1112 | Rach Gia | Vietnam | VKG 1113 | Raleigh, NC | USA | RDU 1114 | Rangoon | Myanmar (Burma) | RGN 1115 | Rankin Inlet, NWT | Canada | YRT 1116 | Ranong | Thailand | UNN 1117 | Rapid City, SD | USA | RAP 1118 | Recife | Brazil | REC 1119 | Red Lake, ON | Canada | YRL 1120 | Redding, CA | USA | RDD 1121 | Redmond, OR | USA | RDM 1122 | Reggio di Calabria | Italy | REG 1123 | Regina, SK | Canada | YQR 1124 | Rennes | France | RNS 1125 | Reno, NV | USA | RNO 1126 | Reykjavik | Iceland | KEF 1127 | Reykjavik | Iceland | REK - All Airports 1128 | Reykjavik | Iceland | RKV 1129 | Reynosa | Mexico | REX 1130 | Rhinelander, WI | USA | RHI 1131 | Rhodes | Greece | RHO 1132 | Richmond, VA | USA | RIC 1133 | Riga | Latvia | RIX 1134 | Rimini | Italy | RMI 1135 | Rio de Janeiro | Brazil | GIG 1136 | Rio de Janeiro | Brazil | RIO - All Airports 1137 | Rio de Janeiro | Brazil | SDU 1138 | Riverton, WY | USA | RIW 1139 | Riyadh | Saudi Arabia | RUH 1140 | Roanoke, VA | USA | ROA 1141 | Roberval, PQ | Canada | YRJ 1142 | Rochester, MN | USA | RST 1143 | Rochester, NY | USA | ROC 1144 | Rock Sound | Bahamas | RSD 1145 | Rock Springs, WY | USA | RKS 1146 | Rockford, IL | USA | RFD 1147 | Rockhampton, Qld. | Australia | ROK 1148 | Rockland, ME | USA | RKD 1149 | Rodez | France | RDZ 1150 | Roma, Qld. | Australia | RMA 1151 | Rome | Italy | CIA 1152 | Rome | Italy (FCO-Leonardo Da Vinci | FCO 1153 | Rome | Italy | ROM-All 1154 | Ronne | Denmark | RNN 1155 | Ronneby | Sweden | RNB 1156 | Roseau | Dominica | DOM 1157 | Rostov | Russia | ROV 1158 | Roswell, NM | USA | ROW 1159 | Rotorua | New Zealand | ROT 1160 | Rotterdam | Netherlands | RTM 1161 | Rouen | France | URO 1162 | Rouyn-Noranda, PQ | Canada | YUY 1163 | Rovaniemi | Finland | RVN 1164 | Roxas City | Philippines | RXS 1165 | Rutland, VT | USA | RUT 1166 | Rzeszow | Poland | RZE 1167 | Saba Island | Saba | SAB 1168 | Sacramento, CA | USA | SMF 1169 | Saga | Japan | HSG 1170 | Saginaw, MI | USA | MBS 1171 | Saint John, NB | Canada | YSJ 1172 | Saint-Denis | Reunion | RUN 1173 | Saint-Pierre | Reunion | ZSE 1174 | Saipan | Northern Mariana Islands | SPN 1175 | Salina, KS | USA | SLN 1176 | Salisbury, MD | USA | SBY 1177 | Salt Lake City, UT | USA | SLC 1178 | Saltillo | Mexico | SLW 1179 | Salvador | Brazil | SSA 1180 | Salzburg | Austria | SZG 1181 | Samsun | Turkey | SZF 1182 | San Andres | Colombia | ADZ 1183 | San Andros | Bahamas | SAQ 1184 | San Angelo, TX | USA | SJT 1185 | San Antonio, TX | USA | SAT 1186 | San Carlos de Bariloche | Argentina | BRC 1187 | San Diego, CA | USA | SAN 1188 | San Francisco, CA | USA | QSF -All 1189 | San Francisco, CA | USA | SFO 1190 | San Jose | Costa Rica | SJO 1191 | San Jose, CA | USA | SJC 1192 | San Juan | Puerto Rico | SJU 1193 | San Luis Obispo, CA | USA | SBP 1194 | San Luis Potosi | Mexico | SLP 1195 | San Salvador | El Salvador | SAL 1196 | San Sebastian | Spain | EAS 1197 | Sanaa | Yemen | SAH 1198 | Sand Point, AK | USA | SDP 1199 | Sandakan, Sabah | Malaysia | SDK 1200 | Sandefjord | Norway | TRF 1201 | Sandspit, Queen Charlotte Islands, BC | Canada | YZP 1202 | Santa Barbara, CA | USA | SBA 1203 | Santa Cruz | Spain | SPC 1204 | Santa Cruz de Tenerife | Canary Islands | TFN 1205 | Santa Fe, NM | USA | SAF 1206 | Santa Maria, CA | USA | SMX 1207 | Santa Maria, Sal Island | Cape Verde | SID 1208 | Santa Rosa | Argentina | RSA 1209 | Santa Rosa, CA | USA | STS 1210 | Santander | Spain | SDR 1211 | Santiago | Chile | SCL 1212 | Santiago | Dominican Republic | STI 1213 | Santo Domingo | Dominican Republic | SDQ 1214 | Sanya | China | SYX 1215 | Sao Jose So Rio Preto | Brazil | SJP 1216 | Sao Paulo | Brazil | CGH 1217 | Sao Paulo | Brazil | GRU 1218 | Sao Paulo | Brazil | SAO - All Airports 1219 | Sapporo | Japan | CTS 1220 | Sapporo | Japan | OKD 1221 | Sarajevo | Bosnia and Herzegovina | SJJ 1222 | Saranac Lake, NY | USA | SLK 1223 | Sarasota, FL | USA | SRQ 1224 | Sarnia, ON | Canada | YZR 1225 | Saskatoon, SK | Canada | YXE 1226 | Sault Ste. Marie, MI | USA | CIU 1227 | Sault Ste. Marie, ON | Canada | YAM 1228 | Savannah, GA | USA | SAV 1229 | Scottsbluff, NE | USA | BFF 1230 | Seattle, WA | USA | SEA 1231 | Semipalatinsk | Kazakhstan | PLX 1232 | Seoul, Korea | Republic of | GMP 1233 | Seoul, Korea | Republic of | ICN 1234 | Seoul, Korea | Republic of | SSN 1235 | Sept-Iles, PQ | Canada | YZV 1236 | Seville | Spain | SVQ 1237 | Shanghai | China | PVG 1238 | Shanghai | China | SHA 1239 | Shannon | Ireland | SNN 1240 | Shantou | China | SWA 1241 | Sharjah | United Arab Emirates | SHJ 1242 | Sharm El Sheikh | Egypt | SSH 1243 | Shenandoah Valley Airport, VA | USA | SHD 1244 | Shenyang | China | SHE 1245 | Shenzhen | China | SZX 1246 | Sheridan, WY | USA | SHR 1247 | Shijiazhuang | China | SJW 1248 | Shreveport, LA | USA | SHV 1249 | Sibu, Sarawak | Malaysia | SBW 1250 | Sidney, MT | USA | SDY 1251 | Silver City, NM | USA | SVC 1252 | Singapore | Singapore | SIN 1253 | Sioux City, IA | USA | SUX 1254 | Sioux Falls, SD | USA | FSD 1255 | Sioux Lookout, ON | Canada | YXL 1256 | Sitka, AK | USA | SIT 1257 | Skagway, AK | USA | SGY 1258 | Skelleftea | Sweden | SFT 1259 | Skopje | Macedonia | SKP 1260 | Smithers, BC | Canada | YYD 1261 | Sofia | Bulgaria | SOF 1262 | Sonderborg | Denmark | SGD 1263 | Songpan Jiuzhai Huanglong | China | JZH 1264 | South Andros | Bahamas | TZN 1265 | South Bend, IN | USA | SBN 1266 | Southampton | England | SOU 1267 | Split | Croatia | SPU 1268 | Spokane, WA | USA | GEG 1269 | Springfield, IL | USA | SPI 1270 | Springfield, MA | USA | CEF 1271 | Springfield, MO | USA | SGF 1272 | Springfield, VT | USA | VSF 1273 | St. Cloud, MN | USA | STC 1274 | St. George, UT | USA | SGU 1275 | St. George's | Grenada | GND 1276 | St. John's | Antigua | ANU 1277 | St. John's, NF | Canada | YYT 1278 | St. Louis, MO | USA | STL 1279 | St. Petersburg | Russia | LED 1280 | St. Petersburg, FL | USA | PIE 1281 | State College, PA | USA | SCE 1282 | Stavanger | Norway | SVG 1283 | Steamboat Springs, CO | USA | SBS 1284 | Stella Maris, Long Island | Bahamas | SML 1285 | Stockholm | Sweden | ARN 1286 | Stockholm | Sweden | BMA 1287 | Stockholm | Sweden | STO-All 1288 | Stornoway, Isle of Lewis | Scotland | SYY 1289 | Storuman | Sweden | SQO 1290 | Strasbourg | France | SXB 1291 | Stuttgart | Germany | STR 1292 | Subic Bay | Philippines | SFS 1293 | Sudbury, ON | Canada | YSB 1294 | Sukhothai | Thailand | THS 1295 | Sun Valley, ID | USA | SUN 1296 | Sundsvall | Sweden | SDL 1297 | Surabaya, Java | Indonesia | SUB 1298 | Surat Thani | Thailand | URT 1299 | Suva | Fiji | SUV 1300 | Sydney, Cape Breton Island, NS | Canada | YQY 1301 | Sydney, N.S.W. | Australia | SYD 1302 | Syracuse, NY | USA | SYR 1303 | Szczecin | Poland | SZZ 1304 | Taba | Egypt | TCP 1305 | Tabriz | Iran | TBZ 1306 | Tacloban | Philippines | TAC 1307 | Taegu | South Korea | TAE 1308 | Tagbilaran | Philippines | TAG 1309 | Taichung | Taiwan | RMQ 1310 | Taipei | Taiwan | TPE 1311 | Taipei | Taiwan | TSA 1312 | Taiyuan | China | TYN 1313 | Takamatsu | Japan | TAK 1314 | Tallahassee, FL | USA | TLH 1315 | Tallinn | Estonia | TLL 1316 | Tampa, FL | USA | TPA 1317 | Tampere | Finland | TMP 1318 | Tampico | Mexico | TAM 1319 | Tamworth, N.S.W. | Australia | TMW 1320 | Tangier | Morocco | TNG 1321 | Tapachula | Mexico | TAP 1322 | Tashkent | Uzbekistan | TAS 1323 | Taupo | New Zealand | TUO 1324 | Tauranga | New Zealand | TRG 1325 | Tawau, Sabah | Malaysia | TWU 1326 | Tbilisi | Georgia | TBS 1327 | Teesside | England | MME 1328 | Tegucigalpa | Honduras | TGU 1329 | Tehran | Iran | THR 1330 | Tel Aviv | Israel | TLV 1331 | Telluride, CO | USA | TEX 1332 | Temuco | Chile | ZCO 1333 | Tenerife Island | Canary Islands | TCI - All Airports 1334 | Tenerife Island | Canary Islands | TFS 1335 | Tenerife Island | Canary Islands | TVI - All Airports 1336 | Tepic | Mexico | TPQ 1337 | Termez | Uzbekistan | TMJ 1338 | Terrace, BC | Canada | YXT 1339 | Texarkana, AR | USA | TXK 1340 | The Valley | Anguilla | AXA 1341 | Thessaloniki | Greece | SKG 1342 | Thief River Falls, MN | USA | TVF 1343 | Thira, Santorini Island | Greece | JTR 1344 | Thompson, MB | Canada | YTH 1345 | Thunder Bay, ON | Canada | YQT 1346 | Tianjin | China | TSN 1347 | Tijuana | Mexico | TIJ 1348 | Timaru | New Zealand | TIU 1349 | Timmins, ON | Canada | YTS 1350 | Tirana | Albania | TIA 1351 | Tobago | Trinidad and Tobago | TAB 1352 | Toksook Bay, AK | USA | OOK 1353 | Tokyo | Japan | HND 1354 | Tokyo | Japan | NRT 1355 | Tokyo | Japan | TYO - All Airports 1356 | Toledo, OH | USA | TOL 1357 | Toluca | Mexico | TLC 1358 | Tongren | China | TEN 1359 | Topeka, KS | USA | TOP 1360 | Toronto, ON | Canada | YTO - All Airports 1361 | Toronto, ON | Canada | YTZ 1362 | Toronto, ON | Canada | YTO -All 1363 | Toronto, ON | Canada | YYZ 1364 | Torreon | Mexico | TRC 1365 | Toulon | France | TLN 1366 | Toulouse | France | TLS 1367 | Townsville, Qld. | Australia | TSV 1368 | Trang | Thailand | TST 1369 | Trat | Thailand | TDX 1370 | Traverse City, MI | USA | TVC 1371 | Treasure Cay, Abaco Island | Bahamas | TCB 1372 | Trenton, NJ | USA | TTN 1373 | Tri-City Airport, TN | USA | TRI 1374 | Trieste | Italy | TRS 1375 | Tripoli | Libya | TIP 1376 | Tromso | Norway | TOS 1377 | Trondheim | Norway | TRD 1378 | Truk | Micronesia | TKK 1379 | Tucson, AZ | USA | TUS 1380 | Tulsa, OK | USA | TUL 1381 | Tunis | Tunisia | TUN 1382 | Tupelo, MS | USA | TUP 1383 | Turin | Italy | TRN 1384 | Turku | Finland | TKU 1385 | Tuxtla Gutierrez | Mexico | TGZ 1386 | Twin Falls, ID | USA | TWF 1387 | Tyler, TX | USA | TYR 1388 | Ubon Ratchathani | Thailand | UBP 1389 | Udon Thani | Thailand | UTH 1390 | Ujung Pandang, Sulawesi | Indonesia | UPG 1391 | Ulan Bator | Mongolia | ULN 1392 | Umea | Sweden | UME 1393 | Una | Brazil | UNA 1394 | Unalakleet, AK | USA | UNK 1395 | Urumqi, Sinkiang | China | URC 1396 | Ushuaia, Tierra del Fuego | Argentina | USH 1397 | Ust Kamenogorsk | Kazakhstan | UKK 1398 | Utapao | Thailand | UTP 1399 | Vaasa | Finland | VAA 1400 | Vail, CO | USA | EGE 1401 | Val-d'Or, PQ | Canada | YVO 1402 | Valdez, AK | USA | VDZ 1403 | Valdivia | Chile | ZAL 1404 | Valdosta, GA | USA | VLD 1405 | Valencia | Spain | VLC 1406 | Valladolid | Spain | VLL 1407 | Valletta | Malta | MLA 1408 | Vancouver, BC | Canada | YVR 1409 | Varanasi | India | VNS 1410 | Varna | Bulgaria | VAR 1411 | Vasteras | Sweden | VST 1412 | Vaxjo | Sweden | VXO 1413 | Venice | Italy | VCE 1414 | Veracruz | Mexico | VER 1415 | Verona | Italy | VRN 1416 | Victoria, BC | Canada | YYJ 1417 | Victoria, Mahe Island | Seychelles | SEZ 1418 | Victoria, TX | USA | VCT 1419 | Vienna | Austria | VIE 1420 | Vientiane | Laos | VTE 1421 | Vieques | Puerto Rico | VQS 1422 | Vieux Fort | St. Lucia | UVF 1423 | Vigo | Spain | VGO 1424 | Vilhelmina | Sweden | VHM 1425 | Villahermosa | Mexico | VSA 1426 | Vilnius | Lithuania | VNO 1427 | Vinh City | Vietnam | VII 1428 | Visalia, CA | USA | VIS 1429 | Visby | Sweden | VBY 1430 | Vitoria | Spain | VIT 1431 | Vladivostok, Siberia | Russia | VVO 1432 | Volgograd | Russia | VOG 1433 | Wabush, Labrador, NF | Canada | YWK 1434 | Waco, TX | USA | ACT 1435 | Wagga-Wagga, N.S.W. | Australia | WGA 1436 | Wajima | Japan | NTQ 1437 | Walla Walla, WA | USA | ALW 1438 | Wanganui | New Zealand | WAG 1439 | Warri | Nigeria | QRW 1440 | Warsaw | Poland | WAW 1441 | Washington DC | USA | DCA 1442 | Washington DC | USA | IAD 1443 | Washington DC | USA | WAS - All Airports 1444 | Waterloo, IA | USA | ALO 1445 | Watertown, NY | USA | ART 1446 | Watertown, SD | USA | ATY 1447 | Wausau, WI | USA | CWA 1448 | Weipa, Qld. | Australia | WEI 1449 | Wellington | New Zealand | WLG 1450 | Wenatchee, WA | USA | EAT 1451 | West Palm Beach, FL | USA | PBI 1452 | West Yellowstone, MT | USA | WYS 1453 | Westport | New Zealand | WSZ 1454 | Whakatane | New Zealand | WHK 1455 | Whangarei | New Zealand | WRE 1456 | White Plains, NY | USA | HPN 1457 | Whitehorse, YT | Canada | YXY 1458 | Whyalla, S.A. | Australia | WYA 1459 | Wichita Falls, TX | USA | SPS 1460 | Wichita, KS | USA | ICT 1461 | Wick | Scotland | WIC 1462 | Wilkes-Barre, PA | USA | AVP 1463 | Willemstad | Curacao | CUR 1464 | Williams Lake, BC | Canada | YWL 1465 | Williamsport, PA | USA | IPT 1466 | Williston, ND | USA | ISN 1467 | Wilmington, DE | USA | ILG 1468 | Wilmington, NC | USA | ILM 1469 | Windsor, ON | Canada | YQG 1470 | Winnipeg, MB | Canada | YWG 1471 | Wolf Point, MT | USA | OLF 1472 | Worland, WY | USA | WRL 1473 | Wrangell, AK | USA | WRG 1474 | Wroclaw | Poland | WRO 1475 | Wuhan | China | WUH 1476 | Xi'an | China | XIY 1477 | Xiamen | China | XMN 1478 | Xichang | China | XIC 1479 | Yakima, WA | USA | YKM 1480 | Yakutat, AK | USA | YAK 1481 | Yamagata | Japan | GAJ 1482 | Yangyang, Korea | Republic of | YNY 1483 | Yanji | China | YNJ 1484 | Yantai | China | YNT 1485 | Yaounde | Cameroon | NSI 1486 | Yaounde | Cameroon | YAO 1487 | Yap | Micronesia | YAP 1488 | Yellowknife, NWT | Canada | YZF 1489 | Yerevan | Armenia | EVN 1490 | Yogyakarta, Java | Indonesia | JOG 1491 | Yuma, AZ | USA | YUM 1492 | Zacatecas | Mexico | ZCL 1493 | Zadar | Croatia | ZAD 1494 | Zagreb | Croatia | ZAG 1495 | Zamboanga | Philippines | ZAM 1496 | Zanzibar | Tanzania | ZNZ 1497 | Zaragoza | Spain | ZAZ 1498 | Zhengzhou | China | CGO 1499 | Zhoushan | China | HSN 1500 | Zurich | Switzerland | ZRH 1501 | -------------------------------------------------------------------------------- /reference/supported_platforms.list: -------------------------------------------------------------------------------- 1 | ====[ Multinational ]==== 2 | Dazn 3 | HotStar 4 | Netflix 5 | DisneyPlus 6 | YouTube Premium 7 | Amazon Prime Video 8 | TVBAnywhere+ 9 | Tiktok Region 10 | iQyi Oversea Region 11 | Viu.com 12 | YouTube CDN 13 | Steam Currency 14 | ######################### 15 | 16 | =======[ US & CA ]======= 17 | FOX 18 | Hulu 19 | Epix 20 | Starz 21 | HBO Now 22 | HBO Max 23 | BritBox 24 | NBA TV 25 | Fubo TV 26 | Sling TV 27 | Pluto TV 28 | SHOWTIME 29 | AT&T NOW 30 | encoreTVB 31 | CineMax Go 32 | Paramount+ 33 | Peacock TV 34 | ---CA--- 35 | CBC Gem 36 | Acorn TV 37 | Crave 38 | ######################### 39 | 40 | ==========[ JP ]========= 41 | DMM 42 | Abema.TV 43 | Niconico 44 | Paravi 45 | U-NEXT 46 | Hulu Japan 47 | TVer 48 | WOWOW 49 | FOD(Fuji TV) 50 | Radiko 51 | ---Game--- 52 | Kancolle Japan 53 | Pretty Derby Japan 54 | Konosuba Fantastic Days 55 | Princess Connect ReDive Japan 56 | World Flipper Japan 57 | Project Sekai Colorful Stage 58 | ######################### 59 | 60 | ==========[ HK ]========= 61 | Now E 62 | Viu.TV 63 | MyTVSuper 64 | HBO GO Asia 65 | BiliBili Hongkong/Macau/Taiwan 66 | ######################### 67 | 68 | ==========[ TW ]========= 69 | KKTV 70 | LiTV 71 | 4GTV.TV 72 | LineTV.TW 73 | Hami Video 74 | CatchPlay+ 75 | HBO GO Asia 76 | Bahamut Anime 77 | Bilibili Taiwan Only 78 | ######################### 79 | 80 | ==========[ EU ]========= 81 | Rakuten TV 82 | HBO GO Europe 83 | ---GB--- 84 | BritBox 85 | ITV Hub 86 | Channel 4 87 | BBC iPLAYER 88 | ---FR--- 89 | Salto 90 | Canal+ 91 | Molotov 92 | ---DE--- 93 | Joyn 94 | Sky 95 | ZDF 96 | ---NL--- 97 | NLZIET 98 | videoland 99 | NPO Start Plus 100 | ---ES--- 101 | HBO Spain 102 | PANTAYA 103 | ---IT--- 104 | Rai Play 105 | ---RU--- 106 | Amediateka 107 | ######################### 108 | --------------------------------------------------------------------------------