├── .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 |
--------------------------------------------------------------------------------