├── LICENSE
├── README.md
├── _0applauncher,--.desktop.application.launcher
├── _calculator,--.math.calculation
├── _chromium-history,--.open.chromiun.browser.history.in.new.tab
├── _clipmenu,--.simple.clipboard.manager
├── _cmus,--.control.music.player
├── _compose,--.copy.characters.to.clipboard
├── _derez,--.restore.or.empty.trash
├── _emoji,--.copy.emojis.to.clipboard
├── _fkill,--.process.killer
├── _fman,--.man.pages
├── _ipwebtv,--.watch.internet.tv.channels
├── _locate,--.search.local.files.and.open
├── _notekami,--.notes.cheatsheet.snippets.manager
├── _playerctl,--.mpris.players.media.control
├── _pulseaudio,--.volume.control
├── _radiomhysa,--.play.internet.radio
├── _reverbeats,--.loop.ambient.sound
├── _variety,--.wallpaper.changer
├── _window-switcher,--.jump.to.a.running.window
├── _zinger,--.copy.meme.quotes.to.clipboard
└── fzf-nova
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 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 General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # fzf-nova
2 | - using terminal emulator + fzf as a script launcher, replacement for dmenu or rofi
3 | - demo https://www.youtube.com/watch?v=8SqakfCSzQk
4 |
5 | #### pick a terminal command to bind to a hotkey (e.g super+space):
6 |
7 | ## source bashrc to get $PATH and $EDITOR variable
8 | # if fzf-nova is NOT in your $PATH then include the script location
9 | xterm -T fzf-nova -geometry 120x20+300+300 -fs 14 -e bash -c "source ~/.bashrc &>/dev/null && /path/to/fzf-nova"
10 | xfce4-terminal --title fzf-nova --geometry 120x20+350+300 --font 14 --execute bash -c "source ~/.bashrc &>/dev/null && /path/to/fzf-nova"
11 | alacritty -T fzf-nova -o "window.dimensions.columns=90" "window.dimensions.lines=20" "window.position.x=350" "window.position.y=200" -e bash -c "source ~/.bashrc &>/dev/null && /path/to/fzf-nova"
12 |
13 | # if fzf-nova is already in your bash $PATH
14 | xterm -T fzf-nova -geometry 120x20+300+300 -fs 14 -e bash -c "source ~/.bashrc &>/dev/null && fzf-nova"
15 | xfce4-terminal --title fzf-nova --geometry 120x20+350+300 --font 14 --execute bash -c "source ~/.bashrc &>/dev/null && fzf-nova"
16 | alacritty -T fzf-nova -o "window.dimensions.columns=90" "window.dimensions.lines=20" "window.position.x=350" "window.position.y=200" -e bash -c "source ~/.bashrc &>/dev/null && fzf-nova"
17 |
18 | #### for TMUX users (prefix + TAB to activate popup)
19 | bind-key Tab capture-pane \; save-buffer /tmp/tmux-buffer \; delete-buffer \; display-popup -w 80% -h 60% -E "fzf-nova"
20 | or
21 | bind-key Tab capture-pane \; save-buffer /tmp/tmux-buffer \; delete-buffer \; display-popup -w 80% -h 60% -E "/path/to/fzf-nova"
22 |
23 |
24 | #### for SHELL hotkey (e.g Alt+m to activate)
25 | # bashrc
26 | bind -x '"\em": fzf-nova'
27 | or
28 | bind -x '"\em": path/to/fzf-nova'
29 |
30 | # zshrc
31 | __fzf_nova__() {
32 | fzf-nova
33 | # or
34 | # /path/to/fzf-nova
35 | }
36 | zle -N __fzf_nova__
37 | bindkey -M emacs '^[m' __fzf_nova__
38 | bindkey -M vicmd '^[m' __fzf_nova__
39 | bindkey -M viins '^[m' __fzf_nova__
40 |
41 | #### add your own script
42 | - just drop in a script in the same folder as fzf-nova.
43 | - name it e.g: _myamazingscript,--.a.cool.description
44 |
45 | #### showcase
46 | - notekami: https://youtu.be/qwpK4rqAZwA
47 | - radiomhysa: https://youtu.be/yfREdXs4H5o
48 | - clipmenu: https://youtu.be/9-4boJ9krsY
49 | - zinger: https://youtu.be/YGsq4ogwmBk
50 | - reverbeats: https://youtu.be/eANLqIhOgWw
51 | - ipwebtv: [@odysee](https://odysee.com/@gotbletu:b/ipwebtv-watch-free-internet-tv-channels:3?r=3BeEtwB4Yw1JBZQDyp2EGW25c41greAh)
52 |
53 | ### author
54 | - gotbletu (@youtube|github|odysee)
55 | - https://www.youtube.com/user/gotbletu
56 |
57 |
--------------------------------------------------------------------------------
/_0applauncher,--.desktop.application.launcher:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: launch gui programs with fzf like dmenu/rofi
5 | # depend: fzf sed coreutils findutils xdg-utils util-linux
6 |
7 | desktop_file() {
8 | find /usr/share/applications -name "*.desktop" 2>/dev/null
9 | find /usr/local/share/applications -name "*.desktop" 2>/dev/null
10 | find "$HOME/.local/share/applications" -name "*.desktop" 2>/dev/null
11 | find /var/lib/flatpak/exports/share/applications -name "*.desktop" 2>/dev/null
12 | find "$HOME/.local/share/flatpak/exports/share/applications" -name "*.desktop" 2>/dev/null
13 | }
14 |
15 | export FZF_DEFAULT_OPTS="-e -i --info=hidden --layout=reverse --scroll-off=5 --tiebreak=index --bind 'home:first,end:last'"
16 | selected="$(desktop_file | sed 's/.desktop$//g' | sort | fzf -m -d / --with-nth -1 --prompt="select program(s) to open: ")"
17 | [ -z "$selected" ] && exit
18 | echo "$selected" | while read -r line ; do setsid xdg-open "$line".desktop >/dev/null 2>&1 & disown ; sleep 0.2 ; done
19 |
--------------------------------------------------------------------------------
/_calculator,--.math.calculation:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: commandline calculator
5 | # demo: http://www.youtube.com/watch?v=JkyodHenTuc
6 | # depend: coreutils python (or bc)
7 |
8 | pycalcmsg() {
9 | cat <>> basic: 1+1 2-6 3*5 4/8
11 | >>> remainder: 10%3
12 | >>> orderof: 50+2*8/(10*5)
13 | >>> exponents(^): 10**2
14 | >>> squareroot: sqrt(49)
15 | >>> othermath: help('math')
16 | >>> press Tab to autocomplete math functions
17 | >>> $(python -V) calculator (ctrl+d to exit)
18 | EOF
19 | }
20 |
21 | bccalcmsg() {
22 | cat <>> basic: 1+1 2-6 3*5 4/8
24 | >>> orderof: 50/(10*5)
25 | >>> exponents(^): 10^2
26 | >>> squareroot: sqrt(49)
27 | >>> bc calculator (press ctrl+c to exit)
28 | EOF
29 | }
30 |
31 | if command -v python3 >/dev/null; then
32 | pycalcmsg
33 | python3 -ic "from math import *; import cmath"
34 | elif command -v python2 >/dev/null; then
35 | pycalcmsg
36 | python2 -ic "from __future__ import division; from math import *; from random import *"
37 | elif command -v bc >/dev/null; then
38 | bccalcmsg
39 | bc -q -l
40 | else
41 | echo "install python or bc"
42 | exit 1
43 | fi
44 |
--------------------------------------------------------------------------------
/_chromium-history,--.open.chromiun.browser.history.in.new.tab:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # author: junegunn choi (https://github.com/junegunn)
3 | # editby: gotbletu
4 | # desc: fzf open chromium web history
5 | # depend: fzf chromium sed awk coreutils xdg-utils util-linux
6 | # reff: http://web.archive.org/web/20220306071810/https://junegunn.kr/2015/04/browsing-chrome-history-with-fzf
7 | # https://github.com/junegunn/fzf/wiki/examples#browsing-history
8 |
9 | export FZF_DEFAULT_OPTS="-e -i --info=default --layout=reverse --scroll-off=5 --tiebreak=index --bind 'home:first,end:last'"
10 | cols=$(( COLUMNS / 3 ))
11 | sep='{::}'
12 | /usr/bin/cp -f ~/.config/chromium/Default/History /tmp/h
13 | selected="$(
14 | sqlite3 -separator $sep /tmp/h \
15 | "select substr(title, 1, $cols), url
16 | from urls order by last_visit_time desc" |
17 | awk -F $sep '{printf "%-'$cols's \x1b[36m%s\x1b[m\n", $1, $2}' |
18 | fzf --ansi -m --prompt="chromium-history >>> select url(s) to open: " | sed 's#.*\(https*://\)#\1#'
19 | )"
20 | [ -z "$selected" ] && exit
21 | echo "$selected" | while read -r line ; do setsid xdg-open "$line"; done
22 |
--------------------------------------------------------------------------------
/_clipmenu,--.simple.clipboard.manager:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: clipmenu clipboard history with fzf
5 | # demo: https://youtu.be/9-4boJ9krsY
6 | # depend: fzf coreutils util-linux procps-ng xsel
7 | # clipmenu (https://github.com/cdown/clipmenu)
8 | # note: has support for multiline clipboard history
9 |
10 | export FZF_DEFAULT_OPTS="-e -i --info=hidden --layout=reverse --scroll-off=5 --tiebreak=index --bind 'home:first,end:last,tab:down,shift-tab:up'"
11 |
12 | mylist() {
13 | cat < /dev/null 2>&1 & disown
33 | sleep 0.2
34 | ;;
35 | restart)
36 | kill "$(pgrep -f clipmenud)"
37 | setsid "clipmenud" > /dev/null 2>&1 & disown
38 | sleep 0.2
39 | ;;
40 | stop)
41 | kill "$(pgrep -f clipmenud)"
42 | ;;
43 | enable)
44 | clipctl enable
45 | ;;
46 | disable)
47 | clipctl disable
48 | ;;
49 | esac
50 |
--------------------------------------------------------------------------------
/_cmus,--.control.music.player:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: control cmus via fzf
5 | # depend: fzf cmus coreutils awk notify-send
6 |
7 | # allow notify-send to work in XFCE4
8 | # xfce4-notifyd > applications > notify-send > [ ] mute application
9 |
10 | track_time() {
11 | duration_total="$(cmus-remote -Q | awk '/duration / {print $2}')"
12 | duration_min=$((duration_total / 60))
13 | duration_sec=$((duration_total % 60))
14 | position_total="$(cmus-remote -Q | awk '/position / {print $2}')"
15 | position_min=$((position_total / 60))
16 | position_sec=$((position_total % 60))
17 | }
18 |
19 | mylist() {
20 | cat </dev/tty' \
66 | --header 'C-x:playpause C-s:stop A-n:next A-p:prev C-r:random C-j/k/n/p:navigate'
67 | "
68 | selected="$(mylist | fzf --info=hidden --prompt="cmus: ")"
69 |
70 | [ -z "$selected" ] && exit
71 | case $selected in
72 | random)
73 | cmus-remote --clear --queue
74 | cmus-remote --queue "$(shuf -n 1 < ~/.cmus/lib.pl)"
75 | cmus-remote --next --play
76 | notify-send -t 5000 --icon=info "cmus" "$(cmus-remote -Q \
77 | | awk '/ artist / || /album / || /title / || /date/ {print substr($0, index($0,$2)) }')"
78 | ;;
79 | queue)
80 | selected="$(fzf -m -d / --with-nth '-2..' --info=inline --prompt="cmus >>> queue song(s): " < ~/.cmus/lib.pl )"
81 | [ -z "$selected" ] && exit
82 | cmus-remote --clear --queue # clear cmus queue
83 | echo "$selected" | while read -r line ; do cmus-remote --queue "$line" ; done # add songs to queue playlist
84 | cmus-remote --next --play # play queued song
85 | notify-send -t 5000 --icon=info "cmus" "$(cmus-remote -Q \
86 | | awk '/ artist / || /album / || /title / || /date/ {print substr($0, index($0,$2)) }')"
87 | ;;
88 | status)
89 | notify-send -t 10000 --icon=info "cmus" "$(cmus-remote -Q \
90 | | awk '/ artist / || /album / || /title / || /date/ || /shuffle/ || /vol_/ || /repeat/ {print substr($0, index($0,$2)) }')"
91 | ;;
92 | next)
93 | cmus-remote --next --play
94 | notify-send -t 5000 --icon=info "cmus" "$(cmus-remote -Q \
95 | | awk '/ artist / || /album / || /title /|| /date/ {print substr($0, index($0,$2)) }')"
96 | ;;
97 | previous)
98 | cmus-remote --prev --prev --play
99 | notify-send -t 5000 --icon=info "cmus" "$(cmus-remote -Q \
100 | | awk '/ artist / || /album / || /title /|| /date/ {print substr($0, index($0,$2)) }')"
101 | ;;
102 | play-pause)
103 | cmus-remote --pause
104 | notify-send -t 5000 --icon=info "cmus" "$(cmus-remote -Q \
105 | | awk '/ artist / || /album / || /title /|| /date/ {print substr($0, index($0,$2)) }')"
106 | ;;
107 | stop)
108 | cmus-remote --stop
109 | ;;
110 | shuffle-toggle)
111 | cmus-remote --shuffle # tracks, albums, off
112 | notify-send -t 5000 --icon=info "cmus" "$(cmus-remote -Q \
113 | | awk '/shuffle/ {print substr($0, index($0,$2)) }')"
114 | ;;
115 | repeat-toggle)
116 | cmus-remote --repeat
117 | notify-send -t 5000 --icon=info "cmus" "$(cmus-remote -Q \
118 | | awk '/repeat / {print substr($0, index($0,$2)) }')"
119 | ;;
120 | repeat-current)
121 | cmus-remote -C "toggle repeat_current"
122 | if [ "$(cmus-remote -Q | awk '/repeat_current/ {print $3}')" = "true" ]; then
123 | notify-send -t 5000 --icon=info "cmus" "$(cmus-remote -Q \
124 | | awk '/repeat_current/ || / artist / || /album / || /title / || /date/ {print substr($0, index($0,$2)) }')"
125 | else
126 | notify-send -t 5000 --icon=info "cmus" "$(cmus-remote -Q | awk '/repeat_current/ {print substr($0, index($0,$2)) }')"
127 | fi
128 | ;;
129 | aaa-toggle)
130 | cmus-remote -C "toggle aaa_mode" # toggle artist, album, all
131 | notify-send -t 5000 --icon=info "cmus" "$(cmus-remote -Q | awk '/aaa_mode/ {print substr($0, index($0,$2)) }')"
132 | ;;
133 | "seek-forward +10s")
134 | cmus-remote --seek +10
135 | track_time
136 | notify-send -t 5000 --icon=info "cmus" "$position_min:$position_sec / $duration_min:$duration_sec"
137 | ;;
138 | "seek-backward -10s")
139 | cmus-remote --seek -10
140 | track_time
141 | notify-send -t 5000 --icon=info "cmus" "$position_min:$position_sec / $duration_min:$duration_sec"
142 | ;;
143 | "seek-forward +1m")
144 | cmus-remote --seek +1m
145 | track_time
146 | notify-send -t 5000 --icon=info "cmus" "$position_min:$position_sec / $duration_min:$duration_sec"
147 | ;;
148 | "seek-backward -1m")
149 | cmus-remote --seek -1m
150 | track_time
151 | notify-send -t 5000 --icon=info "cmus" "$position_min:$position_sec / $duration_min:$duration_sec"
152 | ;;
153 | "volume-up +10")
154 | cmus-remote --volume +10%
155 | notify-send -t 5000 --icon=info "cmus" "$(cmus-remote -Q | awk '/vol_/ {print substr($0, index($0,$2)) }')"
156 | ;;
157 | "volume-down -10")
158 | cmus-remote --volume -10%
159 | notify-send -t 5000 --icon=info "cmus" "$(cmus-remote -Q | awk '/vol_/ {print substr($0, index($0,$2)) }')"
160 | ;;
161 | "volume "*)
162 | cmus-remote --volume "$(echo "$selected" | cut -d ' ' -f2)"%
163 | notify-send -t 5000 --icon=info "cmus" "$(cmus-remote -Q | awk '/vol_/ {print substr($0, index($0,$2)) }')"
164 | ;;
165 | esac
166 |
--------------------------------------------------------------------------------
/_derez,--.restore.or.empty.trash:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: restore or empty trash bin files via fzf
5 | # depend: fzf coreutils util-linux glib2
6 |
7 | export FZF_DEFAULT_OPTS="-e -i --info=hidden --layout=reverse --scroll-off=5 --tiebreak=index --bind 'home:first,end:last,ctrl-a:select-all,ctrl-d:deselect-all,ctrl-t:toggle-all'"
8 | selected="$(
9 | gio trash --list | column -t -s $'\t' | \
10 | fzf -m -d / --with-nth 4.. --prompt="derez >>> restore file(s): " \
11 | --bind "shift-delete:execute:gio trash --empty >/dev/tty" \
12 | --bind "ctrl-r:reload:gio trash --list | column -t -s $'\t'" \
13 | --header 'C-a:select-all C-d:deselect-all C-t:toggle-all C-r:reload S-del:empty C-j/k/n/p:navigate'
14 | )"
15 | [ -z "$selected" ] && exit
16 | echo "$selected" | cut -d ' ' -f1 | while read -r line ; do gio trash --restore "$line" ; done
17 |
--------------------------------------------------------------------------------
/_fkill,--.process.killer:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # source: https://github.com/junegunn/fzf/wiki/examples#processes
3 | # desc: fzf kill processes similar to htop
4 | # depend: fzf coreutils sed awk findutils procps-ng util-linux
5 |
6 | export FZF_DEFAULT_OPTS="-e -i --prompt='fkill >>> kill process: ' --info=hidden --layout=reverse --scroll-off=5 --tiebreak=index --bind 'home:first,end:last'"
7 |
8 | # fkill - kill processes - list only the ones you can kill. Modified the earlier script.
9 | fkill() {
10 | local pid
11 | if [ "$UID" != "0" ]; then
12 | pid=$(ps -f -u $UID | sed 1d | fzf -m | awk '{print $2}')
13 | else
14 | pid=$(ps -ef | sed 1d | fzf -m | awk '{print $2}')
15 | fi
16 |
17 | if [ "x$pid" != "x" ]
18 | then
19 | echo $pid | xargs kill -${1:-9}
20 | fi
21 | }
22 | fkill
23 |
24 |
--------------------------------------------------------------------------------
/_fman,--.man.pages:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | # source: https://github.com/junegunn/fzf/wiki/examples#man-pages
3 | # desc: quick lookup man page with fzf
4 | # depend: fzf coreutils awk man-db findutils
5 |
6 | export FZF_DEFAULT_OPTS="-e -i --info=hidden --layout=reverse --scroll-off=5 --tiebreak=index --bind 'home:first,end:last,tab:down,shift-tab:up'"
7 | man -k . | fzf -q "$1" --prompt='manpages: ' --preview-window down \
8 | --preview $'echo {} | tr -d \'()\' | awk \'{printf "%s ", $2} {print $1}\' | xargs -r man' \
9 | | tr -d '()' | awk '{printf "%s ", $2} {print $1}' | xargs -r man
10 |
--------------------------------------------------------------------------------
/_ipwebtv,--.watch.internet.tv.channels:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: fzf open iptv channel to watch with mpv
5 | # demo: https://odysee.com/@gotbletu:b/ipwebtv-watch-free-internet-tv-channels:3?r=3BeEtwB4Yw1JBZQDyp2EGW25c41greAh
6 | # depend: fzf coreutils util-linux awk wget mpv
7 | # m3u2csv (https://github.com/Axel-Erfurt/m3uEdit/blob/main/m3u_to_csv.py)
8 | # reff: https://database.freetuxtv.net/site/index
9 | # https://github.com/Free-TV/IPTV/tree/master/playlists
10 | # https://github.com/iptv-org/iptv
11 |
12 | mydir="$HOME/.config/ipwebtv"
13 |
14 | # {{{ iptvorg
15 | refresh_iptvorg() {
16 | wget -c -P "$mydir" -O "$mydir"/iptvorg-main-safe-only-all.m3u 'https://iptv-org.github.io/iptv/index.m3u'
17 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-all.m3u 'https://iptv-org.github.io/iptv/index.category.m3u'
18 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-all.m3u 'https://iptv-org.github.io/iptv/index.language.m3u'
19 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-all.m3u 'https://iptv-org.github.io/iptv/index.country.m3u'
20 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-all.m3u 'https://iptv-org.github.io/iptv/index.region.m3u'
21 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-animation.m3u 'https://iptv-org.github.io/iptv/categories/animation.m3u'
22 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-auto.m3u 'https://iptv-org.github.io/iptv/categories/auto.m3u'
23 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-business.m3u 'https://iptv-org.github.io/iptv/categories/business.m3u'
24 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-classic.m3u 'https://iptv-org.github.io/iptv/categories/classic.m3u'
25 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-comedy.m3u 'https://iptv-org.github.io/iptv/categories/comedy.m3u'
26 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-cooking.m3u 'https://iptv-org.github.io/iptv/categories/cooking.m3u'
27 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-culture.m3u 'https://iptv-org.github.io/iptv/categories/culture.m3u'
28 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-documentary.m3u 'https://iptv-org.github.io/iptv/categories/documentary.m3u'
29 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-education.m3u 'https://iptv-org.github.io/iptv/categories/education.m3u'
30 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-entertainment.m3u 'https://iptv-org.github.io/iptv/categories/entertainment.m3u'
31 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-family.m3u 'https://iptv-org.github.io/iptv/categories/family.m3u'
32 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-general.m3u 'https://iptv-org.github.io/iptv/categories/general.m3u'
33 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-kids.m3u 'https://iptv-org.github.io/iptv/categories/kids.m3u'
34 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-legislative.m3u 'https://iptv-org.github.io/iptv/categories/legislative.m3u'
35 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-lifestyle.m3u 'https://iptv-org.github.io/iptv/categories/lifestyle.m3u'
36 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-movies.m3u 'https://iptv-org.github.io/iptv/categories/movies.m3u'
37 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-music.m3u 'https://iptv-org.github.io/iptv/categories/music.m3u'
38 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-news.m3u 'https://iptv-org.github.io/iptv/categories/news.m3u'
39 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-outdoor.m3u 'https://iptv-org.github.io/iptv/categories/outdoor.m3u'
40 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-relax.m3u 'https://iptv-org.github.io/iptv/categories/relax.m3u'
41 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-religious.m3u 'https://iptv-org.github.io/iptv/categories/religious.m3u'
42 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-science.m3u 'https://iptv-org.github.io/iptv/categories/science.m3u'
43 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-series.m3u 'https://iptv-org.github.io/iptv/categories/series.m3u'
44 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-shop.m3u 'https://iptv-org.github.io/iptv/categories/shop.m3u'
45 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-sports.m3u 'https://iptv-org.github.io/iptv/categories/sports.m3u'
46 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-travel.m3u 'https://iptv-org.github.io/iptv/categories/travel.m3u'
47 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-weather.m3u 'https://iptv-org.github.io/iptv/categories/weather.m3u'
48 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-xxx.m3u 'https://iptv-org.github.io/iptv/categories/xxx.m3u'
49 | wget -c -P "$mydir" -O "$mydir"/iptvorg-category-undefined.m3u 'https://iptv-org.github.io/iptv/categories/undefined.m3u'
50 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-afghan-persian.m3u 'https://iptv-org.github.io/iptv/languages/prs.m3u'
51 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-afrikaans.m3u 'https://iptv-org.github.io/iptv/languages/afr.m3u'
52 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-albanian.m3u 'https://iptv-org.github.io/iptv/languages/sqi.m3u'
53 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-alemannic.m3u 'https://iptv-org.github.io/iptv/languages/gsw.m3u'
54 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-amharic.m3u 'https://iptv-org.github.io/iptv/languages/amh.m3u'
55 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-arabic.m3u 'https://iptv-org.github.io/iptv/languages/ara.m3u'
56 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-armenian.m3u 'https://iptv-org.github.io/iptv/languages/hye.m3u'
57 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-assamese.m3u 'https://iptv-org.github.io/iptv/languages/asm.m3u'
58 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-assyrian-neo-aramaic.m3u 'https://iptv-org.github.io/iptv/languages/aii.m3u'
59 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-azerbaijani.m3u 'https://iptv-org.github.io/iptv/languages/aze.m3u'
60 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-bashkir.m3u 'https://iptv-org.github.io/iptv/languages/bak.m3u'
61 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-basque.m3u 'https://iptv-org.github.io/iptv/languages/eus.m3u'
62 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-belarusian.m3u 'https://iptv-org.github.io/iptv/languages/bel.m3u'
63 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-bengali.m3u 'https://iptv-org.github.io/iptv/languages/ben.m3u'
64 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-bhojpuri.m3u 'https://iptv-org.github.io/iptv/languages/bho.m3u'
65 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-bosnian.m3u 'https://iptv-org.github.io/iptv/languages/bos.m3u'
66 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-bulgarian.m3u 'https://iptv-org.github.io/iptv/languages/bul.m3u'
67 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-burmese.m3u 'https://iptv-org.github.io/iptv/languages/mya.m3u'
68 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-catalan.m3u 'https://iptv-org.github.io/iptv/languages/cat.m3u'
69 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-central-kurdish.m3u 'https://iptv-org.github.io/iptv/languages/ckb.m3u'
70 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-chhattisgarhi.m3u 'https://iptv-org.github.io/iptv/languages/hne.m3u'
71 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-chinese.m3u 'https://iptv-org.github.io/iptv/languages/zho.m3u'
72 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-croatian.m3u 'https://iptv-org.github.io/iptv/languages/hrv.m3u'
73 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-czech.m3u 'https://iptv-org.github.io/iptv/languages/ces.m3u'
74 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-danish.m3u 'https://iptv-org.github.io/iptv/languages/dan.m3u'
75 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-dhanwar-nepal.m3u 'https://iptv-org.github.io/iptv/languages/dhw.m3u'
76 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-dhivehi.m3u 'https://iptv-org.github.io/iptv/languages/div.m3u'
77 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-dholuo.m3u 'https://iptv-org.github.io/iptv/languages/luo.m3u'
78 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-dimili.m3u 'https://iptv-org.github.io/iptv/languages/zza.m3u'
79 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-dutch.m3u 'https://iptv-org.github.io/iptv/languages/nld.m3u'
80 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-english.m3u 'https://iptv-org.github.io/iptv/languages/eng.m3u'
81 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-estonian.m3u 'https://iptv-org.github.io/iptv/languages/est.m3u'
82 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-ewe.m3u 'https://iptv-org.github.io/iptv/languages/ewe.m3u'
83 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-faroese.m3u 'https://iptv-org.github.io/iptv/languages/fao.m3u'
84 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-fataleka.m3u 'https://iptv-org.github.io/iptv/languages/far.m3u'
85 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-filipino.m3u 'https://iptv-org.github.io/iptv/languages/fil.m3u'
86 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-finnish.m3u 'https://iptv-org.github.io/iptv/languages/fin.m3u'
87 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-french.m3u 'https://iptv-org.github.io/iptv/languages/fra.m3u'
88 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-galician.m3u 'https://iptv-org.github.io/iptv/languages/glg.m3u'
89 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-galolen.m3u 'https://iptv-org.github.io/iptv/languages/gal.m3u'
90 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-georgian.m3u 'https://iptv-org.github.io/iptv/languages/kat.m3u'
91 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-german.m3u 'https://iptv-org.github.io/iptv/languages/deu.m3u'
92 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-gikuyu.m3u 'https://iptv-org.github.io/iptv/languages/kik.m3u'
93 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-goan-konkani.m3u 'https://iptv-org.github.io/iptv/languages/gom.m3u'
94 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-greek.m3u 'https://iptv-org.github.io/iptv/languages/ell.m3u'
95 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-greenlandic.m3u 'https://iptv-org.github.io/iptv/languages/kal.m3u'
96 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-gujarati.m3u 'https://iptv-org.github.io/iptv/languages/guj.m3u'
97 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-haitian.m3u 'https://iptv-org.github.io/iptv/languages/hat.m3u'
98 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-hausa.m3u 'https://iptv-org.github.io/iptv/languages/hau.m3u'
99 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-hebrew.m3u 'https://iptv-org.github.io/iptv/languages/heb.m3u'
100 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-hindi.m3u 'https://iptv-org.github.io/iptv/languages/hin.m3u'
101 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-hungarian.m3u 'https://iptv-org.github.io/iptv/languages/hun.m3u'
102 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-icelandic.m3u 'https://iptv-org.github.io/iptv/languages/isl.m3u'
103 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-indonesian.m3u 'https://iptv-org.github.io/iptv/languages/ind.m3u'
104 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-inuktitut.m3u 'https://iptv-org.github.io/iptv/languages/iku.m3u'
105 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-irish.m3u 'https://iptv-org.github.io/iptv/languages/gle.m3u'
106 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-italian.m3u 'https://iptv-org.github.io/iptv/languages/ita.m3u'
107 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-japanese.m3u 'https://iptv-org.github.io/iptv/languages/jpn.m3u'
108 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-javanese.m3u 'https://iptv-org.github.io/iptv/languages/jav.m3u'
109 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-kannada.m3u 'https://iptv-org.github.io/iptv/languages/kan.m3u'
110 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-kazakh.m3u 'https://iptv-org.github.io/iptv/languages/kaz.m3u'
111 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-khmer.m3u 'https://iptv-org.github.io/iptv/languages/khm.m3u'
112 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-kinyarwanda.m3u 'https://iptv-org.github.io/iptv/languages/kin.m3u'
113 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-kirghiz.m3u 'https://iptv-org.github.io/iptv/languages/kir.m3u'
114 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-konkani-macrolanguage.m3u 'https://iptv-org.github.io/iptv/languages/kok.m3u'
115 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-korean.m3u 'https://iptv-org.github.io/iptv/languages/kor.m3u'
116 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-kurdish.m3u 'https://iptv-org.github.io/iptv/languages/kur.m3u'
117 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-lahnda.m3u 'https://iptv-org.github.io/iptv/languages/lah.m3u'
118 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-lao.m3u 'https://iptv-org.github.io/iptv/languages/lao.m3u'
119 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-latin.m3u 'https://iptv-org.github.io/iptv/languages/lat.m3u'
120 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-latvian.m3u 'https://iptv-org.github.io/iptv/languages/lav.m3u'
121 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-letzeburgesch.m3u 'https://iptv-org.github.io/iptv/languages/ltz.m3u'
122 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-lithuanian.m3u 'https://iptv-org.github.io/iptv/languages/lit.m3u'
123 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-macedonian.m3u 'https://iptv-org.github.io/iptv/languages/mkd.m3u'
124 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-malay.m3u 'https://iptv-org.github.io/iptv/languages/msa.m3u'
125 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-malayalam.m3u 'https://iptv-org.github.io/iptv/languages/mal.m3u'
126 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-maltese.m3u 'https://iptv-org.github.io/iptv/languages/mlt.m3u'
127 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-mandarin-chinese.m3u 'https://iptv-org.github.io/iptv/languages/cmn.m3u'
128 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-marathi.m3u 'https://iptv-org.github.io/iptv/languages/mar.m3u'
129 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-min=nan-chinese.m3u 'https://iptv-org.github.io/iptv/languages/nan.m3u'
130 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-mongolian.m3u 'https://iptv-org.github.io/iptv/languages/mon.m3u'
131 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-montenegrin.m3u 'https://iptv-org.github.io/iptv/languages/cnr.m3u'
132 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-nepali.m3u 'https://iptv-org.github.io/iptv/languages/nep.m3u'
133 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-norwegian.m3u 'https://iptv-org.github.io/iptv/languages/nor.m3u'
134 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-norwegian-bokmal.m3u 'https://iptv-org.github.io/iptv/languages/nob.m3u'
135 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-oriya-macrolanguage.m3u 'https://iptv-org.github.io/iptv/languages/ori.m3u'
136 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-panjabi.m3u 'https://iptv-org.github.io/iptv/languages/pan.m3u'
137 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-papiamento.m3u 'https://iptv-org.github.io/iptv/languages/pap.m3u'
138 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-parsi-dari.m3u 'https://iptv-org.github.io/iptv/languages/prd.m3u'
139 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-pashto.m3u 'https://iptv-org.github.io/iptv/languages/pus.m3u'
140 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-persian.m3u 'https://iptv-org.github.io/iptv/languages/fas.m3u'
141 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-polish.m3u 'https://iptv-org.github.io/iptv/languages/pol.m3u'
142 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-portuguese.m3u 'https://iptv-org.github.io/iptv/languages/por.m3u'
143 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-romanian.m3u 'https://iptv-org.github.io/iptv/languages/ron.m3u'
144 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-romany.m3u 'https://iptv-org.github.io/iptv/languages/rom.m3u'
145 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-russian.m3u 'https://iptv-org.github.io/iptv/languages/rus.m3u'
146 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-saint-lucian-creole-french.m3u 'https://iptv-org.github.io/iptv/languages/acf.m3u'
147 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-santali.m3u 'https://iptv-org.github.io/iptv/languages/sat.m3u'
148 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-serbian.m3u 'https://iptv-org.github.io/iptv/languages/srp.m3u'
149 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-serbo-croatian.m3u 'https://iptv-org.github.io/iptv/languages/hbs.m3u'
150 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-sindhi.m3u 'https://iptv-org.github.io/iptv/languages/snd.m3u'
151 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-sinhala.m3u 'https://iptv-org.github.io/iptv/languages/sin.m3u'
152 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-slovak.m3u 'https://iptv-org.github.io/iptv/languages/slk.m3u'
153 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-slovenian.m3u 'https://iptv-org.github.io/iptv/languages/slv.m3u'
154 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-somali.m3u 'https://iptv-org.github.io/iptv/languages/som.m3u'
155 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-spanish.m3u 'https://iptv-org.github.io/iptv/languages/spa.m3u'
156 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-swahili.m3u 'https://iptv-org.github.io/iptv/languages/swa.m3u'
157 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-swedish.m3u 'https://iptv-org.github.io/iptv/languages/swe.m3u'
158 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-tagalog.m3u 'https://iptv-org.github.io/iptv/languages/tgl.m3u'
159 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-tajik.m3u 'https://iptv-org.github.io/iptv/languages/tgk.m3u'
160 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-tamil.m3u 'https://iptv-org.github.io/iptv/languages/tam.m3u'
161 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-telugu.m3u 'https://iptv-org.github.io/iptv/languages/tel.m3u'
162 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-tetum.m3u 'https://iptv-org.github.io/iptv/languages/tet.m3u'
163 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-thai.m3u 'https://iptv-org.github.io/iptv/languages/tha.m3u'
164 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-tigrinya.m3u 'https://iptv-org.github.io/iptv/languages/tir.m3u'
165 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-turkish.m3u 'https://iptv-org.github.io/iptv/languages/tur.m3u'
166 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-turkmen.m3u 'https://iptv-org.github.io/iptv/languages/tuk.m3u'
167 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-ukrainian.m3u 'https://iptv-org.github.io/iptv/languages/ukr.m3u'
168 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-urdu.m3u 'https://iptv-org.github.io/iptv/languages/urd.m3u'
169 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-uzbek.m3u 'https://iptv-org.github.io/iptv/languages/uzb.m3u'
170 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-vietnamese.m3u 'https://iptv-org.github.io/iptv/languages/vie.m3u'
171 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-welsh.m3u 'https://iptv-org.github.io/iptv/languages/cym.m3u'
172 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-western-frisian.m3u 'https://iptv-org.github.io/iptv/languages/fry.m3u'
173 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-wolof.m3u 'https://iptv-org.github.io/iptv/languages/wol.m3u'
174 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-yucatec-maya.m3u 'https://iptv-org.github.io/iptv/languages/yua.m3u'
175 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-yue-chinese.m3u 'https://iptv-org.github.io/iptv/languages/yue.m3u'
176 | wget -c -P "$mydir" -O "$mydir"/iptvorg-language-undefined.m3u 'https://iptv-org.github.io/iptv/languages/undefined.m3u'
177 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-afghanistan.m3u 'https://iptv-org.github.io/iptv/countries/af.m3u'
178 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-albania.m3u 'https://iptv-org.github.io/iptv/countries/al.m3u'
179 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-algeria.m3u 'https://iptv-org.github.io/iptv/countries/dz.m3u'
180 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-american-samoa.m3u 'https://iptv-org.github.io/iptv/countries/as.m3u'
181 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-andorra.m3u 'https://iptv-org.github.io/iptv/countries/ad.m3u'
182 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-angola.m3u 'https://iptv-org.github.io/iptv/countries/ao.m3u'
183 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-anguilla.m3u 'https://iptv-org.github.io/iptv/countries/ai.m3u'
184 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-antigua-and-barbuda.m3u 'https://iptv-org.github.io/iptv/countries/ag.m3u'
185 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-argentina.m3u 'https://iptv-org.github.io/iptv/countries/ar.m3u'
186 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-buenos-aires.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-b.m3u'
187 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-catamarca.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-k.m3u'
188 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-chaco.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-h.m3u'
189 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-chubut.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-u.m3u'
190 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ciudad-autonoma-de-buenos-aires.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-c.m3u'
191 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-cordoba.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-x.m3u'
192 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-corrientes.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-w.m3u'
193 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-entre-rios.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-e.m3u'
194 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-formosa.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-p.m3u'
195 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-jujuy.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-y.m3u'
196 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-la-pampa.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-l.m3u'
197 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-la-rioja.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-f.m3u'
198 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-mendoza.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-m.m3u'
199 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-misiones.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-n.m3u'
200 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-neuquen.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-q.m3u'
201 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-rio-negro.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-r.m3u'
202 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-salta.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-a.m3u'
203 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-san-juan.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-j.m3u'
204 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-san-luis.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-d.m3u'
205 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-santa-cruz.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-z.m3u'
206 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-santa-fe.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-s.m3u'
207 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-santiago-del-estero.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-g.m3u'
208 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-tucuman.m3u 'https://iptv-org.github.io/iptv/subdivisions/ar-t.m3u'
209 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-armenia.m3u 'https://iptv-org.github.io/iptv/countries/am.m3u'
210 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-aruba.m3u 'https://iptv-org.github.io/iptv/countries/aw.m3u'
211 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-australia.m3u 'https://iptv-org.github.io/iptv/countries/au.m3u'
212 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-austria.m3u 'https://iptv-org.github.io/iptv/countries/at.m3u'
213 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-azerbaijan.m3u 'https://iptv-org.github.io/iptv/countries/az.m3u'
214 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-bahamas.m3u 'https://iptv-org.github.io/iptv/countries/bs.m3u'
215 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-bahrain.m3u 'https://iptv-org.github.io/iptv/countries/bh.m3u'
216 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-bangladesh.m3u 'https://iptv-org.github.io/iptv/countries/bd.m3u'
217 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-barbados.m3u 'https://iptv-org.github.io/iptv/countries/bb.m3u'
218 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-belarus.m3u 'https://iptv-org.github.io/iptv/countries/by.m3u'
219 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-belgium.m3u 'https://iptv-org.github.io/iptv/countries/be.m3u'
220 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-belize.m3u 'https://iptv-org.github.io/iptv/countries/bz.m3u'
221 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-benin.m3u 'https://iptv-org.github.io/iptv/countries/bj.m3u'
222 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-bermuda.m3u 'https://iptv-org.github.io/iptv/countries/bm.m3u'
223 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-bhutan.m3u 'https://iptv-org.github.io/iptv/countries/bt.m3u'
224 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-bolivia.m3u 'https://iptv-org.github.io/iptv/countries/bo.m3u'
225 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-cochabamba.m3u 'https://iptv-org.github.io/iptv/subdivisions/bo-c.m3u'
226 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-la-paz.m3u 'https://iptv-org.github.io/iptv/subdivisions/bo-l.m3u'
227 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-oruro.m3u 'https://iptv-org.github.io/iptv/subdivisions/bo-o.m3u'
228 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-santa-cruz.m3u 'https://iptv-org.github.io/iptv/subdivisions/bo-s.m3u'
229 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-bonaire.m3u 'https://iptv-org.github.io/iptv/countries/bq.m3u'
230 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-bosnia-and-herzegovina.m3u 'https://iptv-org.github.io/iptv/countries/ba.m3u'
231 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-botswana.m3u 'https://iptv-org.github.io/iptv/countries/bw.m3u'
232 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-bouvet-island.m3u 'https://iptv-org.github.io/iptv/countries/bv.m3u'
233 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-brazil.m3u 'https://iptv-org.github.io/iptv/countries/br.m3u'
234 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-alagoas.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-al.m3u'
235 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-amazonas.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-am.m3u'
236 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-bahia.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-ba.m3u'
237 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ceara.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-ce.m3u'
238 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-distrito-federal.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-df.m3u'
239 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-espirito-santo.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-es.m3u'
240 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-goias.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-go.m3u'
241 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-maranhao.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-ma.m3u'
242 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-mato-grosso.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-mt.m3u'
243 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-minas-gerais.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-mg.m3u'
244 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-para.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-pa.m3u'
245 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-paraiba.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-pb.m3u'
246 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-parana.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-pr.m3u'
247 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-pernambuco.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-pe.m3u'
248 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-rio-de-janeiro.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-rj.m3u'
249 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-rio-grande-do-norte.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-rn.m3u'
250 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-rio-grande-do-sul.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-rs.m3u'
251 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-rondonia.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-ro.m3u'
252 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-roraima.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-rr.m3u'
253 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-santa-catarina.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-sc.m3u'
254 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sao-paulo.m3u 'https://iptv-org.github.io/iptv/subdivisions/br-sp.m3u'
255 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-british-virgin-islands.m3u 'https://iptv-org.github.io/iptv/countries/vg.m3u'
256 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-brunei.m3u 'https://iptv-org.github.io/iptv/countries/bn.m3u'
257 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-bulgaria.m3u 'https://iptv-org.github.io/iptv/countries/bg.m3u'
258 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-burkina-faso.m3u 'https://iptv-org.github.io/iptv/countries/bf.m3u'
259 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-burundi.m3u 'https://iptv-org.github.io/iptv/countries/bi.m3u'
260 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-cambodia.m3u 'https://iptv-org.github.io/iptv/countries/kh.m3u'
261 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-cameroon.m3u 'https://iptv-org.github.io/iptv/countries/cm.m3u'
262 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-canada.m3u 'https://iptv-org.github.io/iptv/countries/ca.m3u'
263 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-alberta.m3u 'https://iptv-org.github.io/iptv/subdivisions/ca-ab.m3u'
264 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-british-columbia.m3u 'https://iptv-org.github.io/iptv/subdivisions/ca-bc.m3u'
265 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-manitoba.m3u 'https://iptv-org.github.io/iptv/subdivisions/ca-mb.m3u'
266 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-new-brunswick.m3u 'https://iptv-org.github.io/iptv/subdivisions/ca-nb.m3u'
267 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-newfoundland-and-labrador.m3u 'https://iptv-org.github.io/iptv/subdivisions/ca-nl.m3u'
268 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-northwest-territories.m3u 'https://iptv-org.github.io/iptv/subdivisions/ca-nt.m3u'
269 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-nova-scotia.m3u 'https://iptv-org.github.io/iptv/subdivisions/ca-ns.m3u'
270 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ontario.m3u 'https://iptv-org.github.io/iptv/subdivisions/ca-on.m3u'
271 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-prince-edward-island.m3u 'https://iptv-org.github.io/iptv/subdivisions/ca-pe.m3u'
272 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-quebec.m3u 'https://iptv-org.github.io/iptv/subdivisions/ca-qc.m3u'
273 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-saskatchewan.m3u 'https://iptv-org.github.io/iptv/subdivisions/ca-sk.m3u'
274 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-cape-verde.m3u 'https://iptv-org.github.io/iptv/countries/cv.m3u'
275 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-boa-vista.m3u 'https://iptv-org.github.io/iptv/subdivisions/cv-bv.m3u'
276 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sal.m3u 'https://iptv-org.github.io/iptv/subdivisions/cv-sl.m3u'
277 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-cayman-islands.m3u 'https://iptv-org.github.io/iptv/countries/ky.m3u'
278 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-central-african-republic.m3u 'https://iptv-org.github.io/iptv/countries/cf.m3u'
279 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-chad.m3u 'https://iptv-org.github.io/iptv/countries/td.m3u'
280 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-chile.m3u 'https://iptv-org.github.io/iptv/countries/cl.m3u'
281 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-biobio.m3u 'https://iptv-org.github.io/iptv/subdivisions/cl-bi.m3u'
282 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-coquimbo.m3u 'https://iptv-org.github.io/iptv/subdivisions/cl-co.m3u'
283 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-la-araucania.m3u 'https://iptv-org.github.io/iptv/subdivisions/cl-ar.m3u'
284 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-libertador-general-bernardo-o-higgins.m3u 'https://iptv-org.github.io/iptv/subdivisions/cl-li.m3u'
285 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-los-lagos.m3u 'https://iptv-org.github.io/iptv/subdivisions/cl-ll.m3u'
286 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-maule.m3u 'https://iptv-org.github.io/iptv/subdivisions/cl-ml.m3u'
287 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-nuble.m3u 'https://iptv-org.github.io/iptv/subdivisions/cl-nb.m3u'
288 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-valparaiso.m3u 'https://iptv-org.github.io/iptv/subdivisions/cl-vs.m3u'
289 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-china.m3u 'https://iptv-org.github.io/iptv/countries/cn.m3u'
290 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-colombia.m3u 'https://iptv-org.github.io/iptv/countries/co.m3u'
291 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-antioquia.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-ant.m3u'
292 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-atlantico.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-atl.m3u'
293 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-bolivar.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-bol.m3u'
294 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-caldas.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-cal.m3u'
295 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-cauca.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-cau.m3u'
296 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-choco.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-cho.m3u'
297 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-cundinamarca.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-cun.m3u'
298 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-huila.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-hui.m3u'
299 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-magdalena.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-mag.m3u'
300 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-narino.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-nar.m3u'
301 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-norte-de-santander.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-nsa.m3u'
302 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-quindio.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-qui.m3u'
303 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-risaralda.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-ris.m3u'
304 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-san-andres-providencia-y-santa-catalina.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-sap.m3u'
305 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-tolima.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-tol.m3u'
306 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-valle-del-cauca.m3u 'https://iptv-org.github.io/iptv/subdivisions/co-vac.m3u'
307 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-comoros.m3u 'https://iptv-org.github.io/iptv/countries/km.m3u'
308 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-cook-islands.m3u 'https://iptv-org.github.io/iptv/countries/ck.m3u'
309 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-costa-rica.m3u 'https://iptv-org.github.io/iptv/countries/cr.m3u'
310 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-puntarenas.m3u 'https://iptv-org.github.io/iptv/subdivisions/cr-p.m3u'
311 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-san-jose.m3u 'https://iptv-org.github.io/iptv/subdivisions/cr-sj.m3u'
312 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-croatia.m3u 'https://iptv-org.github.io/iptv/countries/hr.m3u'
313 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-cuba.m3u 'https://iptv-org.github.io/iptv/countries/cu.m3u'
314 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-curacao.m3u 'https://iptv-org.github.io/iptv/countries/cw.m3u'
315 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-cyprus.m3u 'https://iptv-org.github.io/iptv/countries/cy.m3u'
316 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-czech-republic.m3u 'https://iptv-org.github.io/iptv/countries/cz.m3u'
317 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-democratic-republic-of-the-congo.m3u 'https://iptv-org.github.io/iptv/countries/cd.m3u'
318 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-denmark.m3u 'https://iptv-org.github.io/iptv/countries/dk.m3u'
319 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-djibouti.m3u 'https://iptv-org.github.io/iptv/countries/dj.m3u'
320 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-dominica.m3u 'https://iptv-org.github.io/iptv/countries/dm.m3u'
321 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-dominican-republic.m3u 'https://iptv-org.github.io/iptv/countries/do.m3u'
322 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-distrito-nacional-santo-domingo.m3u 'https://iptv-org.github.io/iptv/subdivisions/do-01.m3u'
323 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-la-altagracia.m3u 'https://iptv-org.github.io/iptv/subdivisions/do-11.m3u'
324 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-la-vega.m3u 'https://iptv-org.github.io/iptv/subdivisions/do-13.m3u'
325 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-monsenor-nouel.m3u 'https://iptv-org.github.io/iptv/subdivisions/do-28.m3u'
326 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-puerto-plata.m3u 'https://iptv-org.github.io/iptv/subdivisions/do-18.m3u'
327 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-san-juan.m3u 'https://iptv-org.github.io/iptv/subdivisions/do-22.m3u'
328 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-santiago.m3u 'https://iptv-org.github.io/iptv/subdivisions/do-25.m3u'
329 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-valverde.m3u 'https://iptv-org.github.io/iptv/subdivisions/do-27.m3u'
330 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-east-timor.m3u 'https://iptv-org.github.io/iptv/countries/tl.m3u'
331 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ecuador.m3u 'https://iptv-org.github.io/iptv/countries/ec.m3u'
332 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-azuay.m3u 'https://iptv-org.github.io/iptv/subdivisions/ec-a.m3u'
333 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-loja.m3u 'https://iptv-org.github.io/iptv/subdivisions/ec-l.m3u'
334 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-orellana.m3u 'https://iptv-org.github.io/iptv/subdivisions/ec-d.m3u'
335 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-egypt.m3u 'https://iptv-org.github.io/iptv/countries/eg.m3u'
336 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-el-salvador.m3u 'https://iptv-org.github.io/iptv/countries/sv.m3u'
337 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-equatorial-guinea.m3u 'https://iptv-org.github.io/iptv/countries/gq.m3u'
338 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-eritrea.m3u 'https://iptv-org.github.io/iptv/countries/er.m3u'
339 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-estonia.m3u 'https://iptv-org.github.io/iptv/countries/ee.m3u'
340 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ethiopia.m3u 'https://iptv-org.github.io/iptv/countries/et.m3u'
341 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-falkland-islands.m3u 'https://iptv-org.github.io/iptv/countries/fk.m3u'
342 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-faroe-islands.m3u 'https://iptv-org.github.io/iptv/countries/fo.m3u'
343 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-fiji.m3u 'https://iptv-org.github.io/iptv/countries/fj.m3u'
344 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-finland.m3u 'https://iptv-org.github.io/iptv/countries/fi.m3u'
345 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-keski-suomi.m3u 'https://iptv-org.github.io/iptv/subdivisions/fi-08.m3u'
346 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-pohjanmaa.m3u 'https://iptv-org.github.io/iptv/subdivisions/fi-12.m3u'
347 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-france.m3u 'https://iptv-org.github.io/iptv/countries/fr.m3u'
348 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-french-guiana.m3u 'https://iptv-org.github.io/iptv/countries/gf.m3u'
349 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-french-polynesia.m3u 'https://iptv-org.github.io/iptv/countries/pf.m3u'
350 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-french-southern-territories.m3u 'https://iptv-org.github.io/iptv/countries/tf.m3u'
351 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-gabon.m3u 'https://iptv-org.github.io/iptv/countries/ga.m3u'
352 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-gambia.m3u 'https://iptv-org.github.io/iptv/countries/gm.m3u'
353 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-georgia.m3u 'https://iptv-org.github.io/iptv/countries/ge.m3u'
354 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-germany.m3u 'https://iptv-org.github.io/iptv/countries/de.m3u'
355 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ghana.m3u 'https://iptv-org.github.io/iptv/countries/gh.m3u'
356 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-greece.m3u 'https://iptv-org.github.io/iptv/countries/gr.m3u'
357 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-greenland.m3u 'https://iptv-org.github.io/iptv/countries/gl.m3u'
358 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-grenada.m3u 'https://iptv-org.github.io/iptv/countries/gd.m3u'
359 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-guadeloupe.m3u 'https://iptv-org.github.io/iptv/countries/gp.m3u'
360 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-guam.m3u 'https://iptv-org.github.io/iptv/countries/gu.m3u'
361 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-guatemala.m3u 'https://iptv-org.github.io/iptv/countries/gt.m3u'
362 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-escuintla.m3u 'https://iptv-org.github.io/iptv/subdivisions/gt-05.m3u'
363 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-izabal.m3u 'https://iptv-org.github.io/iptv/subdivisions/gt-18.m3u'
364 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-quiche.m3u 'https://iptv-org.github.io/iptv/subdivisions/gt-14.m3u'
365 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sacatepequez.m3u 'https://iptv-org.github.io/iptv/subdivisions/gt-03.m3u'
366 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-san-marcos.m3u 'https://iptv-org.github.io/iptv/subdivisions/gt-12.m3u'
367 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-santa-rosa.m3u 'https://iptv-org.github.io/iptv/subdivisions/gt-06.m3u'
368 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-solola.m3u 'https://iptv-org.github.io/iptv/subdivisions/gt-07.m3u'
369 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-totonicapan.m3u 'https://iptv-org.github.io/iptv/subdivisions/gt-08.m3u'
370 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-guernsey.m3u 'https://iptv-org.github.io/iptv/countries/gg.m3u'
371 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-guinea.m3u 'https://iptv-org.github.io/iptv/countries/gn.m3u'
372 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-guinea-bissau.m3u 'https://iptv-org.github.io/iptv/countries/gw.m3u'
373 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-guyana.m3u 'https://iptv-org.github.io/iptv/countries/gy.m3u'
374 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-haiti.m3u 'https://iptv-org.github.io/iptv/countries/ht.m3u'
375 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-honduras.m3u 'https://iptv-org.github.io/iptv/countries/hn.m3u'
376 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-hong-kong.m3u 'https://iptv-org.github.io/iptv/countries/hk.m3u'
377 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-hungary.m3u 'https://iptv-org.github.io/iptv/countries/hu.m3u'
378 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-iceland.m3u 'https://iptv-org.github.io/iptv/countries/is.m3u'
379 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-india.m3u 'https://iptv-org.github.io/iptv/countries/in.m3u'
380 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-indonesia.m3u 'https://iptv-org.github.io/iptv/countries/id.m3u'
381 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-aceh.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-ac.m3u'
382 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-bali.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-ba.m3u'
383 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-banten.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-bt.m3u'
384 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-bengkulu.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-be.m3u'
385 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-gorontalo.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-go.m3u'
386 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-jakarta-raya.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-jk.m3u'
387 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-jambi.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-ja.m3u'
388 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-jawa-barat.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-jb.m3u'
389 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-jawa-tengah.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-jt.m3u'
390 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-jawa-timur.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-ji.m3u'
391 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-kalimantan-barat.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-kb.m3u'
392 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-kalimantan-selatan.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-ks.m3u'
393 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-kalimantan-tengah.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-kt.m3u'
394 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-kalimantan-timur.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-ki.m3u'
395 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-kepulauan-bangka-belitung.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-bb.m3u'
396 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-lampung.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-la.m3u'
397 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-maluku.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-ml.m3u'
398 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-maluku-utara.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-mu.m3u'
399 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-nusa-tenggara-barat.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-nb.m3u'
400 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-nusa-tenggara-timur.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-nt.m3u'
401 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-papua.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-pp.m3u'
402 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-riau.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-ri.m3u'
403 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sulawesi-barat.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-sr.m3u'
404 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sulawesi-selatan.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-sn.m3u'
405 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sulawesi-tengah.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-st.m3u'
406 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sulawesi-tenggara.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-sg.m3u'
407 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sumatera-barat.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-sb.m3u'
408 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sumatera-selatan.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-ss.m3u'
409 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-yogyakarta.m3u 'https://iptv-org.github.io/iptv/subdivisions/id-yo.m3u'
410 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-iran.m3u 'https://iptv-org.github.io/iptv/countries/ir.m3u'
411 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-tehran.m3u 'https://iptv-org.github.io/iptv/subdivisions/ir-23.m3u'
412 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-iraq.m3u 'https://iptv-org.github.io/iptv/countries/iq.m3u'
413 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ireland.m3u 'https://iptv-org.github.io/iptv/countries/ie.m3u'
414 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-israel.m3u 'https://iptv-org.github.io/iptv/countries/il.m3u'
415 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-italy.m3u 'https://iptv-org.github.io/iptv/countries/it.m3u'
416 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ivory-coast.m3u 'https://iptv-org.github.io/iptv/countries/ci.m3u'
417 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-jamaica.m3u 'https://iptv-org.github.io/iptv/countries/jm.m3u'
418 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-japan.m3u 'https://iptv-org.github.io/iptv/countries/jp.m3u'
419 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-chiba.m3u 'https://iptv-org.github.io/iptv/subdivisions/jp-12.m3u'
420 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-kanagawa.m3u 'https://iptv-org.github.io/iptv/subdivisions/jp-14.m3u'
421 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-saitama.m3u 'https://iptv-org.github.io/iptv/subdivisions/jp-11.m3u'
422 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-tokyo.m3u 'https://iptv-org.github.io/iptv/subdivisions/jp-13.m3u'
423 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-jordan.m3u 'https://iptv-org.github.io/iptv/countries/jo.m3u'
424 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-kazakhstan.m3u 'https://iptv-org.github.io/iptv/countries/kz.m3u'
425 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-kenya.m3u 'https://iptv-org.github.io/iptv/countries/ke.m3u'
426 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-kiribati.m3u 'https://iptv-org.github.io/iptv/countries/ki.m3u'
427 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-kosovo.m3u 'https://iptv-org.github.io/iptv/countries/xk.m3u'
428 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-kuwait.m3u 'https://iptv-org.github.io/iptv/countries/kw.m3u'
429 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-kyrgyzstan.m3u 'https://iptv-org.github.io/iptv/countries/kg.m3u'
430 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-laos.m3u 'https://iptv-org.github.io/iptv/countries/la.m3u'
431 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-latvia.m3u 'https://iptv-org.github.io/iptv/countries/lv.m3u'
432 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-lebanon.m3u 'https://iptv-org.github.io/iptv/countries/lb.m3u'
433 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-lesotho.m3u 'https://iptv-org.github.io/iptv/countries/ls.m3u'
434 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-liberia.m3u 'https://iptv-org.github.io/iptv/countries/lr.m3u'
435 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-libya.m3u 'https://iptv-org.github.io/iptv/countries/ly.m3u'
436 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-liechtenstein.m3u 'https://iptv-org.github.io/iptv/countries/li.m3u'
437 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-lithuania.m3u 'https://iptv-org.github.io/iptv/countries/lt.m3u'
438 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-luxembourg.m3u 'https://iptv-org.github.io/iptv/countries/lu.m3u'
439 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-macao.m3u 'https://iptv-org.github.io/iptv/countries/mo.m3u'
440 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-madagascar.m3u 'https://iptv-org.github.io/iptv/countries/mg.m3u'
441 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-malawi.m3u 'https://iptv-org.github.io/iptv/countries/mw.m3u'
442 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-malaysia.m3u 'https://iptv-org.github.io/iptv/countries/my.m3u'
443 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-maldives.m3u 'https://iptv-org.github.io/iptv/countries/mv.m3u'
444 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-mali.m3u 'https://iptv-org.github.io/iptv/countries/ml.m3u'
445 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-malta.m3u 'https://iptv-org.github.io/iptv/countries/mt.m3u'
446 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-marshall-islands.m3u 'https://iptv-org.github.io/iptv/countries/mh.m3u'
447 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-martinique.m3u 'https://iptv-org.github.io/iptv/countries/mq.m3u'
448 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-mauritania.m3u 'https://iptv-org.github.io/iptv/countries/mr.m3u'
449 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-mauritius.m3u 'https://iptv-org.github.io/iptv/countries/mu.m3u'
450 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-mayotte.m3u 'https://iptv-org.github.io/iptv/countries/yt.m3u'
451 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-mexico.m3u 'https://iptv-org.github.io/iptv/countries/mx.m3u'
452 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-aguascalientes.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-agu.m3u'
453 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-baja-california.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-bcn.m3u'
454 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-chihuahua.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-chh.m3u'
455 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ciudad-de-mexico.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-cmx.m3u'
456 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-coahuila-de-zaragoza.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-coa.m3u'
457 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-durango.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-dur.m3u'
458 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-guanajuato.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-gua.m3u'
459 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-guerrero.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-gro.m3u'
460 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-jalisco.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-jal.m3u'
461 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-morelos.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-mor.m3u'
462 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-nuevo-leon.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-nle.m3u'
463 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-puebla.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-pue.m3u'
464 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-queretaro.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-que.m3u'
465 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-quintana-roo.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-roo.m3u'
466 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-san-luis-potosi.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-slp.m3u'
467 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sinaloa.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-sin.m3u'
468 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sonora.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-son.m3u'
469 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-tamaulipas.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-tam.m3u'
470 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-veracruz-de-ignacio-de-la-llave.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-ver.m3u'
471 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-yucatan.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-yuc.m3u'
472 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-zacatecas.m3u 'https://iptv-org.github.io/iptv/subdivisions/mx-zac.m3u'
473 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-micronesia.m3u 'https://iptv-org.github.io/iptv/countries/fm.m3u'
474 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-moldova.m3u 'https://iptv-org.github.io/iptv/countries/md.m3u'
475 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-monaco.m3u 'https://iptv-org.github.io/iptv/countries/mc.m3u'
476 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-mongolia.m3u 'https://iptv-org.github.io/iptv/countries/mn.m3u'
477 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-montenegro.m3u 'https://iptv-org.github.io/iptv/countries/me.m3u'
478 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ulcinj.m3u 'https://iptv-org.github.io/iptv/subdivisions/me-20.m3u'
479 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-montserrat.m3u 'https://iptv-org.github.io/iptv/countries/ms.m3u'
480 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-morocco.m3u 'https://iptv-org.github.io/iptv/countries/ma.m3u'
481 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-mozambique.m3u 'https://iptv-org.github.io/iptv/countries/mz.m3u'
482 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-myanmar-burma.m3u 'https://iptv-org.github.io/iptv/countries/mm.m3u'
483 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-namibia.m3u 'https://iptv-org.github.io/iptv/countries/na.m3u'
484 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-nauru.m3u 'https://iptv-org.github.io/iptv/countries/nr.m3u'
485 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-nepal.m3u 'https://iptv-org.github.io/iptv/countries/np.m3u'
486 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-netherlands.m3u 'https://iptv-org.github.io/iptv/countries/nl.m3u'
487 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-new-caledonia.m3u 'https://iptv-org.github.io/iptv/countries/nc.m3u'
488 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-new-zealand.m3u 'https://iptv-org.github.io/iptv/countries/nz.m3u'
489 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-nicaragua.m3u 'https://iptv-org.github.io/iptv/countries/ni.m3u'
490 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-niger.m3u 'https://iptv-org.github.io/iptv/countries/ne.m3u'
491 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-nigeria.m3u 'https://iptv-org.github.io/iptv/countries/ng.m3u'
492 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-niue.m3u 'https://iptv-org.github.io/iptv/countries/nu.m3u'
493 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-norfolk-island.m3u 'https://iptv-org.github.io/iptv/countries/nf.m3u'
494 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-north-korea.m3u 'https://iptv-org.github.io/iptv/countries/kp.m3u'
495 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-north-macedonia.m3u 'https://iptv-org.github.io/iptv/countries/mk.m3u'
496 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-northern-mariana-islands.m3u 'https://iptv-org.github.io/iptv/countries/mp.m3u'
497 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-norway.m3u 'https://iptv-org.github.io/iptv/countries/no.m3u'
498 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-oman.m3u 'https://iptv-org.github.io/iptv/countries/om.m3u'
499 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-pakistan.m3u 'https://iptv-org.github.io/iptv/countries/pk.m3u'
500 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-islamabad.m3u 'https://iptv-org.github.io/iptv/subdivisions/pk-is.m3u'
501 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-palau.m3u 'https://iptv-org.github.io/iptv/countries/pw.m3u'
502 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-palestine.m3u 'https://iptv-org.github.io/iptv/countries/ps.m3u'
503 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-panama.m3u 'https://iptv-org.github.io/iptv/countries/pa.m3u'
504 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-papua-new-guinea.m3u 'https://iptv-org.github.io/iptv/countries/pg.m3u'
505 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-paraguay.m3u 'https://iptv-org.github.io/iptv/countries/py.m3u'
506 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-alto-parana.m3u 'https://iptv-org.github.io/iptv/subdivisions/py-10.m3u'
507 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-boqueron.m3u 'https://iptv-org.github.io/iptv/subdivisions/py-19.m3u'
508 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-caaguazu.m3u 'https://iptv-org.github.io/iptv/subdivisions/py-5.m3u'
509 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-central.m3u 'https://iptv-org.github.io/iptv/subdivisions/py-11.m3u'
510 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-itapua.m3u 'https://iptv-org.github.io/iptv/subdivisions/py-7.m3u'
511 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-presidente-hayes.m3u 'https://iptv-org.github.io/iptv/subdivisions/py-15.m3u'
512 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-peru.m3u 'https://iptv-org.github.io/iptv/countries/pe.m3u'
513 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-amazonas.m3u 'https://iptv-org.github.io/iptv/subdivisions/pe-ama.m3u'
514 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ancash.m3u 'https://iptv-org.github.io/iptv/subdivisions/pe-anc.m3u'
515 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-apurimac.m3u 'https://iptv-org.github.io/iptv/subdivisions/pe-apu.m3u'
516 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-arequipa.m3u 'https://iptv-org.github.io/iptv/subdivisions/pe-are.m3u'
517 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ayacucho.m3u 'https://iptv-org.github.io/iptv/subdivisions/pe-aya.m3u'
518 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-cusco.m3u 'https://iptv-org.github.io/iptv/subdivisions/pe-cus.m3u'
519 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-junin.m3u 'https://iptv-org.github.io/iptv/subdivisions/pe-jun.m3u'
520 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-lima.m3u 'https://iptv-org.github.io/iptv/subdivisions/pe-lim.m3u'
521 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-loreto.m3u 'https://iptv-org.github.io/iptv/subdivisions/pe-lor.m3u'
522 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-moquegua.m3u 'https://iptv-org.github.io/iptv/subdivisions/pe-moq.m3u'
523 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-puno.m3u 'https://iptv-org.github.io/iptv/subdivisions/pe-pun.m3u'
524 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-san-martin.m3u 'https://iptv-org.github.io/iptv/subdivisions/pe-sam.m3u'
525 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-philippines.m3u 'https://iptv-org.github.io/iptv/countries/ph.m3u'
526 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-pitcairn-islands.m3u 'https://iptv-org.github.io/iptv/countries/pn.m3u'
527 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-poland.m3u 'https://iptv-org.github.io/iptv/countries/pl.m3u'
528 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-portugal.m3u 'https://iptv-org.github.io/iptv/countries/pt.m3u'
529 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-puerto-rico.m3u 'https://iptv-org.github.io/iptv/countries/pr.m3u'
530 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-qatar.m3u 'https://iptv-org.github.io/iptv/countries/qa.m3u'
531 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-republic-of-the-congo.m3u 'https://iptv-org.github.io/iptv/countries/cg.m3u'
532 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-brazzaville.m3u 'https://iptv-org.github.io/iptv/subdivisions/cg-bzv.m3u'
533 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-réunion.m3u 'https://iptv-org.github.io/iptv/countries/re.m3u'
534 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-romania.m3u 'https://iptv-org.github.io/iptv/countries/ro.m3u'
535 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-gorj.m3u 'https://iptv-org.github.io/iptv/subdivisions/ro-gj.m3u'
536 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-russia.m3u 'https://iptv-org.github.io/iptv/countries/ru.m3u'
537 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-rwanda.m3u 'https://iptv-org.github.io/iptv/countries/rw.m3u'
538 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-saint-barthelemy.m3u 'https://iptv-org.github.io/iptv/countries/bl.m3u'
539 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-saint-helena.m3u 'https://iptv-org.github.io/iptv/countries/sh.m3u'
540 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-saint-kitts-and-nevis.m3u 'https://iptv-org.github.io/iptv/countries/kn.m3u'
541 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-saint-lucia.m3u 'https://iptv-org.github.io/iptv/countries/lc.m3u'
542 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-saint-martin.m3u 'https://iptv-org.github.io/iptv/countries/mf.m3u'
543 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-saint-pierre-and-miquelon.m3u 'https://iptv-org.github.io/iptv/countries/pm.m3u'
544 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-saint-vincent-and-the-grenadines.m3u 'https://iptv-org.github.io/iptv/countries/vc.m3u'
545 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-samoa.m3u 'https://iptv-org.github.io/iptv/countries/ws.m3u'
546 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-san-marino.m3u 'https://iptv-org.github.io/iptv/countries/sm.m3u'
547 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sao-tome-and-principe.m3u 'https://iptv-org.github.io/iptv/countries/st.m3u'
548 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-saudi-arabia.m3u 'https://iptv-org.github.io/iptv/countries/sa.m3u'
549 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-senegal.m3u 'https://iptv-org.github.io/iptv/countries/sn.m3u'
550 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-serbia.m3u 'https://iptv-org.github.io/iptv/countries/rs.m3u'
551 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-seychelles.m3u 'https://iptv-org.github.io/iptv/countries/sc.m3u'
552 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sierra-leone.m3u 'https://iptv-org.github.io/iptv/countries/sl.m3u'
553 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-singapore.m3u 'https://iptv-org.github.io/iptv/countries/sg.m3u'
554 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sint-maarten.m3u 'https://iptv-org.github.io/iptv/countries/sx.m3u'
555 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-slovakia.m3u 'https://iptv-org.github.io/iptv/countries/sk.m3u'
556 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-slovenia.m3u 'https://iptv-org.github.io/iptv/countries/si.m3u'
557 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-solomon-islands.m3u 'https://iptv-org.github.io/iptv/countries/sb.m3u'
558 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-somalia.m3u 'https://iptv-org.github.io/iptv/countries/so.m3u'
559 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-south-africa.m3u 'https://iptv-org.github.io/iptv/countries/za.m3u'
560 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-south-georgia-and-the-south-sandwich-islands.m3u 'https://iptv-org.github.io/iptv/countries/gs.m3u'
561 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-south-korea.m3u 'https://iptv-org.github.io/iptv/countries/kr.m3u'
562 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-busan-gwangyeoksi.m3u 'https://iptv-org.github.io/iptv/subdivisions/kr-26.m3u'
563 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-chungcheongbuk-do.m3u 'https://iptv-org.github.io/iptv/subdivisions/kr-43.m3u'
564 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-daegu-gwangyeoksi.m3u 'https://iptv-org.github.io/iptv/subdivisions/kr-27.m3u'
565 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-daejeon-gwangyeoksi.m3u 'https://iptv-org.github.io/iptv/subdivisions/kr-30.m3u'
566 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-gangwon-do.m3u 'https://iptv-org.github.io/iptv/subdivisions/kr-42.m3u'
567 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-gwangju-gwangyeoksi.m3u 'https://iptv-org.github.io/iptv/subdivisions/kr-29.m3u'
568 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-gyeonggi-do.m3u 'https://iptv-org.github.io/iptv/subdivisions/kr-41.m3u'
569 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-gyeongsangbuk-do.m3u 'https://iptv-org.github.io/iptv/subdivisions/kr-47.m3u'
570 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-gyeongsangnam-do.m3u 'https://iptv-org.github.io/iptv/subdivisions/kr-48.m3u'
571 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-jeju-teukbyeoljachido.m3u 'https://iptv-org.github.io/iptv/subdivisions/kr-49.m3u'
572 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-jeollabuk-do.m3u 'https://iptv-org.github.io/iptv/subdivisions/kr-45.m3u'
573 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-jeollanam-do.m3u 'https://iptv-org.github.io/iptv/subdivisions/kr-46.m3u'
574 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-seoul-teukbyeolsi.m3u 'https://iptv-org.github.io/iptv/subdivisions/kr-11.m3u'
575 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ulsan-gwangyeoksi.m3u 'https://iptv-org.github.io/iptv/subdivisions/kr-31.m3u'
576 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-south-sudan.m3u 'https://iptv-org.github.io/iptv/countries/ss.m3u'
577 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-spain.m3u 'https://iptv-org.github.io/iptv/countries/es.m3u'
578 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-andalucia.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-an.m3u'
579 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-aragon.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-ar.m3u'
580 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-asturias-principado-de.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-as.m3u'
581 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-canarias.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-cn.m3u'
582 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-castilla-y-leon.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-cl.m3u'
583 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-castilla-la-mancha.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-cm.m3u'
584 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-catalunya.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-ct.m3u'
585 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ceuta.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-ce.m3u'
586 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-extremadura.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-ex.m3u'
587 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-galicia.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-ga.m3u'
588 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-illes-balears.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-ib.m3u'
589 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-la-rioja.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-ri.m3u'
590 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-madrid-comunidad-de.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-md.m3u'
591 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-murcia-region-de.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-mc.m3u'
592 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-navarra-comunidad-foral-de.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-nc.m3u'
593 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-pais-vasco.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-pv.m3u'
594 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-valenciana-comunidad.m3u 'https://iptv-org.github.io/iptv/subdivisions/es-vc.m3u'
595 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sri-lanka.m3u 'https://iptv-org.github.io/iptv/countries/lk.m3u'
596 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sudan.m3u 'https://iptv-org.github.io/iptv/countries/sd.m3u'
597 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-suriname.m3u 'https://iptv-org.github.io/iptv/countries/sr.m3u'
598 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-swaziland.m3u 'https://iptv-org.github.io/iptv/countries/sz.m3u'
599 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-sweden.m3u 'https://iptv-org.github.io/iptv/countries/se.m3u'
600 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-switzerland.m3u 'https://iptv-org.github.io/iptv/countries/ch.m3u'
601 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-syria.m3u 'https://iptv-org.github.io/iptv/countries/sy.m3u'
602 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-taiwan.m3u 'https://iptv-org.github.io/iptv/countries/tw.m3u'
603 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-tajikistan.m3u 'https://iptv-org.github.io/iptv/countries/tj.m3u'
604 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-tanzania.m3u 'https://iptv-org.github.io/iptv/countries/tz.m3u'
605 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-thailand.m3u 'https://iptv-org.github.io/iptv/countries/th.m3u'
606 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-togo.m3u 'https://iptv-org.github.io/iptv/countries/tg.m3u'
607 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-tokelau.m3u 'https://iptv-org.github.io/iptv/countries/tk.m3u'
608 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-tonga.m3u 'https://iptv-org.github.io/iptv/countries/to.m3u'
609 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-trinidad-and-tobago.m3u 'https://iptv-org.github.io/iptv/countries/tt.m3u'
610 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-tunisia.m3u 'https://iptv-org.github.io/iptv/countries/tn.m3u'
611 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-turkey.m3u 'https://iptv-org.github.io/iptv/countries/tr.m3u'
612 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-turkmenistan.m3u 'https://iptv-org.github.io/iptv/countries/tm.m3u'
613 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-turks-and-caicos-islands.m3u 'https://iptv-org.github.io/iptv/countries/tc.m3u'
614 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-tuvalu.m3u 'https://iptv-org.github.io/iptv/countries/tv.m3u'
615 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-us-virgin-islands.m3u 'https://iptv-org.github.io/iptv/countries/vi.m3u'
616 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-uganda.m3u 'https://iptv-org.github.io/iptv/countries/ug.m3u'
617 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ukraine.m3u 'https://iptv-org.github.io/iptv/countries/ua.m3u'
618 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-united-arab-emirates.m3u 'https://iptv-org.github.io/iptv/countries/ae.m3u'
619 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-united-kingdom.m3u 'https://iptv-org.github.io/iptv/countries/uk.m3u'
620 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-wales.m3u 'https://iptv-org.github.io/iptv/subdivisions/gb-wls.m3u'
621 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-united-states.m3u 'https://iptv-org.github.io/iptv/countries/us.m3u'
622 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-alabama.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-al.m3u'
623 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-alaska.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-ak.m3u'
624 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-arizona.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-az.m3u'
625 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-arkansas.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-ar.m3u'
626 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-california.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-ca.m3u'
627 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-colorado.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-co.m3u'
628 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-connecticut.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-ct.m3u'
629 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-delaware.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-de.m3u'
630 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-district-of-columbia.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-dc.m3u'
631 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-florida.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-fl.m3u'
632 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-georgia.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-ga.m3u'
633 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-guam.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-gu.m3u'
634 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-hawaii.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-hi.m3u'
635 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-illinois.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-il.m3u'
636 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-indiana.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-in.m3u'
637 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-iowa.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-ia.m3u'
638 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-kansas.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-ks.m3u'
639 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-kentucky.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-ky.m3u'
640 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-louisiana.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-la.m3u'
641 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-maine.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-me.m3u'
642 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-maryland.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-md.m3u'
643 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-massachusetts.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-ma.m3u'
644 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-michigan.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-mi.m3u'
645 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-minnesota.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-mn.m3u'
646 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-mississippi.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-ms.m3u'
647 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-missouri.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-mo.m3u'
648 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-nebraska.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-ne.m3u'
649 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-nevada.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-nv.m3u'
650 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-new-hampshire.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-nh.m3u'
651 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-new-jersey.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-nj.m3u'
652 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-new-mexico.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-nm.m3u'
653 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-new-york.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-ny.m3u'
654 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-north-carolina.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-nc.m3u'
655 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-north-dakota.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-nd.m3u'
656 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-ohio.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-oh.m3u'
657 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-oklahoma.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-ok.m3u'
658 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-pennsylvania.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-pa.m3u'
659 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-tennessee.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-tn.m3u'
660 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-texas.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-tx.m3u'
661 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-washington.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-wa.m3u'
662 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-wisconsin.m3u 'https://iptv-org.github.io/iptv/subdivisions/us-wi.m3u'
663 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-uruguay.m3u 'https://iptv-org.github.io/iptv/countries/uy.m3u'
664 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-uzbekistan.m3u 'https://iptv-org.github.io/iptv/countries/uz.m3u'
665 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-vanuatu.m3u 'https://iptv-org.github.io/iptv/countries/vu.m3u'
666 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-vatican-city.m3u 'https://iptv-org.github.io/iptv/countries/va.m3u'
667 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-venezuela.m3u 'https://iptv-org.github.io/iptv/countries/ve.m3u'
668 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-aragua.m3u 'https://iptv-org.github.io/iptv/subdivisions/ve-d.m3u'
669 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-lara.m3u 'https://iptv-org.github.io/iptv/subdivisions/ve-k.m3u'
670 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-vietnam.m3u 'https://iptv-org.github.io/iptv/countries/vn.m3u'
671 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-wallis-and-futuna.m3u 'https://iptv-org.github.io/iptv/countries/wf.m3u'
672 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-western-sahara.m3u 'https://iptv-org.github.io/iptv/countries/eh.m3u'
673 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-yemen.m3u 'https://iptv-org.github.io/iptv/countries/ye.m3u'
674 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-zambia.m3u 'https://iptv-org.github.io/iptv/countries/zm.m3u'
675 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-zimbabwe.m3u 'https://iptv-org.github.io/iptv/countries/zw.m3u'
676 | wget -c -P "$mydir" -O "$mydir"/iptvorg-country-international.m3u 'https://iptv-org.github.io/iptv/countries/int.m3u'
677 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-africa.m3u 'https://iptv-org.github.io/iptv/regions/afr.m3u'
678 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-americas.m3u 'https://iptv-org.github.io/iptv/regions/amer.m3u'
679 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-arab-world.m3u 'https://iptv-org.github.io/iptv/regions/arab.m3u'
680 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-asia.m3u 'https://iptv-org.github.io/iptv/regions/asia.m3u'
681 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-asia-pacific.m3u 'https://iptv-org.github.io/iptv/regions/apac.m3u'
682 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-association-of-southeast-asian-nations.m3u 'https://iptv-org.github.io/iptv/regions/asean.m3u'
683 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-benelux.m3u 'https://iptv-org.github.io/iptv/regions/benelux.m3u'
684 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-caribbean.m3u 'https://iptv-org.github.io/iptv/regions/carib.m3u'
685 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-central-america.m3u 'https://iptv-org.github.io/iptv/regions/cenamer.m3u'
686 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-central-and-eastern-europe.m3u 'https://iptv-org.github.io/iptv/regions/cee.m3u'
687 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-central-asia.m3u 'https://iptv-org.github.io/iptv/regions/cas.m3u'
688 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-commonwealth-of-independent-states.m3u 'https://iptv-org.github.io/iptv/regions/cis.m3u'
689 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-europe.m3u 'https://iptv-org.github.io/iptv/regions/eur.m3u'
690 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-europe-the-middle-east-and-africa.m3u 'https://iptv-org.github.io/iptv/regions/emea.m3u'
691 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-hispanic-america.m3u 'https://iptv-org.github.io/iptv/regions/hispam.m3u'
692 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-latin-america.m3u 'https://iptv-org.github.io/iptv/regions/latam.m3u'
693 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-latin-america-and-the-caribbean.m3u 'https://iptv-org.github.io/iptv/regions/lac.m3u'
694 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-maghreb.m3u 'https://iptv-org.github.io/iptv/regions/maghreb.m3u'
695 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-middle-east.m3u 'https://iptv-org.github.io/iptv/regions/mideast.m3u'
696 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-middle-east-and-north-africa.m3u 'https://iptv-org.github.io/iptv/regions/mena.m3u'
697 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-nordics.m3u 'https://iptv-org.github.io/iptv/regions/nord.m3u'
698 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-north-america.m3u 'https://iptv-org.github.io/iptv/regions/noram.m3u'
699 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-northern-america.m3u 'https://iptv-org.github.io/iptv/regions/nam.m3u'
700 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-northern-europe.m3u 'https://iptv-org.github.io/iptv/regions/neur.m3u'
701 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-oceania.m3u 'https://iptv-org.github.io/iptv/regions/oce.m3u'
702 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-south-america.m3u 'https://iptv-org.github.io/iptv/regions/southam.m3u'
703 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-south-asia.m3u 'https://iptv-org.github.io/iptv/regions/sas.m3u'
704 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-southeast-asia.m3u 'https://iptv-org.github.io/iptv/regions/sea.m3u'
705 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-southern-europe.m3u 'https://iptv-org.github.io/iptv/regions/ser.m3u'
706 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-sub-saharan-africa.m3u 'https://iptv-org.github.io/iptv/regions/ssa.m3u'
707 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-west-africa.m3u 'https://iptv-org.github.io/iptv/regions/wafr.m3u'
708 | wget -c -P "$mydir" -O "$mydir"/iptvorg-region-western-europe.m3u 'https://iptv-org.github.io/iptv/regions/wer.m3u'
709 | wget -c -P "$mydir" -O "$mydir"/iptvorg-main-with-xxx-all.m3u 'https://iptv-org.github.io/iptv/index.nsfw.m3u'
710 | }
711 | # }}}
712 | # {{{ freetuxtv
713 | refresh_freetuxtv() {
714 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-all.m3u 'https://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&isp=all'
715 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-french.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=fr&isp=all'
716 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-nolang.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=none&isp=all'
717 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-german.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=de&isp=all'
718 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-english.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=en&isp=all'
719 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-turkish.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=tr&isp=all'
720 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-spanish.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=es&isp=all'
721 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-arabic.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=ar&isp=all'
722 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-italian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=it&isp=all'
723 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-russian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=ru&isp=all'
724 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-slovak.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=sk&isp=all'
725 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-czech.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=cs&isp=all'
726 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-portuguese.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=pt&isp=all'
727 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-chinese.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=zh&isp=all'
728 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-hungerian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=hu&isp=all'
729 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-dutch.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=nl&isp=all'
730 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-romanian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=ro&isp=all'
731 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-serbian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=sr&isp=all'
732 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-bulgarian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=bg&isp=all'
733 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-croatian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=hr&isp=all'
734 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-serbo-croatian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=sh&isp=all'
735 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-polish.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=pl&isp=all'
736 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-greek.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=el&isp=all'
737 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-persian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=fa&isp=all'
738 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-indonesian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=in&isp=all'
739 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-albanian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=sq&isp=all'
740 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-macedonian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=mk&isp=all'
741 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-ukrainian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=uk&isp=all'
742 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-korean.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=ko&isp=all'
743 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-hindi.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=hi&isp=all'
744 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-hebrew.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=iw&isp=all'
745 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-slovenian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=sl&isp=all'
746 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-vietnamese.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=vi&isp=all'
747 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-thai.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=th&isp=all'
748 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-latvian-lettish.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=lv&isp=all'
749 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-lithuanian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=lt&isp=all'
750 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-danish.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=da&isp=all'
751 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-japanese.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=ja&isp=all'
752 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-finnish.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=fi&isp=all'
753 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-azerbaijani.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=az&isp=all'
754 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-georgian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=ka&isp=all'
755 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-swedish.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=sv&isp=all'
756 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-norwegian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=no&isp=all'
757 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-estonian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=et&isp=all'
758 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-malay.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=ms&isp=all'
759 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-urdu.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=ur&isp=all'
760 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-catalan.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=ca&isp=all'
761 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-maltese.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=mt&isp=all'
762 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-moldavian.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=mo&isp=all'
763 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-malayalam.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=ml&isp=all'
764 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-tamil.m3u 'https://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=ta&isp=all'
765 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-bengali-bangla.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=bn&isp=all'
766 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-irish.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=ga&isp=all'
767 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-kazakh.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=kk&isp=all'
768 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-montenegrin.m3u 'https://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=cn&isp=all'
769 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-gujarati.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=gu&isp=all'
770 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-welsh.m3u 'https://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=cy&isp=all'
771 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-interlingua.m3u 'http://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=ia&isp=all'
772 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-icelandic.m3u 'https://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=is&isp=all'
773 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-scots-gaelic.m3u 'https://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=gd&isp=all'
774 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-laothian.m3u 'https://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&lng=lo&isp=all'
775 | }
776 | # }}}
777 | # {{{ freetv
778 | refresh_freetv() {
779 | wget -c -P "$mydir" -O "$mydir"/freetv-all.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlist.m3u8'
780 | wget -c -P "$mydir" -O "$mydir"/freetv-andorra.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_andorra.m3u8'
781 | wget -c -P "$mydir" -O "$mydir"/freetv-argentina.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_argentina.m3u8'
782 | wget -c -P "$mydir" -O "$mydir"/freetv-australia.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_australia.m3u8'
783 | wget -c -P "$mydir" -O "$mydir"/freetv-austria.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_austria.m3u8'
784 | wget -c -P "$mydir" -O "$mydir"/freetv-belarus.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_belarus.m3u8'
785 | wget -c -P "$mydir" -O "$mydir"/freetv-belgium.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_belgium.m3u8'
786 | wget -c -P "$mydir" -O "$mydir"/freetv-brazil.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_brazil.m3u8'
787 | wget -c -P "$mydir" -O "$mydir"/freetv-bulgaria.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_bulgaria.m3u8'
788 | wget -c -P "$mydir" -O "$mydir"/freetv-canada.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_canada.m3u8'
789 | wget -c -P "$mydir" -O "$mydir"/freetv-china.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_china.m3u8'
790 | wget -c -P "$mydir" -O "$mydir"/freetv-costa-rica.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_costa_rica.m3u8'
791 | wget -c -P "$mydir" -O "$mydir"/freetv-croatia.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_croatia.m3u8'
792 | wget -c -P "$mydir" -O "$mydir"/freetv-cyprus.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_cyprus.m3u8'
793 | wget -c -P "$mydir" -O "$mydir"/freetv-czech-republic.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_czech_republic.m3u8'
794 | wget -c -P "$mydir" -O "$mydir"/freetv-denmark.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_denmark.m3u8'
795 | wget -c -P "$mydir" -O "$mydir"/freetv-dominican-republic.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_dominican_republic.m3u8'
796 | wget -c -P "$mydir" -O "$mydir"/freetv-estonia.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_estonia.m3u8'
797 | wget -c -P "$mydir" -O "$mydir"/freetv-finland.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_finland.m3u8'
798 | wget -c -P "$mydir" -O "$mydir"/freetv-france.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_france.m3u8'
799 | wget -c -P "$mydir" -O "$mydir"/freetv-georgia.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_georgia.m3u8'
800 | wget -c -P "$mydir" -O "$mydir"/freetv-germany.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_germany.m3u8'
801 | wget -c -P "$mydir" -O "$mydir"/freetv-greece.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_greece.m3u8'
802 | wget -c -P "$mydir" -O "$mydir"/freetv-hungary.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_hungary.m3u8'
803 | wget -c -P "$mydir" -O "$mydir"/freetv-iceland.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_iceland.m3u8'
804 | wget -c -P "$mydir" -O "$mydir"/freetv-india.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_india.m3u8'
805 | wget -c -P "$mydir" -O "$mydir"/freetv-iran.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_iran.m3u8'
806 | wget -c -P "$mydir" -O "$mydir"/freetv-iraq.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_iraq.m3u8'
807 | wget -c -P "$mydir" -O "$mydir"/freetv-ireland.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_ireland.m3u8'
808 | wget -c -P "$mydir" -O "$mydir"/freetv-israel.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_israel.m3u8'
809 | wget -c -P "$mydir" -O "$mydir"/freetv-italy.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_italy.m3u8'
810 | wget -c -P "$mydir" -O "$mydir"/freetv-japan.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_japan.m3u8'
811 | wget -c -P "$mydir" -O "$mydir"/freetv-korea.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_korea.m3u8'
812 | wget -c -P "$mydir" -O "$mydir"/freetv-kosovo.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_kosovo.m3u8'
813 | wget -c -P "$mydir" -O "$mydir"/freetv-lithuania.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_lithuania.m3u8'
814 | wget -c -P "$mydir" -O "$mydir"/freetv-malta.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_malta.m3u8'
815 | wget -c -P "$mydir" -O "$mydir"/freetv-mexico.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_mexico.m3u8'
816 | wget -c -P "$mydir" -O "$mydir"/freetv-montenegro.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_montenegro.m3u8'
817 | wget -c -P "$mydir" -O "$mydir"/freetv-netherlands.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_netherlands.m3u8'
818 | wget -c -P "$mydir" -O "$mydir"/freetv-north-korea.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_north_korea.m3u8'
819 | wget -c -P "$mydir" -O "$mydir"/freetv-north-macedonia.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_north_macedonia.m3u8'
820 | wget -c -P "$mydir" -O "$mydir"/freetv-norway.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_norway.m3u8'
821 | wget -c -P "$mydir" -O "$mydir"/freetv-paraguay.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_paraguay.m3u8'
822 | wget -c -P "$mydir" -O "$mydir"/freetv-peru.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_peru.m3u8'
823 | wget -c -P "$mydir" -O "$mydir"/freetv-portugal.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_portugal.m3u8'
824 | wget -c -P "$mydir" -O "$mydir"/freetv-romania.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_romania.m3u8'
825 | wget -c -P "$mydir" -O "$mydir"/freetv-russia.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_russia.m3u8'
826 | wget -c -P "$mydir" -O "$mydir"/freetv-san-marino.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_san_marino.m3u8'
827 | wget -c -P "$mydir" -O "$mydir"/freetv-serbia.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_serbia.m3u8'
828 | wget -c -P "$mydir" -O "$mydir"/freetv-slovakia.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_slovakia.m3u8'
829 | wget -c -P "$mydir" -O "$mydir"/freetv-slovenia.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_slovenia.m3u8'
830 | wget -c -P "$mydir" -O "$mydir"/freetv-spain.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_spain.m3u8'
831 | wget -c -P "$mydir" -O "$mydir"/freetv-spain-vod.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_spain_vod.m3u8'
832 | wget -c -P "$mydir" -O "$mydir"/freetv-sweden.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_sweden.m3u8'
833 | wget -c -P "$mydir" -O "$mydir"/freetv-switzerland.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_switzerland.m3u8'
834 | wget -c -P "$mydir" -O "$mydir"/freetv-trinidad.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_trinidad.m3u8'
835 | wget -c -P "$mydir" -O "$mydir"/freetv-turkey.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_turkey.m3u8'
836 | wget -c -P "$mydir" -O "$mydir"/freetv-uk.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_uk.m3u8'
837 | wget -c -P "$mydir" -O "$mydir"/freetv-ukraine.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_ukraine.m3u8'
838 | wget -c -P "$mydir" -O "$mydir"/freetv-usa.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_usa.m3u8'
839 | wget -c -P "$mydir" -O "$mydir"/freetv-usa-vod.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_usa_vod.m3u8'
840 | wget -c -P "$mydir" -O "$mydir"/freetv-venezuela.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_venezuela.m3u8'
841 | wget -c -P "$mydir" -O "$mydir"/freetv-zz-movies.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_zz_movies.m3u8'
842 | wget -c -P "$mydir" -O "$mydir"/freetv-zz-news-ar.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_zz_news_ar.m3u8'
843 | wget -c -P "$mydir" -O "$mydir"/freetv-zz-news-en.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_zz_news_en.m3u8'
844 | wget -c -P "$mydir" -O "$mydir"/freetv-zz-news-es.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_zz_news_es.m3u8'
845 | wget -c -P "$mydir" -O "$mydir"/freetv-zz-vod-it.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlists/playlist_zz_vod_it.m3u8'
846 | }
847 | # }}}
848 | # {{{ main m3u only
849 | refresh_main() {
850 | wget -c -P "$mydir" -O "$mydir"/iptvorg-main-safe-only-all.m3u 'https://iptv-org.github.io/iptv/index.m3u'
851 | wget -c -P "$mydir" -O "$mydir"/freetuxtv-all.m3u 'https://database.freetuxtv.net/WebStreamExport/index?format=m3u&type=1&status=2&isp=all'
852 | wget -c -P "$mydir" -O "$mydir"/freetv-all.m3u 'https://raw.githubusercontent.com/Free-TV/IPTV/master/playlist.m3u8'
853 | }
854 | # }}}
855 |
856 | convert2csv() {
857 | cd "$mydir" || exit
858 | echo "Please wait... converting m3u to csv"
859 | for file in *.m3u;
860 | do
861 | m3u2csv "$file" "${file%.*}.csv"
862 | done
863 | }
864 |
865 | export FZF_DEFAULT_OPTS="-e -i --info=default --layout=reverse --scroll-off=5 --tiebreak=index --bind 'home:first,end:last,tab:down,shift-tab:up,ctrl-k:preview-page-up,ctrl-j:preview-page-down,ctrl-y:preview-up,ctrl-e:preview-down,ctrl-/:change-preview-window(hidden|)'"
866 |
867 | mylist() {
868 | cat <>> pick a list: " --preview 'cat {}' \
910 | )"
911 | [ -z "$selected" ] && exit
912 | name=$(basename "$selected" | cut -d. -f1)
913 | # setsid detach mpv, set channel title, always on top, bottom right corner
914 | # shellcheck disable=SC2016
915 | awk -F'\t' '/http/ && !/EXTVLCOPT/ {print $1 "☺️#" $2 "☺️#" $NF}' "$selected" | column -t -s '☺️' \
916 | | fzf -d '#' --with-nth ..2 --no-clear --prompt="ipwebtv ($name) >>> pick a channel: " \
917 | --bind 'home:first,end:last,tab:down,shift-tab:up,enter:execute(setsid mpv \
918 | --title="$(echo {} | cut -d\# -f1 | xargs)" --ontop --no-border --no-focus-on-open --force-window \
919 | --autofit=500x280 --geometry=-15-110 "$(echo {} | cut -d\# -f3-)" >/dev/null 2>&1 & disown ; sleep 0.2 \
920 | )'
921 | ;;
922 | esac
923 |
924 |
--------------------------------------------------------------------------------
/_locate,--.search.local.files.and.open:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: fzf locate files in /home or /media folder only
5 | # depend: fzf mlocate xdg-utils util-linux
6 | # reqd: # update system database
7 | # sudo updatedb
8 | #
9 | # # optional: include external hdd or other mounted partition to be in the database
10 | # 1. sudo vim /etc/updatedb.conf
11 | # 2. Remove /media from PRUNEPATHS
12 | # 3. sudo updatedb
13 |
14 | export FZF_DEFAULT_OPTS="-e -i --info=inline --layout=reverse --scroll-off=5 --tiebreak=index --bind 'home:first,end:last' --header 'only searching /home and /media'"
15 | locate -ir '\(^/home\|^/media\)/.*' \
16 | | fzf -m --prompt="locate >>> select file(s) to open: " \
17 | | while read -r line ; do setsid xdg-open "$line" ; done
18 |
--------------------------------------------------------------------------------
/_notekami,--.notes.cheatsheet.snippets.manager:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: simple cheatsheet, snippet, scratchpaper and note taking manager on the terminal
5 | # depend: fzf coreutils less bat util-linux findutils glib2 renameutils
6 | # awk sed grep xsel (or xclip,wl-copy,pbcopy,clip,termux,clipboard,tmux)
7 | # demo: https://youtu.be/qwpK4rqAZwA
8 |
9 | # shellcheck disable=SC2016,SC2027,SC2086
10 |
11 | myinfo() {
12 | cat << _EOF_
13 | **** notekami ****
14 | *****************
15 | simple cheatsheet, snippet, scratchpaper
16 | and note taking manager on the terminal
17 |
18 | [snippet structure]
19 |
20 |
21 | ####; description of what this command does
22 | ###; your comment
23 | ##; more comment
24 | ##; another comment
25 | {block of code here}
26 |
27 |
28 | [snippet issues]
29 |
30 | avoid using werid symbols in description e.g \,),(,[,], ..etc
31 | all ##; ###; & ####; comments/description line will not be copy to clipboard
32 |
33 | [snippet examples]
34 |
35 | ####; find all directories recursively in current folder
36 | find . -type d
37 |
38 |
39 | ####; bash check if a file exists
40 | if [[ -f /etc/resolv.conf ]]; then
41 | echo "/etc/resolv.conf exist"
42 | fi
43 |
44 |
45 | ####; cut string length from left side
46 | ###; echo "Hello World" | cut -c -4
47 | ##; Hello World --> Hell
48 | cut -c -4
49 |
50 | [hotkey]
51 |
52 | global:
53 | Esc:quit
54 | Enter:select/open
55 | Home:first
56 | End:last
57 | C-k:preview-page-up
58 | C-j:preview-page-down
59 |
60 | edit:
61 | Tab:select multiple files (tmux only)
62 | C-v:rename (imv)
63 | C-r:reload
64 | Shift-delete:trash (gio trash)
65 | C-n/p:navigate down/up
66 |
67 | snippet:
68 | C-o:edit-line
69 | C-f:edit-file
70 | C-r:reload
71 | C-n/p|tab/shift-tab:navigate down/up
72 |
73 | info:
74 | q:quit
75 |
76 | [author]
77 |
78 | gotbletu (@youtube|github|odysee)
79 | https://www.youtube.com/user/gotbletu
80 | _EOF_
81 | }
82 |
83 | mylist() {
84 | cat <> "$myfile"
112 | printf "%s\n\n" "#### $timestamp" >> "$myfile"
113 | "${EDITOR:-nano}" +999999 "$myfile"
114 | ;;
115 | search)
116 | selected=$(grep -rnv '^[[:space:]]*$' "$mydir"/* 2>/dev/null \
117 | | fzf -d / --with-nth 6.. --prompt="notekami >>> search: ")
118 | [ -z "$selected" ] && exit
119 | file_name=$(echo "$selected" | cut -d ':' -f1)
120 | file_num=$(echo "$selected" | cut -d ':' -f2)
121 | if [[ "$TERM_PROGRAM" = tmux ]]; then
122 | tmux new-window -n "search-notes" "${EDITOR:-nano} +$file_num $file_name"
123 | else
124 | "${EDITOR:-nano}" +"$file_num" "$file_name"
125 | fi
126 | ;;
127 | create)
128 | selected=$(echo | fzf --print-query \
129 | --prompt="notekami ($selected) >>> enter new name (no spaces): " \
130 | --header 'type in foo.md or newdir/subdir/bar.md; C-j/k:preview-pagedown/up' \
131 | --preview-window 'down' --preview "find $mydir/ -type d | cut -d '/' -f6- | sed -e '/^[[:blank:]]*$/d' | sort"
132 | )
133 | [ -z "$selected" ] && exit
134 | mkdir -p "$(dirname "$mydir/$selected")"
135 | if [ "$TERM_PROGRAM" = tmux ]; then
136 | tmux new-window -n "create-cheatsheet" "${EDITOR:-nano} $mydir/$selected"
137 | else
138 | "${EDITOR:-nano}" "$mydir"/"$selected"
139 | fi
140 | ;;
141 | copy)
142 | selected="$(find "$mydir"/ -type f | sort | fzf -d / --with-nth -2.. \
143 | --preview 'bat --color=always -pp {}' \
144 | --prompt="notekami ($selected) >>> copy to clipboard: ")"
145 | [ -z "$selected" ] && exit
146 | # copy file to clipboard
147 | printf %s "$(cat -- "$selected")" | xsel -b 2>/dev/null || printf %s "$(cat -- "$selected")" | xclip -selection clipboard -r 2>/dev/null
148 | printf %s "$(cat -- "$selected")" | wl-copy 2>/dev/null
149 | printf %s "$(cat -- "$selected")" | clip 2>/dev/null
150 | (printf %s "$(cat -- "$selected")" > /dev/clipboard) 2>/dev/null
151 | printf %s "$(cat -- "$selected")" | pbcopy 2>/dev/null
152 | printf %s "$(cat -- "$selected")" | termux-clipboard-set 2>/dev/null
153 | (printf %s "$(cat -- "$selected")" | tmux load-buffer -) 2>/dev/null
154 | ;;
155 | info)
156 | myinfo | less -C
157 | ;;
158 | edit)
159 | if [ "$TERM_PROGRAM" = tmux ]; then
160 | selected="$(find "$mydir"/ -type f | sort | fzf -m -d / --with-nth -2.. \
161 | --bind "shift-delete:execute:gio trash --force {} >/dev/tty" \
162 | --bind "ctrl-v:execute:imv {} >/dev/tty" \
163 | --bind "ctrl-r:reload:cd $mydir && find "$mydir"/ -type f | sort" \
164 | --header 'C-v:rename C-r:reload S-del:trash C-n/p:down/up C-j/k:preview-pagedown/up' \
165 | --preview 'bat --color=always -pp {}' \
166 | --prompt="notekami >>> edit(s): ")"
167 | [ -z "$selected" ] && exit
168 | echo "$selected" | while read -r line; do
169 | filename="$(basename "$line")"
170 | tmux new-window -n "${filename}-pill" "${EDITOR:-nano} $line"
171 | done
172 | else
173 | selected="$(find "$mydir"/ -type f | sort | fzf -d / --with-nth -2.. \
174 | --preview 'bat --color=always -pp {}' \
175 | --prompt="notekami >>> edit: ")"
176 | [ -z "$selected" ] && exit
177 | "${EDITOR:-nano}" "$selected"
178 | fi
179 | ;;
180 | snippet)
181 | selected=$(grep -nrH '^####; ' "$mycheatdir"/* | fzf -d ' ' --with-nth 2.. \
182 | --prompt="notekami ($selected) >>> copy to clipboard: " \
183 | --bind 'ctrl-f:execute:${EDITOR:-nano} $(echo {} | cut -d: -f1) >/dev/tty' \
184 | --bind 'ctrl-o:execute:${EDITOR:-nano} +$(echo {} | cut -d: -f2) $(echo {} | cut -d: -f1) >/dev/tty' \
185 | --bind "ctrl-r:reload:grep -nrH '^####; ' "$mycheatdir"/* " \
186 | --bind 'home:first,end:last,tab:down,shift-tab:up' \
187 | --header 'C-o:edit-line C-r:reload C-n/p:down/up C-j/k:preview-pagedown/up' \
188 | --preview-window 'down' \
189 | --preview 'awk '/'"$(echo {} | cut -d " " -f2-)"\\n'/' RS="\n\n\n" "$(echo {} | cut -d: -f1)" | \
190 | bat --color=always -pp -l "$(echo {} | cut -d: -f1 | rev | cut -d. -f1 | rev)"'
191 | )
192 | [ -z "$selected" ] && exit
193 | file_name="$(echo "$selected" | cut -d: -f1)"
194 | snippet_title="$(echo "$selected" | cut -d " " -f2-)"
195 | selected=$(awk '/'"$snippet_title"'/' RS="\n\n\n" "$file_name" | sed -e '/^####;/d' -e '/^###;/d' -e '/^##;/d' )
196 | ## copy to clipboard
197 | ## X11=xsel/xclip; wayland=wl-copy; winos(vista+)=clip; cygwin=/dev/clipboard; macos=pbcopy; android=termux
198 | printf %s "$selected" | xsel -b 2>/dev/null || printf %s "$selected" | xclip -selection clipboard -r 2>/dev/null
199 | printf %s "$selected" | wl-copy 2>/dev/null
200 | printf %s "$selected" | clip 2>/dev/null
201 | (printf %s "$selected" > /dev/clipboard) 2>/dev/null
202 | printf %s "$selected" | pbcopy 2>/dev/null
203 | printf %s "$selected" | termux-clipboard-set 2>/dev/null
204 | (printf %s "$selected" | tmux load-buffer -) 2>/dev/null
205 | ;;
206 | esac
207 | }
208 |
209 |
210 | helpmsg() {
211 | cat <
219 |
220 | options:
221 | No argument then start fzf TUI
222 | -a, --auto Auto append input to scratch paper from CLI
223 | -A, --audit Open scratch paper in text editor
224 | -e, --edit Edit or create new file (start fzf if no arg)
225 | -l, --list List all file
226 | -d, --dir List all directory
227 | -p, --print Print file content on screen (start fzf if no arg)
228 | -s, --search Search all file for a single keyword (start fzf if no arg)
229 | -t, --snippet Copy snippet to clipboard and print to screen
230 | -i, --info How to write snippet and list of hotkeys
231 | -h, --help Show this help page
232 |
233 | example:
234 | ${0##*/}
235 | ${0##*/} 7z.sh
236 | ${0##*/} shellcmd/awk.sh
237 | ${0##*/} -p
238 | ${0##*/} -p foo.md
239 | ${0##*/} -p cheatsheet/shellcmd/awk.sh
240 | ${0##*/} -e
241 | ${0##*/} -e cheatsheet/shellcmd/awk.sh
242 | ${0##*/} -e newfile.sh
243 | ${0##*/} -e newdir/newfile.sh
244 | ${0##*/} -a append this msg to my scratch paper
245 | ${0##*/} -s
246 | ${0##*/} -s keyword
247 |
248 | savepath: created files are saved to ~/.config/notekami
249 | EOF
250 | }
251 |
252 | if [ "$1" = -h ] || [ "$1" = --help ]; then
253 | helpmsg
254 | exit 0
255 | elif [ -z "$1" ]; then
256 | mytui
257 | elif [ "$1" = -A ] || [ "$1" = --audit ]; then
258 | mkdir -p "$(dirname "$myfile")"
259 | [ -z "$(tail -n 1 "$myfile")" ] || printf "\n" >> "$myfile"
260 | printf "%s\n\n" "#### $timestamp" >> "$myfile"
261 | "${EDITOR:-nano}" +999999 "$myfile"
262 | elif [ "$1" = -a ] || [ "$1" = --auto ]; then
263 | [ -z "$2" ] && echo 'type in a note entry' && exit
264 | mkdir -p "$(dirname "$myfile")"
265 | shift
266 | input="$*"
267 | [ -z "$(tail -n 1 "$myfile" 2>/dev/null)" ] || printf "\n" >> "$myfile"
268 | printf "%s\n" "#### $timestamp" >> "$myfile"
269 | printf "%s\n" "$input" >> "$myfile"
270 | elif [ "$1" = -d ] || [ "$1" = --dir ]; then
271 | cd "$mydir" || exit
272 | find . -type d -printf "%P\n" | sort
273 | elif [ "$1" = -l ] || [ "$1" = --list ]; then
274 | cd "$mydir" || exit
275 | find . -type f -printf "%P\n" | sort
276 | elif [ "$1" = -e ] || [ "$1" = --edit ]; then
277 | if [ -z "$2" ]; then
278 | cd "$mydir" || exit
279 | selected="$(fzf -e -i --prompt="notekami >>> edit: " --preview 'bat --color=always -pp {}' --info=hidden --layout=reverse --scroll-off=5 --tiebreak=index --bind 'home:first,end:last,ctrl-k:preview-page-up,ctrl-j:preview-page-down,ctrl-y:preview-up,ctrl-e:preview-down,ctrl-/:change-preview-window(hidden|)')"
280 | [ -z "$selected" ] && exit
281 | "${EDITOR:-nano}" "$selected"
282 | elif [ -f "$mydir/$2" ]; then
283 | "${EDITOR:-nano}" "$mydir/$2"
284 | elif [ -d "$(dirname "$mydir/$2")" ]; then
285 | "${EDITOR:-nano}" "$mydir/$2"
286 | elif [ ! -d "$(dirname "$mydir/$2")" ]; then
287 | echo "create directory [y/n]? "
288 | read -r anwser
289 | printf '\n'
290 | if [[ $anwser =~ ^[Yy]$ ]]; then
291 | mkdir -p "$(dirname "$mydir/$2")"
292 | "${EDITOR:-nano}" "$mydir"/"$2"
293 | fi
294 | fi
295 | elif [ "$1" = -s ] || [ "$1" = --search ]; then
296 | if [ -z "$2" ]; then
297 | selected=$(grep -rnv '^[[:space:]]*$' "$mydir"/* 2>/dev/null \
298 | | fzf -d / --with-nth 6.. --prompt="notekami >>> search: ")
299 | [ -z "$selected" ] && exit
300 | file_name=$(echo "$selected" | cut -d ':' -f1)
301 | file_num=$(echo "$selected" | cut -d ':' -f2)
302 | if [[ "$TERM_PROGRAM" = tmux ]]; then
303 | tmux new-window -n "search-notes" "${EDITOR:-nano} +$file_num $file_name"
304 | else
305 | "${EDITOR:-nano}" +"$file_num" "$file_name"
306 | fi
307 | else
308 | cd "$mydir" || exit
309 | shift
310 | input="$*"
311 | grep --color=auto -rnH "$input" -- * 2>/dev/null
312 | fi
313 | elif [ "$1" = -i ] || [ "$1" = --info ]; then
314 | myinfo
315 | elif [ "$1" = -t ] || [ "$1" = --snippet ]; then
316 | selected=$(grep -nrH '^####; ' "$mycheatdir"/* | fzf -d ' ' --with-nth 2.. \
317 | --prompt="notekami ($selected) >>> copy to clipboard: " \
318 | --bind 'ctrl-f:execute:${EDITOR:-nano} $(echo {} | cut -d: -f1) >/dev/tty' \
319 | --bind 'ctrl-o:execute:${EDITOR:-nano} +$(echo {} | cut -d: -f2) $(echo {} | cut -d: -f1) >/dev/tty' \
320 | --bind 'home:first,end:last,tab:down,shift-tab:up' \
321 | --header 'C-o:edit-line C-f:edit-file C-j/k/n/p|tab/shift-tab:navigate' \
322 | --preview-window 'down' \
323 | --preview 'awk '/'"$(echo {} | cut -d " " -f2-)"'/' RS=$"\n\n\n" "$(echo {} | cut -d: -f1)" | \
324 | bat --color=always -pp -l "$(echo {} | cut -d: -f1 | rev | cut -d. -f1 | rev)"'
325 | )
326 | [ -z "$selected" ] && exit
327 | file_name="$(echo "$selected" | cut -d: -f1)"
328 | file_ext="$(echo "$selected" | cut -d: -f1 | rev | cut -d. -f1 | rev)"
329 | snippet_title="$(echo "$selected" | cut -d " " -f2-)"
330 | selected_unfilter=$(awk '/'"$snippet_title"'/' RS="\n\n\n" "$file_name")
331 | selected=$(awk '/'"$snippet_title"'/' RS="\n\n\n" "$file_name" | sed -e '/^####;/d' -e '/^###;/d' -e '/^##;/d' )
332 | echo "$selected_unfilter" | bat --color=always -pp -l "$file_ext"
333 |
334 | # copy to clipboard
335 | # X11=xsel/xclip; wayland=wl-copy; winos(vista+)=clip; cygwin=/dev/clipboard; macos=pbcopy; android=termux
336 | printf %s "$selected" | xsel -b 2>/dev/null || printf %s "$selected" | xclip -selection clipboard -r 2>/dev/null
337 | printf %s "$selected" | wl-copy 2>/dev/null
338 | printf %s "$selected" | clip 2>/dev/null
339 | (printf %s "$selected" > /dev/clipboard) 2>/dev/null
340 | printf %s "$selected" | pbcopy 2>/dev/null
341 | printf %s "$selected" | termux-clipboard-set 2>/dev/null
342 | (printf %s "$selected" | tmux load-buffer -) 2>/dev/null
343 | elif [ "$1" = -p ] || [ "$1" = --print ]; then
344 | if [ -z "$2" ]; then
345 | selected="$(find "$mydir"/ -type f | sort | fzf -d / --with-nth -2.. \
346 | --preview 'bat --color=always -pp {}' \
347 | --prompt="notekami >>> print: ")"
348 | [ -z "$selected" ] && exit
349 | bat "$selected" --color=always -pp
350 | # elif [ -f "$mydir/$2" ]; then
351 | else
352 | [ -f "$mydir/$2" ] && bat --color=always -pp "$mydir/$2" || echo 'file does not exist'
353 | fi
354 | else
355 | if command -v bat >/dev/null; then
356 | [ -f "$mydir/$1" ] && bat --color=always -pp "$mydir/$1" || echo 'file does not exist'
357 | else
358 | [ -f "$mydir/$1" ] && cat "$mydir/$1" || echo 'file does not exist'
359 | fi
360 | fi
361 |
362 |
--------------------------------------------------------------------------------
/_playerctl,--.mpris.players.media.control:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: control any supported mpris players like mpv, cmus, firefox, chromium
5 | # depend: fzf coreutils playerctl
6 |
7 | mylist() {
8 | cat <>> select a player: ")"
27 | [ -z "$selected" ] && exit
28 | choice="$(mylist | fzf --prompt="playerctl ($selected) >>> select option: ")"
29 | [ -z "$choice" ] && exit
30 | playerctl --player="$selected" "$choice"
31 |
--------------------------------------------------------------------------------
/_pulseaudio,--.volume.control:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: control pulseaudio volume
5 | # depend: fzf coreutils libpulse
6 |
7 | mylist() {
8 | cat < "$myfile"
28 | [Classical] |Zeno| Mozart,https://zeno.fm/radio/mozart/
29 | [Classical] |Zeno| Beethoven,https://zeno.fm/radio/beethoven/
30 | [Pop] |Zeno| Hits 80s 90s Radio,https://zeno.fm/radio/hits80s90s/
31 | [Pop] |Zeno| 90s Hits Circuito Dance,https://zeno.fm/radio/90s_HITS/
32 | {FM 094.7} [Urban Adult Contemporary] (English) The Wave 94.7 FM,https://live.amperwave.net/manifest/audacy-ktwvfmaac-hlsc.m3u8
33 | {FM 102.7} [Top 40 Contemporary] (English) 102.7 KIIS FM,https://ample.revma.ihrhls.com/zc185/34_nbf03dzxgz6e02/playlist.m3u8
34 | {FM 105.9} [HipHop] (English) Power 106,https://18703.live.streamtheworld.com/KPWRAAC.aac
35 | Alternative (BAGeL Radio),https://ais-sa3.cdnstream1.com/2606_128.aac
36 | American Roots (Boot Liquor - SomaFM),http://somafm.com/bootliquor.pls
37 | Celtic (ThistleRadio - SomaFM),http://somafm.com/thistle.pls
38 | Chillout (Groove Salad - SomaFM),http://somafm.com/startstream=groovesalad.pls
39 | Groove Salad Classic (Early 2000s Ambient),https://somafm.com/gsclassic.pls
40 | n5MD Radio (Ambient and Experimental),https://somafm.com/n5md.pls
41 | Vaporwaves [SomaFM],https://somafm.com/vaporwaves.pls
42 | EOF
43 | }
44 |
45 | # use pyradio csv if exist
46 | if [ -f "$HOME/.config/pyradio/stations.csv" ]; then
47 | myfile="$HOME/.config/pyradio/stations.csv"
48 | elif [ -f "$HOME/.config/radiomhysa/stations.csv" ]; then
49 | myfile="$HOME/.config/radiomhysa/stations.csv"
50 | else
51 | myfile="$HOME/.config/radiomhysa/stations.csv"
52 | if [ ! -f "$myfile" ]; then
53 | mkdir -p "$(dirname "$myfile")"
54 | generate_example
55 | fi
56 | fi
57 |
58 | export FZF_DEFAULT_OPTS="-e -i --info=hidden --layout=reverse --scroll-off=5 --tiebreak=index --bind 'home:first,end:last,tab:down,shift-tab:up'"
59 |
60 | mytui() {
61 | selected="$( grep -nH , "$myfile" | sed -e 's/:/,/' -e 's/:/,/' | \
62 | fzf -d , --with-nth -2 \
63 | --prompt="radiomhysa: " \
64 | --bind "ctrl-o:execute:${EDITOR:-nano} +{2} {1} >/dev/tty" \
65 | --bind "ctrl-f:execute:${EDITOR:-nano} {1} >/dev/tty" \
66 | --bind 'ctrl-x:execute:playerctl --player=mpv stop >/dev/null 2>&1' \
67 | --bind "ctrl-r:reload:grep -nH , $myfile | sed -e 's/:/,/' -e 's/:/,/'" \
68 | --header 'C-x:stop C-o:edit-line C-f:edit-file C-r:reload C-j/k/n/p|tab/shift-tab:navigate'
69 | )"
70 | [ -z "$selected" ] && exit
71 | selected="$(echo "$selected" | cut -d ',' -f4)"
72 | playerctl --player=mpv stop >/dev/null 2>&1
73 | setsid mpv --no-video "$selected" >/dev/null 2>&1 & disown
74 | sleep 0.2
75 | }
76 |
77 | helpmsg() {
78 | cat <
84 |
85 | options:
86 | No argument then start fzf TUI
87 | -l, --list List all stream
88 | -e, --edit Edit radio list
89 | -s, --search Search keyword
90 | -h, --help Show help page
91 |
92 | example:
93 | ${0##*/}
94 | ${0##*/} -s keyword
95 |
96 | EOF
97 | }
98 |
99 | if [ "$1" = -h ] || [ "$1" = --help ]; then
100 | helpmsg
101 | exit 0
102 | elif [ -z "$1" ]; then
103 | mytui
104 | elif [ "$1" = -l ] || [ "$1" = --list ]; then
105 | cat "$myfile"
106 | elif [ "$1" = -e ] || [ "$1" = --edit ]; then
107 | "$EDITOR" "$myfile"
108 | elif [ "$1" = -s ] || [ "$1" = --search ]; then
109 | grep --color=auto -in "$2" -- "$myfile" 2>/dev/null
110 | else
111 | helpmsg
112 | exit 1
113 | fi
114 |
--------------------------------------------------------------------------------
/_reverbeats,--.loop.ambient.sound:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: play and loop ambient background noise sound files
5 | # demo: https://youtu.be/eANLqIhOgWw
6 | # depend: fzf coreutils util-linux playerctl mpv mpv-mpris findutils
7 | # reff: https://downloads.khinsider.com/game-soundtracks/album/x-men-vs.-street-fighter-1996
8 | # https://www.chosic.com/free-music/sound-effects/
9 | # https://www.storyblocks.com/audio/search/jingle-bells
10 | # https://pixabay.com/music/search/lofi/
11 | # https://pixabay.com/sound-effects/
12 |
13 | export FZF_DEFAULT_OPTS="-e -i --info=hidden --layout=reverse --scroll-off=5 --tiebreak=index --bind 'home:first,end:last,tab:down,shift-tab:up'"
14 |
15 | mydir="$HOME/.config/reverbeats"
16 | [ ! -d "$mydir" ] && mkdir -p "$mydir"
17 |
18 | selected="$(
19 | find "$mydir" -type f | sort | \
20 | fzf -d / --with-nth -2.. --prompt="reverbeats: " \
21 | --bind 'ctrl-x:execute:playerctl --player=mpv stop >/dev/null 2>&1' \
22 | --bind "ctrl-r:execute:playerctl --player=mpv stop >/dev/null 2>&1 ; cd $mydir && setsid mpv --no-video --loop \
23 | \"\$(find . -type f | shuf -n 1)\" >/dev/null 2>&1 & disown >/dev/tty" \
24 | --header 'C-x:stop C-r:random C-j/k/n/p|tab/shift-tab:navigate'
25 | )"
26 | [ -z "$selected" ] && exit
27 | playerctl --player=mpv stop >/dev/null 2>&1
28 | setsid mpv --no-video --loop "$selected" >/dev/null 2>&1 & disown
29 | sleep 0.2
30 |
--------------------------------------------------------------------------------
/_variety,--.wallpaper.changer:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: variety wallpaper changer with fzf
5 | # depend: fzf variety coreutils util-linux findutils chafa
6 |
7 | export FZF_DEFAULT_OPTS="-e -i --info=hidden --layout=reverse --scroll-off=5 --tiebreak=index \
8 | --bind 'ctrl-x:execute:variety --pause 2>/dev/null >/dev/tty' \
9 | --bind 'ctrl-r:execute:variety --resume 2>/dev/null >/dev/tty' \
10 | --bind 'alt-n:execute:variety --next 2>/dev/null >/dev/tty' \
11 | --bind 'alt-p:execute:variety --previous 2>/dev/null >/dev/tty' \
12 | --bind 'alt-f:execute:variety --favorite 2>/dev/null >/dev/tty' \
13 | --bind 'shift-delete:execute:variety --trash 2>/dev/null >/dev/tty' \
14 | --bind 'shift-delete:execute:variety --trash 2>/dev/null >/dev/tty' \
15 | --bind 'home:first,end:last,tab:down,shift-tab:up' \
16 | --header 'C-x:pause C-r:resume A-n:next A-p:prev A-f:favorite S-Delete:trash C-j/k/n/p:navigate'
17 | "
18 |
19 | mylist() {
20 | cat </dev/null
35 | ;;
36 | previous)
37 | variety --previous 2>/dev/null
38 | ;;
39 | trash)
40 | variety --trash 2>/dev/null
41 | ;;
42 | pause)
43 | variety --pause 2>/dev/null
44 | ;;
45 | resume)
46 | variety --resume 2>/dev/null
47 | ;;
48 | favorite)
49 | variety --favorite 2>/dev/null
50 | ;;
51 | set)
52 | selected=$( (find ~/Pictures/Wallpapers -type f ; find ~/.config/variety/Favorites/ -type f) | \
53 | fzf -d / --with-nth -2.. --prompt="variety: " --preview-window=right,70% --preview='chafa {}' )
54 | [ -z "$selected" ] && exit
55 | variety --set="$selected" 2>/dev/null
56 | ;;
57 | esac
58 |
59 |
--------------------------------------------------------------------------------
/_window-switcher,--.jump.to.a.running.window:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: fzf switch to another active window
5 | # depend: fzf awk wmctrl coreutils
6 |
7 | export FZF_DEFAULT_OPTS="-e -i --info=hidden --layout=reverse --scroll-off=5 --tiebreak=index --bind 'home:first,end:last,tab:down,shift-tab:up'"
8 | wmctrl -i -a "$(wmctrl -l | awk '! /fzf-nova/ && $2 != "-1" {print $0}' | fzf -d ' ' --with-nth 5.. --prompt="window switcher: " | cut -d' ' -f1)"
9 |
--------------------------------------------------------------------------------
/_zinger,--.copy.meme.quotes.to.clipboard:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: copy quotes/memes to clipboard via fzf
5 | # demo: https://youtu.be/YGsq4ogwmBk
6 | # depend: fzf grep sed coreutils
7 | # xsel (or xclip,wl-copy,tmux,clip,clipboard,pbcopy,termux-clipboard-set)
8 | # nano (or vim,vi,nvim,micro,kak,helix,mcedit,emacs ...etc)
9 |
10 | myfile="$HOME/.config/zinger/zingers.txt"
11 |
12 | generate_example() {
13 | cat < "$myfile"
14 | If Senzo Tanaka Is His Shidoshi, Then Show Us The Dim Mak ;; Movie Hollywood Bloodsport Black Dragon boys
15 | Rule Of Acquisition #1 Once You Have Their Money, You Never Give It Back. ;; TVShow Star Trek Deep Space Nine DS9 Ferengi
16 | Only Someone With The Sharingan And Kekkei Genkai Can Defeat Me ;; Anime Naruto Ninja Itachi Uchiha Vs Kakashi Hatake
17 | https://i.imgur.com/CGQJxHi.jpg ;; adblocker thug complains website goes down image meme ad revenue
18 | https://www.cnn.com/2013/05/22/tech/web/pronounce-gif/index.html ;; Animated Gif jif image pronounced pronunciation english dictionary word creator oxford
19 | This Is Your Last Chance. After This, There Is No Turning Back. ;; Movie Hollywood The Matrix Neo Morpheus
20 | EOF
21 | }
22 |
23 | if [ ! -f "$myfile" ]; then
24 | mkdir -p "$(dirname "$myfile")"
25 | generate_example
26 | fi
27 |
28 | export FZF_DEFAULT_OPTS="-e -i --info=hidden --layout=reverse --scroll-off=5 --tiebreak=index"
29 | selected="$(grep -nvH '^[[:space:]]*$' "$myfile" \
30 | | fzf --prompt "zinger: " --delimiter ':' --with-nth 3.. \
31 | --bind "ctrl-r:reload:grep -nvH '^[[:space:]]*$' $myfile" \
32 | --bind "ctrl-o:execute:${EDITOR:-nano} +{2} {1} >/dev/tty" \
33 | --bind "ctrl-f:execute:${EDITOR:-nano} {1} >/dev/tty" \
34 | --bind 'home:first,end:last,tab:down,shift-tab:up' \
35 | --header 'C-o:edit-line C-f:edit-file C-r:reload C-j/k/n/p|tab/shift-tab:navigate' \
36 | )"
37 | [ -z "$selected" ] && exit
38 | selected="$(echo "$selected" | cut -d ':' -f3-| sed -e s/\;\;\.\*\$// | sed 's/^[ \t]*//;s/[ \t]*$//')"
39 | printf %s "$selected" | xsel -b 2>/dev/null || printf %s "$selected" | xclip -selection clipboard -r 2>/dev/null
40 | printf %s "$selected" | wl-copy 2>/dev/null
41 | printf %s "$selected" | clip 2>/dev/null
42 | (printf %s "$selected" > /dev/clipboard) 2>/dev/null
43 | printf %s "$selected" | pbcopy 2>/dev/null
44 | printf %s "$selected" | termux-clipboard-set 2>/dev/null
45 | (printf %s "$selected" | tmux load-buffer -) 2>/dev/null
46 |
--------------------------------------------------------------------------------
/fzf-nova:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # author: gotbletu (@youtube|github|odysee)
3 | # https://www.youtube.com/user/gotbletu
4 | # desc: terminal emulator + fzf to launch scripts, a replacement for dmenu or rofi
5 | # demo: https://youtu.be/8SqakfCSzQk
6 | # depend: fzf findutils coreutils util-linux
7 | # reff: xterm config https://www.youtube.com/watch?v=mAUQsNUnk9I
8 | # note: to add your own, just drop in a script in the same folder as fzf-nova.
9 | # name it e.g: _myamazingscript,--.a.cool.description
10 |
11 | #### source shellrc to get $PATH and $EDITOR variable
12 | #### if fzf-nova is already in your $PATH then you dont have to put point /path/to/...etc.
13 | #### pick a terminal command to bind to a hotkey (e.g super+space):
14 |
15 | ## if fzf-nova is NOT in your $PATH then include the script location
16 | # xterm -T fzf-nova -geometry 120x20+300+300 -fs 14 -e bash -c "source ~/.bashrc &>/dev/null && /path/to/fzf-nova"
17 | # xfce4-terminal --title fzf-nova --geometry 120x20+350+300 --font 14 --execute bash -c "source ~/.bashrc &>/dev/null && /path/to/fzf-nova"
18 | # alacritty -T fzf-nova -o "window.dimensions.columns=90" "window.dimensions.lines=20" "window.position.x=350" "window.position.y=200" -e bash -c "source ~/.bashrc &>/dev/null && /path/to/fzf-nova"
19 |
20 | ## if fzf-nova is already in your bash $PATH
21 | # xterm -T fzf-nova -geometry 120x20+300+300 -fs 14 -e bash -c "source ~/.bashrc &>/dev/null && fzf-nova"
22 | # xfce4-terminal --title fzf-nova --geometry 120x20+350+300 --font 14 --execute bash -c "source ~/.bashrc &>/dev/null && fzf-nova"
23 | # alacritty -T fzf-nova -o "window.dimensions.columns=90" "window.dimensions.lines=20" "window.position.x=350" "window.position.y=200" -e bash -c "source ~/.bashrc &>/dev/null && fzf-nova"
24 |
25 | ## for TMUX users (prefix + TAB to activate popup)
26 | # bind-key Tab capture-pane \; save-buffer /tmp/tmux-buffer \; delete-buffer \; display-popup -w 80% -h 60% -E "fzf-nova"
27 | # or
28 | # bind-key Tab capture-pane \; save-buffer /tmp/tmux-buffer \; delete-buffer \; display-popup -w 80% -h 60% -E "/path/to/fzf-nova"
29 |
30 | export FZF_DEFAULT_OPTS="-e -i -d '_' --with-nth 2.. --info=hidden --layout=reverse --scroll-off=5 --tiebreak=index --bind 'home:first,end:last,tab:down,shift-tab:up'"
31 | mydir="${0%/*}"
32 | selected="$(
33 | find "$mydir" -type f -name '_*' -exec basename {} \; \
34 | | sort | sed 's@\.@ @g' | column -t -s ',' \
35 | | fzf --prompt='fzf-nova: ' | cut -d ' ' -f1
36 | )"
37 | [ -z "$selected" ] && exit
38 | eval "${mydir}/${selected},*"
39 |
--------------------------------------------------------------------------------