├── LICENSE ├── README.md ├── dreamos-plugin-systemplugins-hrtunerproxy.bb ├── enigma2-plugin-systemplugins-hrtunerproxy.bb ├── plugin ├── __init__.py ├── about.py ├── getDeviceInfo.py ├── getLineup.py ├── getLineupStatus.py ├── locale │ ├── HRTunerProxy.pot │ ├── ar │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── bg │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── ca │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── cs │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── da │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── de │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── el │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── en │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── en_GB │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── es │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── et │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── fa │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── fi │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── fr │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── fy │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── he │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── hr │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── hu │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── is │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── it │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── lt │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── lv │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── nb │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── nl │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── no │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── pl │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── pt │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── pt_BR │ │ └── LC_MESSAGES │ │ │ └── HRTunerProxy.po │ ├── ro │ │ └── LC_MESSAGES │ │ │ └── PlexDVRAPI.po │ ├── ru │ │ └── LC_MESSAGES │ │ │ └── PlexDVRAPI.po │ ├── sk │ │ └── LC_MESSAGES │ │ │ └── PlexDVRAPI.po │ ├── sl │ │ └── LC_MESSAGES │ │ │ └── PlexDVRAPI.po │ ├── sr │ │ └── LC_MESSAGES │ │ │ └── PlexDVRAPI.po │ ├── sv │ │ └── LC_MESSAGES │ │ │ └── PlexDVRAPI.po │ ├── th │ │ └── LC_MESSAGES │ │ │ └── PlexDVRAPI.po │ ├── tr │ │ └── LC_MESSAGES │ │ │ └── PlexDVRAPI.po │ └── uk │ │ └── LC_MESSAGES │ │ └── PlexDVRAPI.po ├── plugin-hd.png ├── plugin.png ├── plugin.py ├── server.py ├── skins │ ├── about.xml │ ├── dreamos_about.xml │ ├── dreamos_main.xml │ └── main.xml └── ssdp.py ├── pygettext.py ├── setup.py └── setup_translate.py /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | {description} 294 | Copyright (C) {year} {fullname} 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | {signature of Ty Coon}, 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. 340 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HRTunerProxy 2 | Setup Enigma2 to act as HR Proxy Server. 3 | 4 | [![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=andyblac%40icloud%2ecom&lc=GB¤cy_code=GBP&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted) 5 | -------------------------------------------------------------------------------- /dreamos-plugin-systemplugins-hrtunerproxy.bb: -------------------------------------------------------------------------------- 1 | SUMMARY = "Setup Enigma2 to act as HR-Tuner Proxy" 2 | DESCRIPTION = "Setup Enigma2 to act as HR-Tuner Proxy" 3 | MAINTAINER = "OpenViX" 4 | LICENSE = "Proprietary" 5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=a23a74b3f4caf9616230789d94217acb" 6 | 7 | inherit allarch setuptools gitpkgv gettext distutils 8 | 9 | SRCREV = "${AUTOREV}" 10 | PV = "git${SRCPV}" 11 | PKGV = "${GITPKGVTAG}" 12 | PR = "r0" 13 | 14 | SRC_URI = "git://github.com/OpenViX/HRTunerProxy.git;protocol=git" 15 | 16 | S = "${WORKDIR}/git" 17 | 18 | RDEPENDS_${PN} = " \ 19 | python-argparse \ 20 | python-json \ 21 | " 22 | 23 | do_install_prepend() { 24 | echo ${GITPKGVTAG} | awk -F"-" '{print $1}'> build/lib/SystemPlugins/HRTunerProxy/PLUGIN_VERSION 25 | } 26 | 27 | python populate_packages_prepend() { 28 | e2_pdir = bb.data.expand('${libdir}/enigma2/python/Plugins', d) 29 | do_split_packages(d, e2_pdir, '^(\w+/\w+)/.*\.py$', 'enigma2-plugin-%s-src', '%s (source files)', recursive=True, match_path=True, prepend=True) 30 | do_split_packages(d, e2_pdir, '^(\w+/\w+)/.*\/.*\.po$', 'enigma2-plugin-%s-po', '%s (translations)', recursive=True, match_path=True, prepend=True) 31 | } 32 | -------------------------------------------------------------------------------- /enigma2-plugin-systemplugins-hrtunerproxy.bb: -------------------------------------------------------------------------------- 1 | SUMMARY = "Setup Enigma2 to act as HR-Tuner Proxy" 2 | DESCRIPTION = "Setup Enigma2 to act as HR-Tuner Proxy" 3 | MAINTAINER = "OpenViX" 4 | LICENSE = "Proprietary" 5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=a23a74b3f4caf9616230789d94217acb" 6 | 7 | inherit gitpkgv distutils-openplugins 8 | 9 | SRCREV = "${AUTOREV}" 10 | PV = "git${SRCPV}" 11 | PKGV = "${GITPKGVTAG}" 12 | PR = "r0" 13 | 14 | SRC_URI = "git://github.com/OpenViX/HRTunerProxy.git;protocol=git" 15 | 16 | S = "${WORKDIR}/git" 17 | 18 | RDEPENDS_${PN} = " \ 19 | python-argparse \ 20 | " 21 | 22 | do_install_prepend() { 23 | echo ${GITPKGVTAG} | awk -F"-" '{print $1}'> build/lib/SystemPlugins/HRTunerProxy/PLUGIN_VERSION 24 | } 25 | 26 | python populate_packages_prepend() { 27 | e2_pdir = bb.data.expand('${libdir}/enigma2/python/Plugins', d) 28 | do_split_packages(d, e2_pdir, '^(\w+/\w+)/.*\.py$', 'enigma2-plugin-%s-src', '%s (source files)', recursive=True, match_path=True, prepend=True) 29 | do_split_packages(d, e2_pdir, '^(\w+/\w+)/.*\/.*\.po$', 'enigma2-plugin-%s-po', '%s (translations)', recursive=True, match_path=True, prepend=True) 30 | } -------------------------------------------------------------------------------- /plugin/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import print_function 3 | from __future__ import absolute_import 4 | 5 | import gettext 6 | import socket 7 | import fcntl 8 | import struct 9 | import logging 10 | from os import path, remove, environ as os_environ 11 | 12 | from Components.config import config, ConfigSubsection, ConfigSubDict, ConfigSelection, ConfigSelectionNumber, ConfigNumber, ConfigEnableDisable, NoSave 13 | from Components.Language import language 14 | from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_LANGUAGE 15 | 16 | from .getLineup import getBouquetsList 17 | 18 | try: 19 | from enigma import eMediaDatabase 20 | isDreamOS = True 21 | except: 22 | isDreamOS = False 23 | 24 | import six 25 | 26 | if path.exists('/tmp/hrtunerproxy.log'): 27 | remove('/tmp/hrtunerproxy.log') 28 | logger = logging.getLogger('[HRTunerProxy]') 29 | hdlr = logging.FileHandler('/tmp/hrtunerproxy.log') 30 | formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') 31 | hdlr.setFormatter(formatter) 32 | logger.addHandler(hdlr) 33 | logger.setLevel(logging.DEBUG) 34 | 35 | tunerTypes = ('DVB-C', 'DVB-T', 'DVB-S', 'iptv', 'multi') 36 | 37 | tunertypes = { 38 | 'DVB-C': 'Cable', 39 | 'DVB-T': 'Antenna', 40 | 'DVB-S': 'Cable', 41 | 'multi': 'Cable', 42 | 'iptv': 'Cable' 43 | } 44 | 45 | tunerports = { 46 | 'DVB-C': '6081', 47 | 'DVB-T': '6082', 48 | 'DVB-S': '6083', 49 | 'multi': '6084', 50 | 'iptv': '6085' 51 | } 52 | 53 | tunerfolders = { 54 | 'DVB-C': 'cable', 55 | 'DVB-T': 'antenna', 56 | 'DVB-S': 'satellite', 57 | 'multi': 'multi', 58 | 'iptv': 'iptv' 59 | } 60 | 61 | porttypes = { 62 | 6081: 'DVB-C', 63 | 6082: 'DVB-T', 64 | 6083: 'DVB-S', 65 | 6084: 'multi', 66 | 6085: 'iptv' 67 | } 68 | 69 | config.hrtunerproxy = ConfigSubsection() 70 | config.hrtunerproxy.bouquets_list = ConfigSubDict() 71 | for type in tunerTypes: 72 | config.hrtunerproxy.bouquets_list[type] = ConfigSelection(default=None, choices=[(None, _('Not set')), ('all', _('All'))] + getBouquetsList()) 73 | config.hrtunerproxy.iptv_tunercount = ConfigSelectionNumber(min=1, max=10, stepwidth=1, default=2, wraparound=True) 74 | config.hrtunerproxy.slotsinuse = NoSave(ConfigNumber()) 75 | config.hrtunerproxy.debug = ConfigEnableDisable(default=False) 76 | 77 | 78 | def getVersion(): 79 | if path.exists("/usr/lib/enigma2/python/Plugins/SystemPlugins/HRTunerProxy/PLUGIN_VERSION"): 80 | f = open("/usr/lib/enigma2/python/Plugins/SystemPlugins/HRTunerProxy/PLUGIN_VERSION") 81 | PLUGIN_VERSION = _('v%s ') % f.read().replace('\n', '') 82 | f.close() 83 | else: 84 | PLUGIN_VERSION = '' 85 | return PLUGIN_VERSION 86 | 87 | 88 | if config.hrtunerproxy.debug.value: 89 | logger.info('Version: %s' % getVersion()) 90 | 91 | 92 | def _ifinfo(sock, addr, ifname): 93 | iface = struct.pack('256s', six.ensure_binary(ifname[:15])) 94 | info = fcntl.ioctl(sock.fileno(), addr, iface) 95 | if addr == 0x8927: 96 | return ':'.join(['%02x' % (char if six.PY3 else ord(char)) for char in info[18:24]]).upper() 97 | else: 98 | return socket.inet_ntoa(info[20:24]) 99 | 100 | 101 | def getIfConfig(ifname): 102 | ifreq = {'ifname': ifname} 103 | infos = {} 104 | sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 105 | # offsets defined in /usr/include/linux/sockios.h on linux 2.6 106 | infos['addr'] = 0x8915 # SIOCGIFADDR 107 | infos['brdaddr'] = 0x8919 # SIOCGIFBRDADDR 108 | infos['hwaddr'] = 0x8927 # SIOCSIFHWADDR 109 | infos['netmask'] = 0x891b # SIOCGIFNETMASK 110 | try: 111 | for k, v in infos.items(): 112 | ifreq[k] = _ifinfo(sock, v, ifname) 113 | except: 114 | pass 115 | sock.close() 116 | return ifreq 117 | 118 | 119 | def getIfInfo(): 120 | for port in ('eth0', 'eth1', 'wlan0', 'wlan1', 'wlan2', 'wlan3', 'ra0'): 121 | ifinfo = getIfConfig(port) 122 | if 'addr' in ifinfo: 123 | return ifinfo 124 | return None 125 | 126 | 127 | def getIP(): 128 | IP = '0.0.0.0' 129 | ifinfo = getIfInfo() 130 | if ifinfo: 131 | IP = ifinfo['addr'] 132 | return '%s' % IP 133 | 134 | 135 | PluginLanguageDomain = "HRTunerProxy" 136 | PluginLanguagePath = "SystemPlugins/HRTunerProxy/locale" 137 | 138 | 139 | def localeInit(): 140 | if isDreamOS: # check if opendreambox image 141 | lang = language.getLanguage()[:2] # getLanguage returns e.g. "fi_FI" for "language_country" 142 | os_environ["LANGUAGE"] = lang # Enigma doesn't set this (or LC_ALL, LC_MESSAGES, LANG). gettext needs it! 143 | gettext.bindtextdomain(PluginLanguageDomain, resolveFilename(SCOPE_PLUGINS, PluginLanguagePath)) 144 | 145 | 146 | if isDreamOS: # check if DreamOS image 147 | _ = lambda txt: gettext.dgettext(PluginLanguageDomain, txt) if txt else "" 148 | localeInit() 149 | language.addCallback(localeInit) 150 | else: 151 | def _(txt): 152 | if gettext.dgettext(PluginLanguageDomain, txt): 153 | return gettext.dgettext(PluginLanguageDomain, txt) 154 | else: 155 | print("[" + PluginLanguageDomain + "] fallback to default translation for " + txt) 156 | return gettext.gettext(txt) 157 | language.addCallback(localeInit()) 158 | -------------------------------------------------------------------------------- /plugin/about.py: -------------------------------------------------------------------------------- 1 | from os import path 2 | from sys import modules 3 | 4 | from . import _, getVersion, isDreamOS 5 | from Components.ActionMap import ActionMap 6 | from Components.Button import Button 7 | from Components.config import config 8 | from Components.Label import Label 9 | from Components.Pixmap import Pixmap 10 | from Components.Sources.StaticText import StaticText 11 | from Screens.Screen import Screen 12 | 13 | 14 | class HRTunerProxy_About(Screen): 15 | if isDreamOS: # check if DreamOS image 16 | skin = "%s/skins/dreamos_about.xml" % (path.dirname(modules[__name__].__file__)) 17 | else: 18 | skin = "%s/skins/about.xml" % (path.dirname(modules[__name__].__file__)) 19 | f = open(skin, "r") 20 | skin = f.read() 21 | f.close() 22 | 23 | def __init__(self, session, menu_path=""): 24 | Screen.__init__(self, session) 25 | if hasattr(config.usage, 'show_menupath'): 26 | screentitle = _("About HR-Tuner Proxy") 27 | if config.usage.show_menupath.value == 'large': 28 | menu_path += screentitle 29 | title = menu_path 30 | self["menu_path_compressed"] = StaticText("") 31 | elif config.usage.show_menupath.value == 'small': 32 | title = screentitle 33 | self["menu_path_compressed"] = StaticText(menu_path + " >" if not menu_path.endswith(' / ') else menu_path[:-3] + " >" or "") 34 | else: 35 | title = screentitle 36 | self["menu_path_compressed"] = StaticText("") 37 | else: 38 | title = _("About HR-Tuner Proxy") 39 | Screen.setTitle(self, title) 40 | 41 | self["about"] = Label() 42 | self["actions"] = ActionMap(["SetupActions"], 43 | { 44 | "red": self.close, 45 | "cancel": self.close, 46 | "menu": self.close, 47 | }, -2) 48 | 49 | self["key_red"] = Button(_("Close")) 50 | self["button_red"] = Pixmap() 51 | 52 | credit = _("HR-Tuner Proxy for Enigma2 %s(c) 2018\n") % getVersion() 53 | credit += "Andrew Blackburn & Rowland Huevos\n" 54 | credit += "https://github.com/OpenViX/HRTunerProxy\n\n" 55 | credit += _("Application credits:\n") 56 | credit += "- AndyBlac (main developer)\n" 57 | credit += "- Huevos (main developer)\n" 58 | credit += "- rossi2000 (developer)\n\n" 59 | credit += _("Sources credits:\n") 60 | credit += "- FidoFuz (helped us with JSON tags)\n" 61 | credit += "- PiGeon(CZ) (helped us with debugging OpenDreamBox)\n\n" 62 | credit += _("Translation credits:\n") 63 | credit += "- patrickf95 / captain (German)\n" 64 | credit += "- PiGeon(CZ) (Czech)\n" 65 | credit += "- Rob van der Does(NL) (Dutch)\n" 66 | credit += "- Pakorro (Spanish)" 67 | self["about"].setText(credit) 68 | -------------------------------------------------------------------------------- /plugin/getDeviceInfo.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | from __future__ import absolute_import 3 | 4 | import string 5 | import random 6 | import json 7 | import uuid 8 | from socket import gethostname 9 | from os import path, mkdir 10 | from sys import modules 11 | 12 | from Components.About import about 13 | from Components.NimManager import nimmanager 14 | from Components.config import config 15 | 16 | try: 17 | from boxbranding import getMachineName, getDriverDate, getBoxType, getMachineBrand, getImageDistro 18 | brandingmodule = True 19 | except: 20 | brandingmodule = False 21 | try: 22 | from enigma import getBoxType, getEnigmaVersionString 23 | except: 24 | def getBoxType(): 25 | return 'STB' 26 | 27 | def getEnigmaVersionString(): 28 | return '000000' 29 | 30 | from .getLineup import getlineup 31 | from . import tunertypes, tunerports, tunerfolders, getIP 32 | 33 | charset = { 34 | "auth": string.ascii_letters + string.digits, 35 | "id": string.ascii_uppercase + string.digits, 36 | } 37 | 38 | 39 | def generator(size, chars=charset['id']): 40 | return ''.join(random.choice(chars) for _ in range(size)) 41 | 42 | 43 | class getDeviceInfo: 44 | def __init__(self): 45 | pass 46 | 47 | def discoverJSON(self, dvb_type): 48 | ip = getIP() 49 | ip_port = 'http://%s:%s' % (ip, tunerports[dvb_type]) 50 | device_uuid = str(uuid.uuid4()) 51 | if path.exists('/etc/enigma2/%s.discover' % dvb_type): 52 | with open('/etc/enigma2/%s.discover' % dvb_type) as data_file: 53 | discover = json.load(data_file) 54 | discover.pop('NumChannels', None) 55 | else: 56 | discover = {} 57 | deviceauth = generator(24, charset['auth']) 58 | deviceid = generator(8, charset['id']) 59 | if brandingmodule: 60 | discover['FriendlyName'] = '%s %s' % (getMachineBrand(), getMachineName()) 61 | discover['ModelNumber'] = '%s' % getBoxType() 62 | discover['FirmwareName'] = '%s' % getImageDistro() 63 | discover['FirmwareVersion'] = '%s' % getDriverDate() 64 | else: 65 | discover['FriendlyName'] = '%s' % gethostname() 66 | discover['ModelNumber'] = '%s' % getBoxType() 67 | discover['FirmwareName'] = '%s' % _('Enigma2') 68 | discover['FirmwareVersion'] = '%s' % getEnigmaVersionString() 69 | discover['DeviceID'] = '%s' % deviceid 70 | discover['DeviceAuth'] = '%s' % deviceauth 71 | discover['DeviceUUID'] = '%s' % device_uuid 72 | 73 | discover['Manufacturer'] = 'Silicondust' 74 | discover['BaseURL'] = '%s' % ip_port 75 | discover['LineupURL'] = '%s/lineup.json' % ip_port 76 | discover['TunerCount'] = tunercount(dvb_type) 77 | return discover 78 | 79 | def tunersInUse(self): 80 | # returns list of nim.slot numbers that are currenly in use 81 | mask = config.hrtunerproxy.slotsinuse.value 82 | print("[HRTunerProxy] mask:%s\n" % mask) 83 | slots = [] 84 | for i in range(len(format(mask, 'b'))): 85 | if (mask >> i) & 0x1: 86 | slots.append(i) 87 | return slots 88 | 89 | def getTunerInfo(self, dvb_type): 90 | nimList = getNimList(dvb_type) 91 | tunersInUse = self.tunersInUse() 92 | print("[HRTunerProxy] tunersInUse", tunersInUse) 93 | tunerstatus = {} 94 | x = 0 95 | for nim in nimList: 96 | status = _("In use") if nim in tunersInUse else "none" 97 | tunerstatus["tuner%s" % x] = status 98 | x += 1 99 | return tunerstatus 100 | 101 | 102 | def getNimList(dvbtype): 103 | return nimmanager.getNimListOfType(dvbtype) if dvbtype not in ('multi', 'iptv') else nimmanager.nimList() 104 | 105 | 106 | def tunercount(dvbtype): 107 | return len(nimmanager.getNimListOfType(dvbtype)) if dvbtype not in ('multi', 'iptv') else len(nimmanager.nimList()) 108 | 109 | 110 | def tunerdata(dvbtype): 111 | device_info = getDeviceInfo() 112 | output = device_info.getTunerInfo(dvbtype) 113 | return output 114 | 115 | 116 | def tunerstatus(dvbtype): 117 | discover = discoverdata(dvbtype=dvbtype) 118 | ts = tunerdata(dvbtype) 119 | data = """ 120 | 121 | 122 | 123 | Tuner Status 124 | 125 | 126 | 127 |
128 |
%s
129 |
Tuner Status
130 | 131 | """ % discover['FriendlyName'] 132 | for x in range(tunercount(dvbtype)): 133 | data += "\n" % (x, ts["tuner%s" % x]) 134 | data += """
Tuner %s Channel%s
135 |
136 | 137 | """ 138 | return data 139 | 140 | 141 | def discoverdata(dvbtype): 142 | device_info = getDeviceInfo() 143 | output = device_info.discoverJSON(dvb_type=dvbtype) 144 | return output 145 | 146 | 147 | def write_discover(dvbtype="DVB-S"): 148 | data = discoverdata(dvbtype=dvbtype) 149 | try: 150 | with open('/etc/enigma2/%s.discover' % dvbtype, 'w') as outfile: 151 | json.dump(data, outfile) 152 | outfile.close() 153 | except Exception as e: 154 | print("Error opening %s for writing" % writefile) 155 | return 156 | 157 | 158 | def devicedata(dvbtype): 159 | if path.exists('/etc/enigma2/%s.device' % dvbtype): 160 | datafile = open('/etc/enigma2/%s.device' % dvbtype, 'r') 161 | xmldoc = datafile.read() 162 | datafile.close() 163 | else: 164 | xmldoc = "" 165 | return xmldoc 166 | 167 | 168 | def write_device_xml(dvbtype): 169 | discover = discoverdata(dvbtype=dvbtype) 170 | xml = """ 171 | 172 | 1 173 | 0 174 | 175 | {base_url} 176 | 177 | urn:schemas-upnp-org:device:MediaServer:1 178 | {friendly_name} 179 | {manufacturer} 180 | {model_name} 181 | {model_number} 182 | {serial_number} 183 | uuid:{uuid} 184 | 185 | """ 186 | xmlfile = xml.format(base_url=discover['BaseURL'], 187 | friendly_name=discover['FriendlyName'], 188 | manufacturer=discover['Manufacturer'], 189 | model_name=discover['ModelNumber'].upper(), 190 | model_number=discover['ModelNumber'].lower(), 191 | serial_number="", 192 | uuid=discover['DeviceUUID']) 193 | 194 | with open('/etc/enigma2/%s.device' % dvbtype, 'w') as outfile: 195 | outfile.writelines(xmlfile) 196 | outfile.close() 197 | 198 | 199 | getdeviceinfo = modules[__name__] 200 | -------------------------------------------------------------------------------- /plugin/getLineup.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | 3 | import re 4 | import json 5 | try: 6 | from urllib.parse import unquote 7 | except: 8 | from urllib import unquote 9 | from os import path, mkdir 10 | from sys import modules 11 | 12 | from enigma import eServiceReference 13 | from Components.config import config 14 | 15 | 16 | class getLineup: 17 | def __init__(self, duplicates=False, bouquet=None, bouquet_names_only=False): 18 | self.duplicates = duplicates 19 | self.bouquet_names_only = bouquet_names_only 20 | self.refs_added = [] 21 | if hasattr(eServiceReference, 'isNumberedMarker'): 22 | self.isNumberedMarker = eServiceReference.isNumberedMarker 23 | else: 24 | self.isNumberedMarker = 256 25 | if hasattr(eServiceReference, 'isInvisible'): 26 | self.isInvisible = eServiceReference.isInvisible 27 | else: 28 | self.isInvisible = 512 29 | self.path = "/etc/enigma2/" 30 | self.db = "lamedb" 31 | self.tv_index = "bouquets.tv" 32 | self.channelNames = {} # key SID:TSID:ONID:NAMESPACE in hex 33 | self.bouquets_filenames = [] 34 | self.bouquets_flags = {} 35 | self.bouquets_names = [] # contains tuple pairs, e.g. [(filename1, bouquet_name1), (filename2, bouquet_name2)] 36 | self.channel_numbers_names_and_refs = [] 37 | self.video_allowed_types = [1, 4, 5, 17, 22, 24, 25, 27, 31, 135] 38 | if not self.bouquet_names_only: 39 | self.read_services() 40 | if bouquet: 41 | if bouquet != 'all': 42 | self.bouquets_filenames.append(bouquet) 43 | self.bouquets_flags[bouquet] = (eServiceReference.isDirectory | eServiceReference.mustDescent | eServiceReference.canDescent) # default bouquet folder (7) 44 | else: 45 | self.read_tv_index() 46 | self.read_tv_bouquets() 47 | 48 | def read_services(self): 49 | try: 50 | db = open(self.path + self.db, "r") 51 | except Exception as e: 52 | return 53 | 54 | content = db.read() 55 | db.close() 56 | 57 | srv_start = content.find("services\n") 58 | srv_stop = content.rfind("end\n") 59 | 60 | srv_blocks = content[srv_start + 9:srv_stop].strip().split("\n") 61 | 62 | for i in range(0, len(srv_blocks) // 3): 63 | service_reference = srv_blocks[i * 3].strip().split(":") 64 | service_name = srv_blocks[(i * 3) + 1].strip() 65 | 66 | if len(service_reference) != 6 and len(service_reference) != 7: 67 | continue 68 | 69 | sid = int(service_reference[0], 16) 70 | namespace = int(service_reference[1], 16) 71 | tsid = int(service_reference[2], 16) 72 | onid = int(service_reference[3], 16) 73 | 74 | key = "%x:%x:%x:%x" % (sid, tsid, onid, namespace) 75 | self.channelNames[key] = service_name 76 | 77 | def read_tv_index(self): 78 | try: 79 | bouquets = open(self.path + self.tv_index, "r") 80 | except Exception as e: 81 | return 82 | 83 | content = bouquets.read() 84 | bouquets.close() 85 | 86 | for row in content.split("\n"): 87 | result = re.match("^.*FROM BOUQUET \"(.+)\" ORDER BY.*$", row) or re.match("[#]SERVICE[:] (?:[0-9a-f]+[:])+([^:]+[.](?:tv|radio))$", row, re.IGNORECASE) 88 | if result is None: 89 | continue 90 | self.bouquets_filenames.append(result.group(1)) 91 | bouquet_flags = (eServiceReference.isDirectory | eServiceReference.mustDescent | eServiceReference.canDescent) # default bouquet folder (7) 92 | if result.group(0).startswith("#SERVICE "): 93 | service_ref = result.group(0)[9:].strip() 94 | service_ref_split = service_ref.split(":") 95 | if len(service_ref_split) > 9: 96 | bouquet_flags = int(service_ref_split[1]) 97 | self.bouquets_flags[result.group(1)] = bouquet_flags 98 | 99 | def read_tv_bouquets(self): 100 | channel_number = 0 101 | for filename in self.bouquets_filenames: 102 | name = '' 103 | try: 104 | bouquet = open(self.path + filename, "r") 105 | except Exception as e: 106 | continue 107 | 108 | content = bouquet.read() 109 | bouquet.close() 110 | 111 | content_split = content.split("\n") 112 | content_len = len(content_split) 113 | for idx in range(content_len): 114 | row = content_split[idx] 115 | channel_name = '' 116 | if name == '' and row.startswith("#NAME "): 117 | if not (self.bouquets_flags[filename] & self.isInvisible): # not invisible bouquet 118 | name = row.strip()[6:] 119 | self.bouquets_names.append((filename, name)) 120 | if self.bouquet_names_only: 121 | break 122 | elif row.startswith("#SERVICE "): 123 | if content_len > (idx + 1) and content_split[idx + 1].startswith("#DESCRIPTION "): # check if channel name exists in bouquets file 124 | channel_name = content_split[idx + 1].strip()[13:] 125 | service_ref = row[9:].strip() 126 | service_ref_split = service_ref.split(":") 127 | if len(service_ref_split) < 10: 128 | print("[HRTunerProxy] [read_tv_bouquets] Error in %s" % filename) 129 | continue 130 | service_flags = int(service_ref_split[1]) 131 | if service_flags == (eServiceReference.mustDescent | eServiceReference.canDescent | eServiceReference.isGroup): # alternatives (134) 132 | alternative = self.alternatives(row) 133 | if alternative is None: # something must be wrong with alternatives group 134 | channel_number += 1 135 | continue 136 | service_ref = alternative["service_ref"] 137 | service_ref_split = alternative["service_ref_split"] 138 | service_flags = alternative["service_flags"] 139 | if service_flags == eServiceReference.isMarker: # standard marker (64), skip 140 | continue 141 | channel_number += 1 # everything below this point increments the channel number 142 | if (service_flags & self.isNumberedMarker): # numbered marker (256) 143 | continue 144 | if (self.bouquets_flags[filename] & self.isInvisible): # invisible bouquet (512) 145 | continue 146 | if int(service_ref_split[0]) not in (1, 4097): # not a regular service. Might be IPTV. 147 | continue 148 | if service_flags != 0: # not a normal service that can be fed directly into the "play"-handler. 149 | continue 150 | if int(service_ref_split[2], 16) not in self.video_allowed_types: 151 | continue 152 | if service_ref in self.refs_added and not self.duplicates: 153 | continue 154 | if "http" not in row: # not http stream 155 | self.refs_added.append(service_ref) 156 | sid = int(service_ref_split[3], 16) 157 | tsid = int(service_ref_split[4], 16) 158 | onid = int(service_ref_split[5], 16) 159 | namespace = int(service_ref_split[6], 16) 160 | key = "%x:%x:%x:%x" % (sid, tsid, onid, namespace) 161 | if key not in self.channelNames and ("http" not in row or ("http" in row and channel_name == "")): 162 | continue 163 | if channel_name == "": 164 | channel_name = self.channelNames[key] 165 | if len(service_ref_split) > 10 and "http" in service_ref_split[10]: # http stream 166 | http_link = unquote(service_ref_split[10].strip()) 167 | self.channel_numbers_names_and_refs.append((str(channel_number), channel_name, http_link, "iptv")) 168 | continue 169 | service_ref_clean = ':'.join(service_ref_split[:10]) + ":" 170 | self.channel_numbers_names_and_refs.append((str(channel_number), channel_name, service_ref_clean, self.tunerType(namespace))) 171 | 172 | def tunerType(self, namespace): 173 | if (namespace >> 16) == 0xFFFF: 174 | return "DVB-C" 175 | if (namespace >> 16) == 0xEEEE: 176 | return "DVB-T" 177 | return "DVB-S" 178 | 179 | def alternatives(self, service_line): 180 | result = re.match("^.*FROM BOUQUET \"(.+)\" ORDER BY.*$", service_line) 181 | if result is not None: 182 | try: 183 | alternative = open(self.path + result.group(1), "r") 184 | except Exception as e: 185 | return 186 | content = alternative.read() 187 | alternative.close() 188 | 189 | for row in content.split("\n"): 190 | if row.startswith("#SERVICE "): 191 | if "http" in row: 192 | continue 193 | service_ref = row[9:].strip() 194 | service_ref_split = service_ref.split(":") 195 | if len(service_ref_split) < 10: 196 | print("[HRTunerProxy] [alternatives] Error in %s" % result.group(1)) 197 | continue 198 | if int(service_ref_split[0], 16) != 1: # not a regular service. Might be IPTV. 199 | continue 200 | service_flags = int(service_ref_split[1]) 201 | if service_flags == 0: # normal service that can be fed directly into the "play"-handler. 202 | return {"service_ref": service_ref, "service_ref_split": service_ref_split, "service_flags": service_flags} 203 | 204 | def output(self): 205 | return self.channel_numbers_names_and_refs 206 | 207 | def createJSON(self, ip="0.0.0.0", port=8001, dvb_type="DVB-S"): 208 | output = self.output() 209 | self.data_tmp = {} 210 | self.lineup = [] 211 | 212 | for c_n_r in output: 213 | if dvb_type == "iptv" and "http" not in c_n_r[2]: 214 | continue 215 | if dvb_type in ('multi', 'iptv', c_n_r[3]): 216 | self.data_tmp = {} 217 | self.data_tmp['GuideNumber'] = '%s' % c_n_r[0] 218 | self.data_tmp['GuideName'] = '%s' % c_n_r[1] 219 | if "http" in c_n_r[2]: 220 | self.data_tmp['URL'] = c_n_r[2] 221 | else: 222 | self.data_tmp['URL'] = 'http://%s:%d/%s' % (ip, port, c_n_r[2]) 223 | self.lineup.append(self.data_tmp) 224 | return self.lineup 225 | 226 | def getBouquetsList(self): 227 | return self.bouquets_names 228 | 229 | 230 | def noofchannels(dvb_type, bouquet): 231 | return len(lineupdata(dvbtype=dvb_type, bouquet_name=bouquet)) 232 | 233 | 234 | def lineupdata(ipinput='0.0.0.0', dvbtype='', bouquet_name=''): 235 | channel_numbers = getLineup(bouquet=bouquet_name) 236 | return channel_numbers.createJSON(ip=ipinput, dvb_type=dvbtype) 237 | 238 | 239 | def getBouquetsList(): 240 | lineup = getLineup(bouquet_names_only=True, bouquet='all') 241 | return lineup.getBouquetsList() 242 | 243 | 244 | getlineup = modules[__name__] 245 | -------------------------------------------------------------------------------- /plugin/getLineupStatus.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | from __future__ import absolute_import 3 | 4 | import string 5 | import random 6 | import json 7 | from os import path, mkdir 8 | from sys import modules 9 | 10 | from . import tunerTypes, tunertypes 11 | 12 | lineup_status = {} 13 | 14 | 15 | class getLineupStatus: 16 | def __init__(self): 17 | pass 18 | 19 | def lineupstatusJSON(self, dvb_type): 20 | lineup_status = {} 21 | lineup_status['ScanInProgess'] = 0 22 | lineup_status['ScanPossible'] = 0 23 | lineup_status['Source'] = '%s' % tunertypes[dvb_type] 24 | lineup_status['SourceList'] = ["%s" % tunertypes[dvb_type]] 25 | return lineup_status 26 | 27 | 28 | def lineupstatus(dvbtype): 29 | lineup_status = getLineupStatus() 30 | output = lineup_status.lineupstatusJSON(dvb_type=dvbtype) 31 | return output 32 | 33 | 34 | getlineupstatus = modules[__name__] 35 | -------------------------------------------------------------------------------- /plugin/locale/HRTunerProxy.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR ORGANIZATION 3 | # FIRST AUTHOR , YEAR. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "POT-Creation-Date: 2018-02-11 15:24+GMT\n" 9 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 10 | "Last-Translator: FULL NAME \n" 11 | "Language-Team: LANGUAGE \n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=CHARSET\n" 14 | "Content-Transfer-Encoding: ENCODING\n" 15 | "Generated-By: pygettext.py 1.5\n" 16 | 17 | 18 | #: plugin/__init__.py:67 19 | msgid "All" 20 | msgstr "" 21 | 22 | #: plugin/__init__.py:67 23 | msgid "Not set" 24 | msgstr "" 25 | 26 | #: plugin/__init__.py:75 27 | msgid "v%s " 28 | msgstr "" 29 | 30 | #: plugin/about.py:25 plugin/about.py:37 31 | msgid "About HR-Tuner Proxy" 32 | msgstr "" 33 | 34 | #: plugin/about.py:48 plugin/plugin.py:162 35 | msgid "Close" 36 | msgstr "" 37 | 38 | #: plugin/about.py:51 39 | msgid "" 40 | "HR-Tuner Proxy for Enigma2 %s(c) 2018\n" 41 | msgstr "" 42 | 43 | #: plugin/about.py:54 44 | msgid "" 45 | "Application credits:\n" 46 | msgstr "" 47 | 48 | #: plugin/about.py:58 49 | msgid "" 50 | "Sources credits:\n" 51 | msgstr "" 52 | 53 | #: plugin/about.py:61 54 | msgid "" 55 | "Translation credits:\n" 56 | msgstr "" 57 | 58 | #: plugin/getDeviceInfo.py:62 59 | msgid "Enigma2" 60 | msgstr "" 61 | 62 | #: plugin/getDeviceInfo.py:91 63 | msgid "In use" 64 | msgstr "" 65 | 66 | #: plugin/plugin.py:105 plugin/plugin.py:125 67 | msgid "HR-Tuner Proxy for Enigma2" 68 | msgstr "" 69 | 70 | #: plugin/plugin.py:174 71 | msgid "About" 72 | msgstr "" 73 | 74 | #: plugin/plugin.py:189 75 | msgid "" 76 | "WARNING: No IP address found. Please make sure you are connected to your LAN via ethernet or Wi-Fi.\n" 77 | "\n" 78 | "Press OK to exit." 79 | msgstr "" 80 | 81 | #: plugin/plugin.py:200 plugin/plugin.py:216 plugin/plugin.py:271 82 | #: plugin/plugin.py:292 plugin/plugin.py:307 83 | msgid "Tuner type to use." 84 | msgstr "" 85 | 86 | #: plugin/plugin.py:217 plugin/plugin.py:274 plugin/plugin.py:295 87 | #: plugin/plugin.py:310 88 | msgid "Bouquet to use." 89 | msgstr "" 90 | 91 | #: plugin/plugin.py:219 92 | msgid "Number of concurrent streams." 93 | msgstr "" 94 | 95 | #: plugin/plugin.py:220 plugin/plugin.py:298 plugin/plugin.py:313 96 | msgid "Debug Mode." 97 | msgstr "" 98 | 99 | #: plugin/plugin.py:256 100 | msgid "Please note: Please now select a bouquet to use." 101 | msgstr "" 102 | 103 | #: plugin/plugin.py:258 104 | msgid "Please note: You do not seem to have any channels setup for this tuner, please add some channels to Enigma2 or choose anther tuner type." 105 | msgstr "" 106 | 107 | #: plugin/plugin.py:264 108 | msgid "WARNING: It seems you have a single tuner box. If the box is not left in standby your recordings WILL fail." 109 | msgstr "" 110 | 111 | #: plugin/plugin.py:265 112 | msgid "Press OK to continue setting up this tuner." 113 | msgstr "" 114 | 115 | #: plugin/plugin.py:268 plugin/plugin.py:303 plugin/plugin.py:316 116 | msgid "Save" 117 | msgstr "" 118 | 119 | #: plugin/plugin.py:272 120 | msgid "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type." 121 | msgstr "" 122 | 123 | #: plugin/plugin.py:273 plugin/plugin.py:293 plugin/plugin.py:308 124 | msgid "Press LEFT / RIGHT to select a different tuner type." 125 | msgstr "" 126 | 127 | #: plugin/plugin.py:275 plugin/plugin.py:278 plugin/plugin.py:281 128 | msgid "Press OK to continue setting up this tuner or select a different tuner type." 129 | msgstr "" 130 | 131 | #: plugin/plugin.py:276 plugin/plugin.py:279 plugin/plugin.py:297 132 | #: plugin/plugin.py:312 133 | msgid "Press LEFT / RIGHT to select a different bouquet." 134 | msgstr "" 135 | 136 | #: plugin/plugin.py:277 137 | msgid "Debug mode to create logs." 138 | msgstr "" 139 | 140 | #: plugin/plugin.py:282 141 | msgid "Press LEFT / RIGHT to set number of concurent streams." 142 | msgstr "" 143 | 144 | #: plugin/plugin.py:285 145 | msgid "" 146 | "Please note: DVR feature in Plex / Emby is premire feature. For more information please refer to:\n" 147 | "https://www.plex.tv/features/plex-pass\n" 148 | "https://emby.media/premiere.html" 149 | msgstr "" 150 | 151 | #: plugin/plugin.py:286 152 | msgid "Press OK to continue setting up." 153 | msgstr "" 154 | 155 | #: plugin/plugin.py:289 156 | msgid "" 157 | "Please note: To use another tuner type in Plex you need to setup/have another server.\n" 158 | "Are you sure you want to continue?" 159 | msgstr "" 160 | 161 | #: plugin/plugin.py:300 plugin/plugin.py:315 162 | msgid "Press LEFT / RIGHT to enable or disable debug mode." 163 | msgstr "" 164 | 165 | #: plugin/plugin.py:317 166 | msgid "Delete" 167 | msgstr "" 168 | 169 | #: plugin/plugin.py:325 170 | msgid "Do you really want to remove the files for this tuner type? Doing so will cause your DVR to be none functional." 171 | msgstr "" 172 | 173 | #: plugin/plugin.py:336 174 | msgid "" 175 | "Files deleted. Please restart enigma2.\n" 176 | "\n" 177 | "Do you want to restart now?" 178 | msgstr "" 179 | 180 | #: plugin/plugin.py:357 181 | msgid "It seems you have already set up another tuner. Your server can only support one tuner type. To use this additional tuner type you will need to setup another server. Do you want to continue creating the files?" 182 | msgstr "" 183 | 184 | #: plugin/plugin.py:377 185 | msgid "" 186 | "Files created. Please restart enigma2 and then you should be able to add this STB to your server.\n" 187 | "\n" 188 | "Do you want to restart now?" 189 | msgstr "" 190 | 191 | #: plugin/plugin.py:395 192 | msgid "Really close without saving settings?" 193 | msgstr "" 194 | 195 | #: plugin/plugin.py:446 196 | msgid "HR-Tuner Proxy" 197 | msgstr "" 198 | 199 | #: plugin/plugin.py:454 plugin/plugin.py:455 plugin/plugin.py:456 200 | msgid "Setup the HR-Tuner Proxy server" 201 | msgstr "" 202 | 203 | -------------------------------------------------------------------------------- /plugin/locale/ar/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Arabic translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: ar\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | 19 | msgid "About" 20 | msgstr "" 21 | 22 | msgid "Close" 23 | msgstr "" 24 | 25 | msgid "Create" 26 | msgstr "" 27 | 28 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 29 | msgstr "" 30 | 31 | msgid "Enigma2" 32 | msgstr "" 33 | 34 | msgid "Enigma2 STB" 35 | msgstr "" 36 | 37 | msgid "" 38 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 39 | "Do you want to do this now ?" 40 | msgstr "" 41 | 42 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 43 | msgstr "" 44 | 45 | msgid "" 46 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 47 | "\n" 48 | "Press OK to close" 49 | msgstr "" 50 | 51 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 52 | msgstr "" 53 | 54 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 55 | msgstr "" 56 | 57 | msgid "HR-Tuner Proxy for Enigma2" 58 | msgstr "" 59 | 60 | msgid "PlexDVR" 61 | msgstr "" 62 | 63 | msgid "" 64 | "Press LEFT / RIGHT to select a different tuner type.\n" 65 | "Press GREEN button to create your configuration files." 66 | msgstr "" 67 | 68 | msgid "" 69 | "Press LEFT / RIGHT to select a different tuner type.\n" 70 | "Press GREEN button to update your configuration files." 71 | msgstr "" 72 | 73 | msgid "" 74 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 75 | "Press GREEN button to create your configuration files." 76 | msgstr "" 77 | 78 | msgid "Tuner type to use." 79 | msgstr "" 80 | 81 | msgid "Update" 82 | msgstr "" 83 | 84 | msgid "" 85 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 86 | "\n" 87 | "Press OK to continue" 88 | msgstr "" 89 | -------------------------------------------------------------------------------- /plugin/locale/bg/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Bulgarian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: bg\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/ca/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Catalan translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: ca\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | 19 | msgid "About" 20 | msgstr "" 21 | 22 | msgid "Close" 23 | msgstr "" 24 | 25 | msgid "Create" 26 | msgstr "" 27 | 28 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 29 | msgstr "" 30 | 31 | msgid "Enigma2" 32 | msgstr "" 33 | 34 | msgid "Enigma2 STB" 35 | msgstr "" 36 | 37 | msgid "" 38 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 39 | "Do you want to do this now ?" 40 | msgstr "" 41 | 42 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 43 | msgstr "" 44 | 45 | msgid "" 46 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 47 | "\n" 48 | "Press OK to close" 49 | msgstr "" 50 | 51 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 52 | msgstr "" 53 | 54 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 55 | msgstr "" 56 | 57 | msgid "HR-Tuner Proxy for Enigma2" 58 | msgstr "" 59 | 60 | msgid "PlexDVR" 61 | msgstr "" 62 | 63 | msgid "" 64 | "Press LEFT / RIGHT to select a different tuner type.\n" 65 | "Press GREEN button to create your configuration files." 66 | msgstr "" 67 | 68 | msgid "" 69 | "Press LEFT / RIGHT to select a different tuner type.\n" 70 | "Press GREEN button to update your configuration files." 71 | msgstr "" 72 | 73 | msgid "" 74 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 75 | "Press GREEN button to create your configuration files." 76 | msgstr "" 77 | 78 | msgid "Tuner type to use." 79 | msgstr "" 80 | 81 | msgid "Update" 82 | msgstr "" 83 | 84 | msgid "" 85 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 86 | "\n" 87 | "Press OK to continue" 88 | msgstr "" 89 | -------------------------------------------------------------------------------- /plugin/locale/cs/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2017 The enigma2-openvix-plugins's COPYRIGHT HOLDER 2 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 3 | # Automatically generated, 2018. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 8 | "POT-Creation-Date: 2018-02-11 15:24+GMT\n" 9 | "PO-Revision-Date: 2018-02-11 15:39+0000\n" 10 | "Last-Translator: Automatically generated\n" 11 | "Language-Team: PiGeon(CZ)\n" 12 | "Language: cs\n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=UTF-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "Generated-By: pygettext.py 1.5\n" 17 | "X-Generator: Poedit 2.0.6\n" 18 | 19 | #: plugin/__init__.py:67 20 | msgid "All" 21 | msgstr "Všechny" 22 | 23 | #: plugin/__init__.py:67 24 | msgid "Not set" 25 | msgstr "nenastaveno" 26 | 27 | #: plugin/__init__.py:75 28 | msgid "v%s " 29 | msgstr "v%s " 30 | 31 | #: plugin/about.py:25 plugin/about.py:37 32 | msgid "About HR-Tuner Proxy" 33 | msgstr "O HR-Tuner Proxy" 34 | 35 | #: plugin/about.py:48 plugin/plugin.py:162 36 | msgid "Close" 37 | msgstr "Uzavřít" 38 | 39 | #: plugin/about.py:51 40 | msgid "HR-Tuner Proxy for Enigma2 %s(c) 2018\n" 41 | msgstr "HR-Tuner Proxy pro Enigma2 v%s(c) 2018 \n" 42 | 43 | #: plugin/about.py:54 44 | msgid "Application credits:\n" 45 | msgstr "Poděkování - Aplikace:\n" 46 | 47 | #: plugin/about.py:58 48 | msgid "Sources credits:\n" 49 | msgstr "Poděkování - Zdroj:\n" 50 | 51 | #: plugin/about.py:61 52 | msgid "Translation credits:\n" 53 | msgstr "Poděkování - Překlady:\n" 54 | 55 | #: plugin/getDeviceInfo.py:62 56 | msgid "Enigma2" 57 | msgstr "Enigma2" 58 | 59 | #: plugin/getDeviceInfo.py:91 60 | msgid "In use" 61 | msgstr "V použití" 62 | 63 | #: plugin/plugin.py:105 plugin/plugin.py:125 64 | msgid "HR-Tuner Proxy for Enigma2" 65 | msgstr "HR-Tuner Proxy pro Enigma2" 66 | 67 | #: plugin/plugin.py:174 68 | msgid "About" 69 | msgstr "O pluginu" 70 | 71 | #: plugin/plugin.py:189 72 | msgid "" 73 | "WARNING: No IP address found. Please make sure you are connected to your LAN " 74 | "via ethernet or Wi-Fi.\n" 75 | "\n" 76 | "Press OK to exit." 77 | msgstr "" 78 | "Upozornění: IP adresa nenalezena. Ujistěte se, že je přijímač připojen do " 79 | "sítě (LAN nebo WiFi).\n" 80 | "\n" 81 | "Zmáčkněte OK pro uzavření." 82 | 83 | #: plugin/plugin.py:200 plugin/plugin.py:216 plugin/plugin.py:271 84 | #: plugin/plugin.py:292 plugin/plugin.py:307 85 | msgid "Tuner type to use." 86 | msgstr "Typ tuneru, který bude použit." 87 | 88 | #: plugin/plugin.py:217 plugin/plugin.py:274 plugin/plugin.py:295 89 | #: plugin/plugin.py:310 90 | msgid "Bouquet to use." 91 | msgstr "Sada kanálů, která bude použita." 92 | 93 | #: plugin/plugin.py:219 94 | msgid "Number of concurrent streams." 95 | msgstr "Počet současných streamů." 96 | 97 | #: plugin/plugin.py:220 plugin/plugin.py:298 plugin/plugin.py:313 98 | msgid "Debug Mode." 99 | msgstr "Debug mód." 100 | 101 | #: plugin/plugin.py:256 102 | msgid "Please note: Please now select a bouquet to use." 103 | msgstr "Poznámka: Prosím vyberte sadu kanálů." 104 | 105 | #: plugin/plugin.py:258 106 | msgid "" 107 | "Please note: You do not seem to have any channels setup for this tuner, " 108 | "please add some channels to Enigma2 or choose anther tuner type." 109 | msgstr "" 110 | "Poznámka: Zdá se, že nemáte naladěny žádné kanály pro tento tuner, nalaďte " 111 | "prosím nějaké kanály nebo vyberte jiný typ tuneru." 112 | 113 | #: plugin/plugin.py:264 114 | msgid "" 115 | "WARNING: It seems you have a single tuner box. If the box is not left in " 116 | "standby your recordings WILL fail." 117 | msgstr "" 118 | "Upozornení: Zdá se, že máte přijímač pouze s jedním tunerem, Plex nahrávání " 119 | "nebude fungovat, pokud nebude přijímač v režimu StanBy." 120 | 121 | #: plugin/plugin.py:265 122 | msgid "Press OK to continue setting up this tuner." 123 | msgstr "Zmáčkněte OK pro pokračování v nastavení tohoto tuneru." 124 | 125 | #: plugin/plugin.py:268 plugin/plugin.py:303 plugin/plugin.py:316 126 | msgid "Save" 127 | msgstr "Uložit" 128 | 129 | #: plugin/plugin.py:272 130 | msgid "" 131 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a " 132 | "different tuner type." 133 | msgstr "" 134 | "Zmáčkněte OK pro pokračování v nastavení tohoto tuneru nebo levou/pravou " 135 | "šipku pro výběr jiného typu tuneru." 136 | 137 | #: plugin/plugin.py:273 plugin/plugin.py:293 plugin/plugin.py:308 138 | msgid "Press LEFT / RIGHT to select a different tuner type." 139 | msgstr "Zmáčkněte levou/pravou šipku pro výběr jiného typu tuneru." 140 | 141 | #: plugin/plugin.py:275 plugin/plugin.py:278 plugin/plugin.py:281 142 | msgid "" 143 | "Press OK to continue setting up this tuner or select a different tuner type." 144 | msgstr "" 145 | "Zmáčkněte OK pro pokračování v nastavení tohoto tuneru nebo výberte jiný " 146 | "typu tuneru." 147 | 148 | #: plugin/plugin.py:276 plugin/plugin.py:279 plugin/plugin.py:297 149 | #: plugin/plugin.py:312 150 | msgid "Press LEFT / RIGHT to select a different bouquet." 151 | msgstr "Zmáčkněte levou/pravou šipku pro výběr jiné sady kanálů." 152 | 153 | #: plugin/plugin.py:277 154 | msgid "Debug mode to create logs." 155 | msgstr "Debug mód pro vytvoření logu." 156 | 157 | #: plugin/plugin.py:282 158 | msgid "Press LEFT / RIGHT to set number of concurent streams." 159 | msgstr "Zmáčkněte levou/pravou šipku pro nastavení počtu současných streamů." 160 | 161 | #: plugin/plugin.py:285 162 | msgid "" 163 | "Please note: DVR feature in Plex / Emby is premire feature. For more " 164 | "information please refer to:\n" 165 | "https://www.plex.tv/features/plex-pass\n" 166 | "https://emby.media/premiere.html" 167 | msgstr "" 168 | "Poznámka: DVR funkce Plex/Emby serveru je premiovou funkcí. Více informací " 169 | "naleznete na:\n" 170 | "https://www.plex.tv/features/plex-pass\n" 171 | "https://emby.media/premiere.html" 172 | 173 | #: plugin/plugin.py:286 174 | msgid "Press OK to continue setting up." 175 | msgstr "Zmáčkněte OK pro pokračování v nastavení." 176 | 177 | #: plugin/plugin.py:289 178 | msgid "" 179 | "Please note: To use another tuner type in Plex you need to setup/have " 180 | "another server.\n" 181 | "Are you sure you want to continue?" 182 | msgstr "" 183 | "Poznámka: Pro využití dalšího typu tuneru bude potreba nainstalovat/mít " 184 | "druhý Plex server.\n" 185 | "Chcete opravdu pokracovat?" 186 | 187 | #: plugin/plugin.py:300 plugin/plugin.py:315 188 | msgid "Press LEFT / RIGHT to enable or disable debug mode." 189 | msgstr "Zmáčkněte levou/pravou šipku pro zapnutí nebo vypnutí debug módu." 190 | 191 | #: plugin/plugin.py:317 192 | msgid "Delete" 193 | msgstr "Smazat" 194 | 195 | #: plugin/plugin.py:325 196 | msgid "" 197 | "Do you really want to remove the files for this tuner type? Doing so will " 198 | "cause your DVR to be none functional." 199 | msgstr "" 200 | "Opravdu chcete odebrat soubory pro tento typ tuneru? Pokud tak učiníte, " 201 | "způsobí to nefunkčnost tohoto DVR v Plexu." 202 | 203 | #: plugin/plugin.py:336 204 | msgid "" 205 | "Files deleted. Please restart enigma2.\n" 206 | "\n" 207 | "Do you want to restart now?" 208 | msgstr "" 209 | "Soubory byly smazány. Restartujte prosím enigma2.\n" 210 | "\n" 211 | "Chcete provést restart nyní?" 212 | 213 | #: plugin/plugin.py:357 214 | msgid "" 215 | "It seems you have already set up another tuner. Your server can only support " 216 | "one tuner type. To use this additional tuner type you will need to setup " 217 | "another server. Do you want to continue creating the files?" 218 | msgstr "" 219 | "Zdá se, že jste již nastavili tuner jiného typu. Plex server podporuje pouze " 220 | "jeden typ tuneru, pro využití dalšího typu tuneru budete muset nainstalovat " 221 | "druhý Plex server, chcete pokračovat s vytvořením souboru?" 222 | 223 | #: plugin/plugin.py:377 224 | msgid "" 225 | "Files created. Please restart enigma2 and then you should be able to add " 226 | "this STB to your server.\n" 227 | "\n" 228 | "Do you want to restart now?" 229 | msgstr "" 230 | "Soubory byly vytvořeny. Restartujte prosím enigma2 poté byste měli mít " 231 | "možnost přidat přijímač do Plex serveru.\n" 232 | "\n" 233 | "Chcete provést restart nyní?" 234 | 235 | #: plugin/plugin.py:395 236 | msgid "Really close without saving settings?" 237 | msgstr "Opravdu uzavřít bez uložení nastavení?" 238 | 239 | #: plugin/plugin.py:446 240 | msgid "HR-Tuner Proxy" 241 | msgstr "HR-Tuner Proxy" 242 | 243 | #: plugin/plugin.py:454 plugin/plugin.py:455 plugin/plugin.py:456 244 | msgid "Setup the HR-Tuner Proxy server" 245 | msgstr "Nastavení HR-Tuner proxy serveru" 246 | 247 | -------------------------------------------------------------------------------- /plugin/locale/da/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Danish translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: da\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/de/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # German translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: de\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "About" 21 | msgstr "Über" 22 | 23 | msgid "Close" 24 | msgstr "Schließen" 25 | 26 | msgid "Create" 27 | msgstr "Erstellen" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | "Keine IP Adresse gefunden, bitte verwende eine kabelgebundende Verbindung zum LAN, WLAN wird aktuell nocht nicht supportet.\n" 52 | "\n" 53 | "Drücke OK zum schließen" 54 | 55 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 56 | msgstr "" 57 | 58 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 59 | msgstr "" 60 | 61 | msgid "HR-Tuner Proxy for Enigma2" 62 | msgstr "HRTunerProxy für Enigma2" 63 | 64 | msgid "PlexDVR" 65 | msgstr "" 66 | 67 | msgid "" 68 | "Press LEFT / RIGHT to select a different tuner type.\n" 69 | "Press GREEN button to create your configuration files." 70 | msgstr "" 71 | 72 | msgid "" 73 | "Press LEFT / RIGHT to select a different tuner type.\n" 74 | "Press GREEN button to update your configuration files." 75 | msgstr "" 76 | 77 | msgid "" 78 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 79 | "Press GREEN button to create your configuration files." 80 | msgstr "" 81 | 82 | msgid "Tuner type to use." 83 | msgstr "" 84 | 85 | msgid "Update" 86 | msgstr "Update" 87 | 88 | msgid "" 89 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 90 | "\n" 91 | "Press OK to continue" 92 | msgstr "" 93 | 94 | #~ msgid "" 95 | #~ "Do you really want to reset?,\n" 96 | #~ " doing so will cause the DVR in plex to be none functional,\n" 97 | #~ "you will have to remove and re-add the DVR." 98 | #~ msgstr "" 99 | #~ "Wirklich Zurücksetzen?,\n" 100 | #~ " Plex DVR funktion wird dadurch beendet,\n" 101 | #~ "DVR-funktion muss entfernt werden und eine neue Anbindung ist erforderlich." 102 | 103 | #~ msgid "Files created, you should be able to add this STB to Plex DVR." 104 | #~ msgstr "Dateien wurden erstellt, das hinzufügen deines STB an Plex DVR ist nun möglich." 105 | 106 | #~ msgid "" 107 | #~ "Please note: A 2 Tuner minimum requirement is required for this plugin to function.\n" 108 | #~ "\n" 109 | #~ "Press OK to close" 110 | #~ msgstr "" 111 | #~ "Bitte beachten: Es werden mind. 2 Tuner benötigt damit das Plugin ordnungsgemäßarbeiten kann.\n" 112 | #~ "\n" 113 | #~ "Drücke OK zum schließen" 114 | 115 | #~ msgid "" 116 | #~ "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user.\n" 117 | #~ "For more information about Plex Pass see https://www.plex.tv/features/plex-pass\n" 118 | #~ "\n" 119 | #~ "Press OK to contine" 120 | #~ msgstr "" 121 | #~ "Bitte beachten: Um die DVR-funktion von Plex verwendenzu können, wird eine Plex Pass Mitgliedschaft benötigt.\n" 122 | #~ "Mehr Information über Plex Pass auf der Seite https://www.plex.tv/features/plex-pass\n" 123 | #~ "\n" 124 | #~ "Drücke OK für weiter" 125 | 126 | #~ msgid "Plex DVR" 127 | #~ msgstr "Plex DVR" 128 | 129 | #~ msgid "Reset DVR" 130 | #~ msgstr "DVR zurücksetzen" 131 | -------------------------------------------------------------------------------- /plugin/locale/el/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Greek translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: el\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/en/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # English translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-07-07 01:32+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language: en\n" 14 | "Language-Team: openvix\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | "X-Generator: Poedit 2.0.2\n" 20 | 21 | msgid "About" 22 | msgstr "About" 23 | 24 | msgid "Close" 25 | msgstr "Close" 26 | 27 | msgid "Create" 28 | msgstr "Create" 29 | 30 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 31 | msgstr "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 32 | 33 | msgid "Enigma2" 34 | msgstr "Enigma2" 35 | 36 | msgid "Enigma2 STB" 37 | msgstr "Enigma2 STB" 38 | 39 | msgid "" 40 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 41 | "Do you want to do this now ?" 42 | msgstr "" 43 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 44 | "Do you want to do this now ?" 45 | 46 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 47 | msgstr "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 48 | 49 | msgid "" 50 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 51 | "\n" 52 | "Press OK to close" 53 | msgstr "" 54 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 55 | "\n" 56 | "Press OK to close" 57 | 58 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 59 | msgstr "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 60 | 61 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 62 | msgstr "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 63 | 64 | msgid "HR-Tuner Proxy for Enigma2" 65 | msgstr "HR-Tuner Proxy for Enigma2" 66 | 67 | msgid "PlexDVR" 68 | msgstr "PlexDVR" 69 | 70 | msgid "" 71 | "Press LEFT / RIGHT to select a different tuner type.\n" 72 | "Press GREEN button to create your configuration files." 73 | msgstr "" 74 | "Press LEFT / RIGHT to select a different tuner type.\n" 75 | "Press GREEN button to create your configuration files." 76 | 77 | msgid "" 78 | "Press LEFT / RIGHT to select a different tuner type.\n" 79 | "Press GREEN button to update your configuration files." 80 | msgstr "" 81 | "Press LEFT / RIGHT to select a different tuner type.\n" 82 | "Press GREEN button to update your configuration files." 83 | 84 | msgid "" 85 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 86 | "Press GREEN button to create your configuration files." 87 | msgstr "" 88 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 89 | "Press GREEN button to create your configuration files." 90 | 91 | msgid "Tuner type to use." 92 | msgstr "Tuner type to use." 93 | 94 | msgid "Update" 95 | msgstr "Update" 96 | 97 | msgid "" 98 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 99 | "\n" 100 | "Press OK to continue" 101 | msgstr "" 102 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 103 | "\n" 104 | "Press OK to continue" 105 | -------------------------------------------------------------------------------- /plugin/locale/en_GB/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # English translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2018-02-11 15:24+GMT\n" 11 | "PO-Revision-Date: 2018-02-11 15:26+0000\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: openvix\n" 14 | "Language: en_GB\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | "X-Generator: Poedit 2.0.6\n" 20 | 21 | #: plugin/__init__.py:67 22 | msgid "All" 23 | msgstr "All" 24 | 25 | #: plugin/__init__.py:67 26 | msgid "Not set" 27 | msgstr "Not set" 28 | 29 | #: plugin/__init__.py:75 30 | msgid "v%s " 31 | msgstr "v%s " 32 | 33 | #: plugin/about.py:25 plugin/about.py:37 34 | msgid "About HR-Tuner Proxy" 35 | msgstr "About HR-Tuner Proxy" 36 | 37 | #: plugin/about.py:48 plugin/plugin.py:162 38 | msgid "Close" 39 | msgstr "Close" 40 | 41 | #: plugin/about.py:51 42 | #| msgid "HR-Tuner Proxy for Enigma2 v%s (c) 2018 \n" 43 | msgid "HR-Tuner Proxy for Enigma2 %s(c) 2018\n" 44 | msgstr "HR-Tuner Proxy for Enigma2 %s(c) 2018\n" 45 | 46 | #: plugin/about.py:54 47 | msgid "Application credits:\n" 48 | msgstr "Application credits:\n" 49 | 50 | #: plugin/about.py:58 51 | msgid "Sources credits:\n" 52 | msgstr "Sources credits:\n" 53 | 54 | #: plugin/about.py:61 55 | msgid "Translation credits:\n" 56 | msgstr "Translation credits:\n" 57 | 58 | #: plugin/getDeviceInfo.py:62 59 | msgid "Enigma2" 60 | msgstr "Enigma2" 61 | 62 | #: plugin/getDeviceInfo.py:91 63 | msgid "In use" 64 | msgstr "In use" 65 | 66 | #: plugin/plugin.py:105 plugin/plugin.py:125 67 | msgid "HR-Tuner Proxy for Enigma2" 68 | msgstr "HR-Tuner Proxy for Enigma2" 69 | 70 | #: plugin/plugin.py:174 71 | msgid "About" 72 | msgstr "About" 73 | 74 | #: plugin/plugin.py:189 75 | msgid "" 76 | "WARNING: No IP address found. Please make sure you are connected to your LAN via ethernet or Wi-Fi.\n" 77 | "\n" 78 | "Press OK to exit." 79 | msgstr "" 80 | "WARNING: No IP address found. Please make sure you are connected to your LAN via ethernet or Wi-Fi.\n" 81 | "\n" 82 | "Press OK to exit." 83 | 84 | #: plugin/plugin.py:200 plugin/plugin.py:216 plugin/plugin.py:271 85 | #: plugin/plugin.py:292 plugin/plugin.py:307 86 | msgid "Tuner type to use." 87 | msgstr "Tuner type to use." 88 | 89 | #: plugin/plugin.py:217 plugin/plugin.py:274 plugin/plugin.py:295 90 | #: plugin/plugin.py:310 91 | msgid "Bouquet to use." 92 | msgstr "Bouquet to use." 93 | 94 | #: plugin/plugin.py:219 95 | msgid "Number of concurrent streams." 96 | msgstr "Number of concurrent streams." 97 | 98 | #: plugin/plugin.py:220 plugin/plugin.py:298 plugin/plugin.py:313 99 | msgid "Debug Mode." 100 | msgstr "Debug Mode." 101 | 102 | #: plugin/plugin.py:256 103 | msgid "Please note: Please now select a bouquet to use." 104 | msgstr "Please note: Please now select a bouquet to use." 105 | 106 | #: plugin/plugin.py:258 107 | msgid "Please note: You do not seem to have any channels setup for this tuner, please add some channels to Enigma2 or choose anther tuner type." 108 | msgstr "Please note: You do not seem to have any channels setup for this tuner, please add some channels to Enigma2 or choose anther tuner type." 109 | 110 | #: plugin/plugin.py:264 111 | msgid "WARNING: It seems you have a single tuner box. If the box is not left in standby your recordings WILL fail." 112 | msgstr "WARNING: It seems you have a single tuner box. If the box is not left in standby your recordings WILL fail." 113 | 114 | #: plugin/plugin.py:265 115 | msgid "Press OK to continue setting up this tuner." 116 | msgstr "Press OK to continue setting up this tuner." 117 | 118 | #: plugin/plugin.py:268 plugin/plugin.py:303 plugin/plugin.py:316 119 | msgid "Save" 120 | msgstr "Save" 121 | 122 | #: plugin/plugin.py:272 123 | msgid "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type." 124 | msgstr "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type." 125 | 126 | #: plugin/plugin.py:273 plugin/plugin.py:293 plugin/plugin.py:308 127 | msgid "Press LEFT / RIGHT to select a different tuner type." 128 | msgstr "Press LEFT / RIGHT to select a different tuner type." 129 | 130 | #: plugin/plugin.py:275 plugin/plugin.py:278 plugin/plugin.py:281 131 | msgid "Press OK to continue setting up this tuner or select a different tuner type." 132 | msgstr "Press OK to continue setting up this tuner or select a different tuner type." 133 | 134 | #: plugin/plugin.py:276 plugin/plugin.py:279 plugin/plugin.py:297 135 | #: plugin/plugin.py:312 136 | msgid "Press LEFT / RIGHT to select a different bouquet." 137 | msgstr "Press LEFT / RIGHT to select a different bouquet." 138 | 139 | #: plugin/plugin.py:277 140 | msgid "Debug mode to create logs." 141 | msgstr "Debug mode to create logs." 142 | 143 | #: plugin/plugin.py:282 144 | msgid "Press LEFT / RIGHT to set number of concurent streams." 145 | msgstr "Press LEFT / RIGHT to set number of concurent streams." 146 | 147 | #: plugin/plugin.py:285 148 | msgid "" 149 | "Please note: DVR feature in Plex / Emby is premire feature. For more information please refer to:\n" 150 | "https://www.plex.tv/features/plex-pass\n" 151 | "https://emby.media/premiere.html" 152 | msgstr "" 153 | "Please note: DVR feature in Plex / Emby is premire feature. For more information please refer to:\n" 154 | "https://www.plex.tv/features/plex-pass\n" 155 | "https://emby.media/premiere.html" 156 | 157 | #: plugin/plugin.py:286 158 | msgid "Press OK to continue setting up." 159 | msgstr "Press OK to continue setting up." 160 | 161 | #: plugin/plugin.py:289 162 | msgid "" 163 | "Please note: To use another tuner type in Plex you need to setup/have another server.\n" 164 | "Are you sure you want to continue?" 165 | msgstr "" 166 | "Please note: To use another tuner type in Plex you need to setup/have another server.\n" 167 | "Are you sure you want to continue?" 168 | 169 | #: plugin/plugin.py:300 plugin/plugin.py:315 170 | msgid "Press LEFT / RIGHT to enable or disable debug mode." 171 | msgstr "Press LEFT / RIGHT to enable or disable debug mode." 172 | 173 | #: plugin/plugin.py:317 174 | msgid "Delete" 175 | msgstr "Delete" 176 | 177 | #: plugin/plugin.py:325 178 | msgid "Do you really want to remove the files for this tuner type? Doing so will cause your DVR to be none functional." 179 | msgstr "Do you really want to remove the files for this tuner type? Doing so will cause your DVR to be none functional." 180 | 181 | #: plugin/plugin.py:336 182 | msgid "" 183 | "Files deleted. Please restart enigma2.\n" 184 | "\n" 185 | "Do you want to restart now?" 186 | msgstr "" 187 | "Files deleted. Please restart enigma2.\n" 188 | "\n" 189 | "Do you want to restart now?" 190 | 191 | #: plugin/plugin.py:357 192 | msgid "It seems you have already set up another tuner. Your server can only support one tuner type. To use this additional tuner type you will need to setup another server. Do you want to continue creating the files?" 193 | msgstr "It seems you have already set up another tuner. Your server can only support one tuner type. To use this additional tuner type you will need to setup another server. Do you want to continue creating the files?" 194 | 195 | #: plugin/plugin.py:377 196 | msgid "" 197 | "Files created. Please restart enigma2 and then you should be able to add this STB to your server.\n" 198 | "\n" 199 | "Do you want to restart now?" 200 | msgstr "" 201 | "Files created. Please restart enigma2 and then you should be able to add this STB to your server.\n" 202 | "\n" 203 | "Do you want to restart now?" 204 | 205 | #: plugin/plugin.py:395 206 | msgid "Really close without saving settings?" 207 | msgstr "Really close without saving settings?" 208 | 209 | #: plugin/plugin.py:446 210 | msgid "HR-Tuner Proxy" 211 | msgstr "HR-Tuner Proxy" 212 | 213 | #: plugin/plugin.py:454 plugin/plugin.py:455 plugin/plugin.py:456 214 | msgid "Setup the HR-Tuner Proxy server" 215 | msgstr "Setup the HR-Tuner Proxy server" 216 | 217 | -------------------------------------------------------------------------------- /plugin/locale/es/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Spanish translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: es\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/et/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Estonian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: et\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/fa/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Persian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: fa\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | 19 | msgid "About" 20 | msgstr "" 21 | 22 | msgid "Close" 23 | msgstr "" 24 | 25 | msgid "Create" 26 | msgstr "" 27 | 28 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 29 | msgstr "" 30 | 31 | msgid "Enigma2" 32 | msgstr "" 33 | 34 | msgid "Enigma2 STB" 35 | msgstr "" 36 | 37 | msgid "" 38 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 39 | "Do you want to do this now ?" 40 | msgstr "" 41 | 42 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 43 | msgstr "" 44 | 45 | msgid "" 46 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 47 | "\n" 48 | "Press OK to close" 49 | msgstr "" 50 | 51 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 52 | msgstr "" 53 | 54 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 55 | msgstr "" 56 | 57 | msgid "HR-Tuner Proxy for Enigma2" 58 | msgstr "" 59 | 60 | msgid "PlexDVR" 61 | msgstr "" 62 | 63 | msgid "" 64 | "Press LEFT / RIGHT to select a different tuner type.\n" 65 | "Press GREEN button to create your configuration files." 66 | msgstr "" 67 | 68 | msgid "" 69 | "Press LEFT / RIGHT to select a different tuner type.\n" 70 | "Press GREEN button to update your configuration files." 71 | msgstr "" 72 | 73 | msgid "" 74 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 75 | "Press GREEN button to create your configuration files." 76 | msgstr "" 77 | 78 | msgid "Tuner type to use." 79 | msgstr "" 80 | 81 | msgid "Update" 82 | msgstr "" 83 | 84 | msgid "" 85 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 86 | "\n" 87 | "Press OK to continue" 88 | msgstr "" 89 | -------------------------------------------------------------------------------- /plugin/locale/fi/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Finnish translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2021-12-12 13:37+0200\n" 12 | "Last-Translator: Orlandox\n" 13 | "Language-Team: none\n" 14 | "Language: fi\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | "X-Generator: Poedit 3.0\n" 20 | 21 | msgid "All" 22 | msgstr "Kaikki" 23 | 24 | msgid "Not set" 25 | msgstr "Ei asetettu" 26 | 27 | msgid "v%s " 28 | msgstr "v%s " 29 | 30 | msgid "About HR-Tuner Proxy" 31 | msgstr "Tietoja HR-Tuner Proxy:sta" 32 | 33 | msgid "Close" 34 | msgstr "Sulje" 35 | 36 | msgid "HR-Tuner Proxy for Enigma2 %s(c) 2018\n" 37 | msgstr "HR-Tuner Proxy Enigma2:lle %s(c) 2018\n" 38 | 39 | msgid "Application credits:\n" 40 | msgstr "Sovelluksen krediitit:\n" 41 | 42 | msgid "Sources credits:\n" 43 | msgstr "Lähteen krediitit:\n" 44 | 45 | msgid "Translation credits:\n" 46 | msgstr "Kännöksen krediitit:\n" 47 | 48 | msgid "In use" 49 | msgstr "Käytössä" 50 | 51 | msgid "Bouquet to use." 52 | msgstr "Käytettävä suosikkilista." 53 | 54 | msgid "Number of concurrent streams." 55 | msgstr "Samanaikaisten streamien määrä." 56 | 57 | msgid "Debug Mode." 58 | msgstr "Debug-moodi." 59 | 60 | msgid "Please note: Please now select a bouquet to use." 61 | msgstr "Huomio: Valitse käytettävä suosikkilista." 62 | 63 | msgid "" 64 | "Please note: You do not seem to have any channels setup for this tuner, " 65 | "please add some channels to Enigma2 or choose anther tuner type." 66 | msgstr "" 67 | "Huomio: Näyttää, että yhtään kanavaa ei ole määritetty tälle virittimelle. " 68 | "Lisää kanavia Enigma2:lle tai valitse eri viritintyyppi." 69 | 70 | msgid "Save" 71 | msgstr "Tallenna" 72 | 73 | msgid "Press OK to continue setting up this tuner." 74 | msgstr "Paina OK jatkaaksesi tämän virittimen asennusta." 75 | 76 | msgid "Press LEFT / RIGHT to select a different tuner type." 77 | msgstr "Paina VASEN / OIKEA valitaksesi eri viritintyypin." 78 | 79 | msgid "" 80 | "Press OK to continue setting up this tuner or select a different tuner type." 81 | msgstr "" 82 | "Paina OK jatkaaksesi tämän virittimen asennusta tai valitse toinen " 83 | "viritintyyppi." 84 | 85 | msgid "Press LEFT / RIGHT to select a different bouquet." 86 | msgstr "Paina VASEN / OIKEA valitaksesi eri suosikkilistan." 87 | 88 | msgid "Debug mode to create logs." 89 | msgstr "Debug-moodi lokien luontiin." 90 | 91 | msgid "Press LEFT / RIGHT to set number of concurent streams." 92 | msgstr "Paina VASEN / OIKEA asettaaksesi samanaikaisten streamien määrän." 93 | 94 | msgid "" 95 | "Please note: DVR feature in Plex / Emby is a premium / premiere feature. For " 96 | "more information please refer to:\n" 97 | "https://www.plex.tv/features/plex-pass\n" 98 | "https://emby.media/premiere.html" 99 | msgstr "" 100 | "Huomio: DVR-toiminto Plex:ssa / Emby:ssa on lisähintainen toiminto. " 101 | "Lisätietoja:\n" 102 | "https://www.plex.tv/features/plex-pass\n" 103 | "https://emby.media/premiere.html" 104 | 105 | msgid "Press OK to continue setting up." 106 | msgstr "Paina OK jatkaaksesi asennusta." 107 | 108 | msgid "" 109 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a " 110 | "different tuner type." 111 | msgstr "" 112 | "Paina OK jatkaaksesi tämään virittimen asennusta tai paina VASEN / OIKEA " 113 | "valitaksesi eri viritintyypin." 114 | 115 | msgid "" 116 | "Please note: To use another tuner type in Plex you need to setup/have " 117 | "another server.\n" 118 | "Are you sure you want to continue?" 119 | msgstr "" 120 | "Huomio: käyttääksesi toista viritintyyppiä Plex:ssa, täytyy asentaa/olla " 121 | "toinen serveri.\n" 122 | "Haluatko varmasti jatkaa?" 123 | 124 | msgid "Press LEFT / RIGHT to enable or disable debug mode." 125 | msgstr "Paina VASEN / OIKEA salliaksesi tai estääksesi debug-moodin." 126 | 127 | msgid "About" 128 | msgstr "Tietoja" 129 | 130 | msgid "Create" 131 | msgstr "Luo" 132 | 133 | msgid "" 134 | "Do you really want to remove the files for this tuner type?, doing so will " 135 | "cause the DVR in plex to be none functional." 136 | msgstr "" 137 | "Haluatko todella poistaa tämän viritintyypin tiedostot?Poistamisen " 138 | "seurauksena DVR Plexissä ei enää toimi." 139 | 140 | msgid "" 141 | "Files deleted. Please restart enigma2.\n" 142 | "\n" 143 | "Do you want to restart now?" 144 | msgstr "" 145 | "Tiedostot poistettu. Käynnistä Enigma2 uudelleen.\n" 146 | "\n" 147 | "Käynnistetäänkö uudelleen nyt?" 148 | 149 | msgid "BaseURL: " 150 | msgstr "Verkko-osoite: " 151 | 152 | msgid "FriendlyName: " 153 | msgstr "Malli: " 154 | 155 | msgid "Source: " 156 | msgstr "Lähde: " 157 | 158 | msgid "TunerCount: " 159 | msgstr "Virittimien määrä: " 160 | 161 | msgid "Channels: " 162 | msgstr "Kanavia: " 163 | 164 | msgid "Enigma2" 165 | msgstr "Enigma2" 166 | 167 | msgid "Enigma2 STB" 168 | msgstr "Enigma2 digiboksi" 169 | 170 | msgid "" 171 | "Files created, Please restart enigma2 and then you should be able to add " 172 | "this STB to Plex DVR.\n" 173 | "Do you want to do this now ?" 174 | msgstr "" 175 | "Tiedostot luotu, käynnistä Enigma2 uudelleen, jonka jälkeen voit lisätä " 176 | "tämän digiboksin Plex DVR:iin.\n" 177 | "Haluatko tehdä sen nyt ?" 178 | 179 | msgid "" 180 | "It seems you have already setup on another tuner, As Plex Server can only " 181 | "support one tuner type, to use this additional tuner type you will need to " 182 | "setup a 2nd Plex Server, do you want to continue creating the files?" 183 | msgstr "" 184 | "Näyttää, että olet jo tehnyt asetukset toiselle virittimelle, Plex Server " 185 | "tukee vain yhtä viritintyyppiä, käyttääksesi tätä lisäviritintä, täytyy " 186 | "sinun määritellä toinen Plex Server. Haluatko jatkaa luomalla tiedostot ?" 187 | 188 | msgid "" 189 | "No IP address found, please make sure you are connected to your LAN via " 190 | "ethernet, wifi is not supported at this time.\n" 191 | "\n" 192 | "Press OK to close" 193 | msgstr "" 194 | "IP-osoitetta ei löydy, varmista, että olet kytkeytynyt LAN-yhteydellä " 195 | "ethernethiin. WiFi ei ole tuettu tällä hetkellä.\n" 196 | "\n" 197 | "Paina OK sulkeaksesi" 198 | 199 | msgid "" 200 | "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex " 201 | "Server, are you sure you want to continue?" 202 | msgstr "" 203 | "Huomio: Käyttääksesi toista viritintyyppiä, täytyy määrittää/olla toinen " 204 | "Plex Server. Haluatko varmasti jatkaa ?" 205 | 206 | msgid "" 207 | "Please note: To use the DVR feature in Plex, you need to be a Plex Pass " 208 | "user. For more information about Plex Pass see https://www.plex.tv/features/" 209 | "plex-pass" 210 | msgstr "" 211 | "Huomio: Käyttääksesi DVR-toimintoa Plexissä, täytyy sinun olla Plex Pass -" 212 | "käyttäjä. Lisätietoja Plex Pass:sta, katso https://www.plex.tv/features/" 213 | "plex-pass" 214 | 215 | msgid "HR-Tuner Proxy for Enigma2" 216 | msgstr "HR-Tuner Proxy Enigma2:lle" 217 | 218 | msgid "PlexDVR" 219 | msgstr "PlexDVR" 220 | 221 | msgid "" 222 | "Press LEFT / RIGHT to select a different tuner type.\n" 223 | "Press GREEN button to create your configuration files." 224 | msgstr "" 225 | "Paina VASEN / OIKEA valitaksesi eri viritintyypin.\n" 226 | "Paina VIHREÄÄ näppäintä luodaksesi konfiguraatiotiedostot." 227 | 228 | msgid "" 229 | "Press LEFT / RIGHT to select a different tuner type.\n" 230 | "Press GREEN button to update your configuration files." 231 | msgstr "" 232 | "Paina VASEN / OIKEA valitaksesi eri viritintyypin.\n" 233 | "Paina VIHREÄÄ näppäintä päivittääksesi konfiguraatiotiedostot." 234 | 235 | msgid "" 236 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a " 237 | "different tuner type.\n" 238 | "Press GREEN button to create your configuration files." 239 | msgstr "" 240 | "Paina OK jatkaaksesi tämän virittimen asennusta tai paina VASEN / OIKEA " 241 | "valitaksesi eri viritintyypin.\n" 242 | "Paina VIHREÄÄ näppäintä luodaksesi konfiguraatiotiedostot." 243 | 244 | msgid "Tuner type to use." 245 | msgstr "Käytettävä viritintyyppi." 246 | 247 | msgid "Update" 248 | msgstr "Päivitä" 249 | 250 | msgid "" 251 | "WARNING: It seems you have a single tuner box, if the box is not left in " 252 | "Standby your Plex recordings WILL fail.\n" 253 | "\n" 254 | "Press OK to continue" 255 | msgstr "" 256 | "VAROITUS: Näyttää, että käytössä on yhden virittimen boksi. Plex-" 257 | "tallennukset epäonnistuvat, jos boksia ei jätetä valmiustilaan.\n" 258 | "\n" 259 | "Paina OK jatkaaksesi" 260 | 261 | msgid "Setup the HR-Tuner Proxy server" 262 | msgstr "HR-Tuner Proxyn Asetukset" 263 | 264 | msgid "Antenna" 265 | msgstr "Antenni" 266 | 267 | msgid "Satellite" 268 | msgstr "Satelliitti" 269 | 270 | msgid "Multi" 271 | msgstr "Monivalinta" 272 | -------------------------------------------------------------------------------- /plugin/locale/fr/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # French translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: fr\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/fy/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Western Frisian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: fy\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | 19 | msgid "About" 20 | msgstr "" 21 | 22 | msgid "Close" 23 | msgstr "" 24 | 25 | msgid "Create" 26 | msgstr "" 27 | 28 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 29 | msgstr "" 30 | 31 | msgid "Enigma2" 32 | msgstr "" 33 | 34 | msgid "Enigma2 STB" 35 | msgstr "" 36 | 37 | msgid "" 38 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 39 | "Do you want to do this now ?" 40 | msgstr "" 41 | 42 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 43 | msgstr "" 44 | 45 | msgid "" 46 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 47 | "\n" 48 | "Press OK to close" 49 | msgstr "" 50 | 51 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 52 | msgstr "" 53 | 54 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 55 | msgstr "" 56 | 57 | msgid "HR-Tuner Proxy for Enigma2" 58 | msgstr "" 59 | 60 | msgid "PlexDVR" 61 | msgstr "" 62 | 63 | msgid "" 64 | "Press LEFT / RIGHT to select a different tuner type.\n" 65 | "Press GREEN button to create your configuration files." 66 | msgstr "" 67 | 68 | msgid "" 69 | "Press LEFT / RIGHT to select a different tuner type.\n" 70 | "Press GREEN button to update your configuration files." 71 | msgstr "" 72 | 73 | msgid "" 74 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 75 | "Press GREEN button to create your configuration files." 76 | msgstr "" 77 | 78 | msgid "Tuner type to use." 79 | msgstr "" 80 | 81 | msgid "Update" 82 | msgstr "" 83 | 84 | msgid "" 85 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 86 | "\n" 87 | "Press OK to continue" 88 | msgstr "" 89 | -------------------------------------------------------------------------------- /plugin/locale/he/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Hebrew translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: he\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/hr/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Croatian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: hr\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/hu/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Hungarian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: hu\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/is/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Icelandic translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: is\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | 19 | msgid "About" 20 | msgstr "" 21 | 22 | msgid "Close" 23 | msgstr "" 24 | 25 | msgid "Create" 26 | msgstr "" 27 | 28 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 29 | msgstr "" 30 | 31 | msgid "Enigma2" 32 | msgstr "" 33 | 34 | msgid "Enigma2 STB" 35 | msgstr "" 36 | 37 | msgid "" 38 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 39 | "Do you want to do this now ?" 40 | msgstr "" 41 | 42 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 43 | msgstr "" 44 | 45 | msgid "" 46 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 47 | "\n" 48 | "Press OK to close" 49 | msgstr "" 50 | 51 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 52 | msgstr "" 53 | 54 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 55 | msgstr "" 56 | 57 | msgid "HR-Tuner Proxy for Enigma2" 58 | msgstr "" 59 | 60 | msgid "PlexDVR" 61 | msgstr "" 62 | 63 | msgid "" 64 | "Press LEFT / RIGHT to select a different tuner type.\n" 65 | "Press GREEN button to create your configuration files." 66 | msgstr "" 67 | 68 | msgid "" 69 | "Press LEFT / RIGHT to select a different tuner type.\n" 70 | "Press GREEN button to update your configuration files." 71 | msgstr "" 72 | 73 | msgid "" 74 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 75 | "Press GREEN button to create your configuration files." 76 | msgstr "" 77 | 78 | msgid "Tuner type to use." 79 | msgstr "" 80 | 81 | msgid "Update" 82 | msgstr "" 83 | 84 | msgid "" 85 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 86 | "\n" 87 | "Press OK to continue" 88 | msgstr "" 89 | -------------------------------------------------------------------------------- /plugin/locale/it/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Italian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: it\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/lt/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Lithuanian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: lt\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/lv/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Latvian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: lv\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/nb/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Norwegian Bokmal translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: nb\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/nl/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR ORGANIZATION 3 | # FIRST AUTHOR , YEAR. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 8 | "POT-Creation-Date: 2018-02-11 15:24+GMT\n" 9 | "PO-Revision-Date: 2018-02-11 15:35+0000\n" 10 | "Last-Translator: \n" 11 | "Language-Team: Rob van der Does\n" 12 | "Language: nl\n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=UTF-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "Generated-By: pygettext.py 1.5\n" 17 | "X-Generator: Poedit 2.0.6\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | #: plugin/__init__.py:67 21 | msgid "All" 22 | msgstr "Alle" 23 | 24 | #: plugin/__init__.py:67 25 | msgid "Not set" 26 | msgstr "Niet ingesteld" 27 | 28 | #: plugin/__init__.py:75 29 | msgid "v%s " 30 | msgstr "v%s " 31 | 32 | #: plugin/about.py:25 plugin/about.py:37 33 | msgid "About HR-Tuner Proxy" 34 | msgstr "Over HR-Tuner Proxy" 35 | 36 | #: plugin/about.py:48 plugin/plugin.py:162 37 | msgid "Close" 38 | msgstr "Sluiten" 39 | 40 | #: plugin/about.py:51 41 | msgid "HR-Tuner Proxy for Enigma2 %s(c) 2018\n" 42 | msgstr "HR-Tuner Proxy voor Enigma2 %s(c) 2018\n" 43 | 44 | #: plugin/about.py:54 45 | msgid "Application credits:\n" 46 | msgstr "Applicatie dankzij:\n" 47 | 48 | #: plugin/about.py:58 49 | msgid "Sources credits:\n" 50 | msgstr "Bronnen dankzij:\n" 51 | 52 | #: plugin/about.py:61 53 | msgid "Translation credits:\n" 54 | msgstr "Vertaling dankzij:\n" 55 | 56 | #: plugin/getDeviceInfo.py:62 57 | msgid "Enigma2" 58 | msgstr "Enigma2" 59 | 60 | #: plugin/getDeviceInfo.py:91 61 | msgid "In use" 62 | msgstr "In gebruik" 63 | 64 | #: plugin/plugin.py:105 plugin/plugin.py:125 65 | msgid "HR-Tuner Proxy for Enigma2" 66 | msgstr "HR-Tuner Proxy voor Enigma2" 67 | 68 | #: plugin/plugin.py:174 69 | msgid "About" 70 | msgstr "Over" 71 | 72 | #: plugin/plugin.py:189 73 | msgid "" 74 | "WARNING: No IP address found. Please make sure you are connected to your LAN " 75 | "via ethernet or Wi-Fi.\n" 76 | "\n" 77 | "Press OK to exit." 78 | msgstr "" 79 | "WAARSCHUWING: Geen IP-adres gevonden. Stel zeker dat u met internet " 80 | "verbonden bent via LAN of WiFi.\n" 81 | "\n" 82 | "Druk op \"OK\" om verder te gaan." 83 | 84 | #: plugin/plugin.py:200 plugin/plugin.py:216 plugin/plugin.py:271 85 | #: plugin/plugin.py:292 plugin/plugin.py:307 86 | msgid "Tuner type to use." 87 | msgstr "Te gebruiken tunertype." 88 | 89 | #: plugin/plugin.py:217 plugin/plugin.py:274 plugin/plugin.py:295 90 | #: plugin/plugin.py:310 91 | msgid "Bouquet to use." 92 | msgstr "Te gebruiken boeket." 93 | 94 | #: plugin/plugin.py:219 95 | msgid "Number of concurrent streams." 96 | msgstr "Aantal gelijktijdige streams." 97 | 98 | #: plugin/plugin.py:220 plugin/plugin.py:298 plugin/plugin.py:313 99 | msgid "Debug Mode." 100 | msgstr "Debug Modus." 101 | 102 | #: plugin/plugin.py:256 103 | msgid "Please note: Please now select a bouquet to use." 104 | msgstr "Let op: nu moet u een boeket kiezen." 105 | 106 | #: plugin/plugin.py:258 107 | msgid "" 108 | "Please note: You do not seem to have any channels setup for this tuner, " 109 | "please add some channels to Enigma2 or choose anther tuner type." 110 | msgstr "" 111 | "Let op: het lijkt er op dat u voor deze tuner geen kanalen heeft ingesteld. " 112 | "Voeg kanalen toe in Enigma2 of kies een ander tunertype." 113 | 114 | #: plugin/plugin.py:264 115 | msgid "" 116 | "WARNING: It seems you have a single tuner box. If the box is not left in " 117 | "standby your recordings WILL fail." 118 | msgstr "" 119 | "WAARSCHUWING: Het lijkt er op, dat u een ontvanger met slechts één tuner " 120 | "gebruikt. Als u de box niet in stand-by zet, zullen uw opnames mislukken." 121 | 122 | #: plugin/plugin.py:265 123 | msgid "Press OK to continue setting up this tuner." 124 | msgstr "Druk op \"OK\" om door te gaan met het instellen van deze tuner." 125 | 126 | #: plugin/plugin.py:268 plugin/plugin.py:303 plugin/plugin.py:316 127 | msgid "Save" 128 | msgstr "Opslaan" 129 | 130 | #: plugin/plugin.py:272 131 | msgid "" 132 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a " 133 | "different tuner type." 134 | msgstr "" 135 | "Druk op \"OK\" om door te gaan met het instellen van deze tuner of druk op " 136 | "LINKS/RECHTS om een ander tunertype te kiezen." 137 | 138 | #: plugin/plugin.py:273 plugin/plugin.py:293 plugin/plugin.py:308 139 | msgid "Press LEFT / RIGHT to select a different tuner type." 140 | msgstr "Druk op LINKS/RECHTS om een ander tunertype te selecteren." 141 | 142 | #: plugin/plugin.py:275 plugin/plugin.py:278 plugin/plugin.py:281 143 | msgid "" 144 | "Press OK to continue setting up this tuner or select a different tuner type." 145 | msgstr "" 146 | "Druk op \"OK\" om door te gaan met het instellen van deze tuner of kies een " 147 | "ander type tuner." 148 | 149 | #: plugin/plugin.py:276 plugin/plugin.py:279 plugin/plugin.py:297 150 | #: plugin/plugin.py:312 151 | msgid "Press LEFT / RIGHT to select a different bouquet." 152 | msgstr "Gebruik LINKS/RECHTS om een ander boeket te kiezen." 153 | 154 | #: plugin/plugin.py:277 155 | msgid "Debug mode to create logs." 156 | msgstr "Debug modus om logs te maken." 157 | 158 | #: plugin/plugin.py:282 159 | msgid "Press LEFT / RIGHT to set number of concurent streams." 160 | msgstr "" 161 | "Gebruik LINKS/RECHTS om het aantal gelijktijdige streams in te stellen." 162 | 163 | #: plugin/plugin.py:285 164 | msgid "" 165 | "Please note: DVR feature in Plex / Emby is premire feature. For more " 166 | "information please refer to:\n" 167 | "https://www.plex.tv/features/plex-pass\n" 168 | "https://emby.media/premiere.html" 169 | msgstr "" 170 | "Let op: PVR-functionaliteit in Plex / Emby is een premium functie. Voor meer " 171 | "informatie zie:\n" 172 | "https://www.plex.tv/features/plex-pass\n" 173 | "https://emby.media/premiere.html" 174 | 175 | #: plugin/plugin.py:286 176 | msgid "Press OK to continue setting up." 177 | msgstr "Druk op \"OK\" om in te stellen." 178 | 179 | #: plugin/plugin.py:289 180 | msgid "" 181 | "Please note: To use another tuner type in Plex you need to setup/have " 182 | "another server.\n" 183 | "Are you sure you want to continue?" 184 | msgstr "" 185 | "Let op: om een ander tunertype te gebruiken, moet u een andere server " 186 | "instellen/hebben.\n" 187 | "Weet u zeker dat u wilt doorgaan?" 188 | 189 | #: plugin/plugin.py:300 plugin/plugin.py:315 190 | msgid "Press LEFT / RIGHT to enable or disable debug mode." 191 | msgstr "Gebruik LINKS/RECHTS om de debug modus te (de)activeren." 192 | 193 | #: plugin/plugin.py:317 194 | msgid "Delete" 195 | msgstr "Verwijder" 196 | 197 | #: plugin/plugin.py:325 198 | msgid "" 199 | "Do you really want to remove the files for this tuner type? Doing so will " 200 | "cause your DVR to be none functional." 201 | msgstr "" 202 | "Wilt u echt de bestanden voor dit tunertype verwijderen? Als u dat doet, " 203 | "wordt uw PVR onbruikbaar." 204 | 205 | #: plugin/plugin.py:336 206 | msgid "" 207 | "Files deleted. Please restart enigma2.\n" 208 | "\n" 209 | "Do you want to restart now?" 210 | msgstr "" 211 | "Bestanden gewist. U moet nu Enigma2 herstarten.\n" 212 | "\n" 213 | "Wilt u nu herstarten?" 214 | 215 | #: plugin/plugin.py:357 216 | msgid "" 217 | "It seems you have already set up another tuner. Your server can only support " 218 | "one tuner type. To use this additional tuner type you will need to setup " 219 | "another server. Do you want to continue creating the files?" 220 | msgstr "" 221 | "Het lijkt er op dat u al een andere tuner heeft ingesteld. Uw server kan " 222 | "slechts één tunertype ondersteunen. Om een aanvullende tuner te gebruiken, " 223 | "zult u een andere server moeten gebruiken.\n" 224 | "Wilt u doorgaan met het aanmaken van de bestanden?" 225 | 226 | #: plugin/plugin.py:377 227 | msgid "" 228 | "Files created. Please restart enigma2 and then you should be able to add " 229 | "this STB to your server.\n" 230 | "\n" 231 | "Do you want to restart now?" 232 | msgstr "" 233 | "Bestanden aangemaakt. Na een Enigma2 herstart kunt u deze STB aan uw server " 234 | "toevoegen.\n" 235 | "\n" 236 | "Wilt u nu herstarten?" 237 | 238 | #: plugin/plugin.py:395 239 | msgid "Really close without saving settings?" 240 | msgstr "Echt afsluiten zonder op te slaan?" 241 | 242 | #: plugin/plugin.py:446 243 | msgid "HR-Tuner Proxy" 244 | msgstr "HR-Tuner Proxy" 245 | 246 | #: plugin/plugin.py:454 plugin/plugin.py:455 plugin/plugin.py:456 247 | msgid "Setup the HR-Tuner Proxy server" 248 | msgstr "De HR-Tuner Proxy server instellen" 249 | -------------------------------------------------------------------------------- /plugin/locale/no/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Norwegian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: no\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/pl/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Polish translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: pl\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/pt/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Portuguese translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: pt\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/pt_BR/LC_MESSAGES/HRTunerProxy.po: -------------------------------------------------------------------------------- 1 | # Portuguese translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: pt_BR\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/ro/LC_MESSAGES/PlexDVRAPI.po: -------------------------------------------------------------------------------- 1 | # Romanian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: ro\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/ru/LC_MESSAGES/PlexDVRAPI.po: -------------------------------------------------------------------------------- 1 | # Russian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: ru\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/sk/LC_MESSAGES/PlexDVRAPI.po: -------------------------------------------------------------------------------- 1 | # Slovak translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: sk\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/sl/LC_MESSAGES/PlexDVRAPI.po: -------------------------------------------------------------------------------- 1 | # Slovenian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: sl\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/sr/LC_MESSAGES/PlexDVRAPI.po: -------------------------------------------------------------------------------- 1 | # Serbian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: sr\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/sv/LC_MESSAGES/PlexDVRAPI.po: -------------------------------------------------------------------------------- 1 | # Swedish translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: sv\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/th/LC_MESSAGES/PlexDVRAPI.po: -------------------------------------------------------------------------------- 1 | # Thai translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: th\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | 19 | msgid "About" 20 | msgstr "" 21 | 22 | msgid "Close" 23 | msgstr "" 24 | 25 | msgid "Create" 26 | msgstr "" 27 | 28 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 29 | msgstr "" 30 | 31 | msgid "Enigma2" 32 | msgstr "" 33 | 34 | msgid "Enigma2 STB" 35 | msgstr "" 36 | 37 | msgid "" 38 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 39 | "Do you want to do this now ?" 40 | msgstr "" 41 | 42 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 43 | msgstr "" 44 | 45 | msgid "" 46 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 47 | "\n" 48 | "Press OK to close" 49 | msgstr "" 50 | 51 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 52 | msgstr "" 53 | 54 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 55 | msgstr "" 56 | 57 | msgid "HR-Tuner Proxy for Enigma2" 58 | msgstr "" 59 | 60 | msgid "PlexDVR" 61 | msgstr "" 62 | 63 | msgid "" 64 | "Press LEFT / RIGHT to select a different tuner type.\n" 65 | "Press GREEN button to create your configuration files." 66 | msgstr "" 67 | 68 | msgid "" 69 | "Press LEFT / RIGHT to select a different tuner type.\n" 70 | "Press GREEN button to update your configuration files." 71 | msgstr "" 72 | 73 | msgid "" 74 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 75 | "Press GREEN button to create your configuration files." 76 | msgstr "" 77 | 78 | msgid "Tuner type to use." 79 | msgstr "" 80 | 81 | msgid "Update" 82 | msgstr "" 83 | 84 | msgid "" 85 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 86 | "\n" 87 | "Press OK to continue" 88 | msgstr "" 89 | -------------------------------------------------------------------------------- /plugin/locale/tr/LC_MESSAGES/PlexDVRAPI.po: -------------------------------------------------------------------------------- 1 | # Turkish translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: tr\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/locale/uk/LC_MESSAGES/PlexDVRAPI.po: -------------------------------------------------------------------------------- 1 | # Ukrainian translations for enigma2-openvix-plugins package. 2 | # Copyright (C) 2017 THE enigma2-openvix-plugins'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the enigma2-openvix-plugins package. 4 | # Automatically generated, 2017. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: enigma2-openvix-plugins 1.0\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-07-06 12:43+0100\n" 11 | "PO-Revision-Date: 2017-05-24 19:38+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: uk\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" 19 | 20 | msgid "About" 21 | msgstr "" 22 | 23 | msgid "Close" 24 | msgstr "" 25 | 26 | msgid "Create" 27 | msgstr "" 28 | 29 | msgid "Do you really want to remove the files for this tuner type?, doing so will cause the DVR in plex to be none functional." 30 | msgstr "" 31 | 32 | msgid "Enigma2" 33 | msgstr "" 34 | 35 | msgid "Enigma2 STB" 36 | msgstr "" 37 | 38 | msgid "" 39 | "Files created, Please restart enigma2 and then you should be able to add this STB to Plex DVR.\n" 40 | "Do you want to do this now ?" 41 | msgstr "" 42 | 43 | msgid "It seems you have already setup on another tuner, As Plex Server can only support one tuner type, to use this additional tuner type you will need to setup a 2nd Plex Server, do you want to continue creating the files?" 44 | msgstr "" 45 | 46 | msgid "" 47 | "No IP address found, please make sure you are connected to your LAN via ethernet, wifi is not supported at this time.\n" 48 | "\n" 49 | "Press OK to close" 50 | msgstr "" 51 | 52 | msgid "Please note: To use a 2nd tuner type you need to setup/have a 2nd Plex Server, are you sure you want to continue?" 53 | msgstr "" 54 | 55 | msgid "Please note: To use the DVR feature in Plex, you need to be a Plex Pass user. For more information about Plex Pass see https://www.plex.tv/features/plex-pass" 56 | msgstr "" 57 | 58 | msgid "HR-Tuner Proxy for Enigma2" 59 | msgstr "" 60 | 61 | msgid "PlexDVR" 62 | msgstr "" 63 | 64 | msgid "" 65 | "Press LEFT / RIGHT to select a different tuner type.\n" 66 | "Press GREEN button to create your configuration files." 67 | msgstr "" 68 | 69 | msgid "" 70 | "Press LEFT / RIGHT to select a different tuner type.\n" 71 | "Press GREEN button to update your configuration files." 72 | msgstr "" 73 | 74 | msgid "" 75 | "Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.\n" 76 | "Press GREEN button to create your configuration files." 77 | msgstr "" 78 | 79 | msgid "Tuner type to use." 80 | msgstr "" 81 | 82 | msgid "Update" 83 | msgstr "" 84 | 85 | msgid "" 86 | "WARNING: It seems you have a single tuner box, if the box is not left in Standby your Plex recordings WILL fail.\n" 87 | "\n" 88 | "Press OK to continue" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /plugin/plugin-hd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenViX/HRTunerProxy/30d0f9b66c186278d32a52a01a3cb6d63807042c/plugin/plugin-hd.png -------------------------------------------------------------------------------- /plugin/plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenViX/HRTunerProxy/30d0f9b66c186278d32a52a01a3cb6d63807042c/plugin/plugin.png -------------------------------------------------------------------------------- /plugin/plugin.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | from __future__ import absolute_import 3 | 4 | import threading 5 | import string 6 | import random 7 | import json 8 | from sys import modules 9 | from os import path, remove, mkdir, rename, listdir, rmdir 10 | from shutil import rmtree 11 | 12 | from enigma import getDesktop, eDVBResourceManager 13 | 14 | from Components.ActionMap import ActionMap 15 | from Components.Button import Button 16 | from Components.config import config, configfile, ConfigSelection, getConfigListEntry 17 | from Components.ConfigList import ConfigListScreen 18 | from Components.Label import Label 19 | from Components.Pixmap import Pixmap 20 | from Components.Sources.StaticText import StaticText 21 | 22 | from Plugins.Plugin import PluginDescriptor 23 | from Screens.Screen import Screen 24 | from Screens.MessageBox import MessageBox 25 | 26 | from . import _, tunerTypes, tunerfolders, tunerports, getIP, logger, isDreamOS 27 | from .about import HRTunerProxy_About 28 | from .getLineup import getlineup 29 | from .getDeviceInfo import getdeviceinfo 30 | from .ssdp import SSDPServer 31 | from .server import server 32 | 33 | BaseURL = {} 34 | FriendlyName = {} 35 | TunerCount = {} 36 | Source = {} 37 | NoOfChannels = {} 38 | choicelist = [] 39 | 40 | 41 | def TunerInfoDebug(type=None): 42 | if type: 43 | logger.info('%s' % str(BaseURL[type]).replace('\n', '')) 44 | logger.info('%s' % str(FriendlyName[type]).replace('\n', '')) 45 | logger.info('%s' % str(Source[type]).replace('\n', '')) 46 | logger.info('%s' % str(TunerCount[type]).replace('\n', '')) 47 | logger.info('%s' % str(NoOfChannels[type]).replace('\n\n', '')) 48 | logger.info('Bouquet %s' % config.hrtunerproxy.bouquets_list[type].value) 49 | else: 50 | for type in tunerTypes: 51 | logger.info('%s' % str(BaseURL[type]).replace('\n', '')) 52 | logger.info('%s' % str(FriendlyName[type]).replace('\n', '')) 53 | logger.info('%s' % str(Source[type]).replace('\n', '')) 54 | logger.info('%s' % str(TunerCount[type]).replace('\n', '')) 55 | logger.info('%s' % str(NoOfChannels[type]).replace('\n\n', '')) 56 | logger.info('Bouquet %s' % config.hrtunerproxy.bouquets_list[type].value) 57 | 58 | 59 | def TunerInfo(type=None): 60 | if type: 61 | discover = getdeviceinfo.discoverdata(type) 62 | nochl = getlineup.noofchannels(type, config.hrtunerproxy.bouquets_list[type].value) 63 | BaseURL[type] = 'BaseURL: %s\n' % str(discover["BaseURL"]) 64 | FriendlyName[type] = 'FriendlyName: %s\n' % str(discover["FriendlyName"]) 65 | TunerCount[type] = 'TunerCount: %s\n' % str(getdeviceinfo.tunercount(type)) if type != 'iptv' else 'TunerCount: %s\n' % str(config.hrtunerproxy.iptv_tunercount.value) 66 | Source[type] = 'Source: %s\n' % str(tunerfolders[type]).title() if type != 'iptv' else 'Source: %s\n' % str(tunerfolders[type]).upper() 67 | NoOfChannels[type] = 'Channels: %s\n\n' % str(nochl) 68 | 69 | else: 70 | global choicelist 71 | choicelist = [] 72 | for type in tunerTypes: 73 | discover = getdeviceinfo.discoverdata(type) 74 | nochl = getlineup.noofchannels(type, 'all') 75 | BaseURL[type] = 'BaseURL: %s\n' % str(discover["BaseURL"]) 76 | FriendlyName[type] = 'FriendlyName: %s\n' % str(discover["FriendlyName"]) 77 | TunerCount[type] = 'TunerCount: %s\n' % str(getdeviceinfo.tunercount(type)) if type != 'iptv' else 'TunerCount: %s\n' % str(config.hrtunerproxy.iptv_tunercount.value) 78 | Source[type] = 'Source: %s\n' % str(tunerfolders[type]).title() if type != 'iptv' else 'Source: %s\n' % str(tunerfolders[type]).upper() 79 | NoOfChannels[type] = 'Channels: %s\n\n' % str(nochl) 80 | 81 | 82 | if config.hrtunerproxy.debug.value: 83 | TunerInfo() 84 | TunerInfoDebug() 85 | 86 | for type in tunerTypes: 87 | discover = getdeviceinfo.discoverdata(type) 88 | if getdeviceinfo.tunercount(type) > 0: 89 | choicelist.append((type, str(tunerfolders[type]).title())) 90 | 91 | config.hrtunerproxy.type = ConfigSelection(choices=choicelist) 92 | if config.hrtunerproxy.debug.value: 93 | logger.info('Using Tuner: %s' % str(config.hrtunerproxy.type.value)) 94 | 95 | tunerTypes = [] 96 | for type in config.hrtunerproxy.type.choices.choices: 97 | tunerTypes.append(type[0]) 98 | 99 | 100 | class HRTunerProxy_Setup(ConfigListScreen, Screen): 101 | instance = None 102 | if isDreamOS: # check if DreamOS image 103 | skin = "%s/skins/dreamos_main.xml" % (path.dirname(modules[__name__].__file__)) 104 | else: 105 | skin = "%s/skins/main.xml" % (path.dirname(modules[__name__].__file__)) 106 | f = open(skin, "r") 107 | skin = f.read() 108 | f.close() 109 | 110 | def __init__(self, session, menu_path=""): 111 | Screen.__init__(self, session) 112 | if hasattr(config.usage, 'show_menupath'): 113 | screentitle = _("HR-Tuner Proxy for Enigma2") 114 | self.menu_path = menu_path 115 | if config.usage.show_menupath.value == 'large': 116 | self.menu_path += screentitle 117 | title = self.menu_path 118 | self["menu_path_compressed"] = StaticText("") 119 | self.menu_path += ' / ' 120 | elif config.usage.show_menupath.value == 'small': 121 | title = screentitle 122 | condtext = "" 123 | if self.menu_path and not self.menu_path.endswith(' / '): 124 | condtext = self.menu_path + " >" 125 | elif self.menu_path: 126 | condtext = self.menu_path[:-3] + " >" 127 | self["menu_path_compressed"] = StaticText(condtext) 128 | self.menu_path += screentitle + ' / ' 129 | else: 130 | title = screentitle 131 | self["menu_path_compressed"] = StaticText("") 132 | else: 133 | title = _("HR-Tuner Proxy for Enigma2") 134 | self.menu_path = "" 135 | Screen.setTitle(self, title) 136 | 137 | self.savedval = config.hrtunerproxy.type.value 138 | 139 | self.onChangedEntry = [] 140 | self.list = [] 141 | ConfigListScreen.__init__(self, self.list, session=session, on_change=self.onChange) 142 | 143 | self["information"] = Label() 144 | self["hinttext"] = Label() 145 | self["actions"] = ActionMap(['ColorActions', 'OkCancelActions', 'DirectionActions'], 146 | { 147 | "cancel": self.keyCancel, 148 | "red": self.keyCancel, 149 | "green": self.keySave, 150 | "yellow": self.cleanfiles, 151 | "blue": self.about 152 | }, -2) 153 | self["actions"].setEnabled(False) 154 | 155 | self["okaction"] = ActionMap(['OkCancelActions'], 156 | { 157 | "ok": self.ok, 158 | "cancel": self.keyCancel, 159 | }, -2) 160 | self["okaction"].setEnabled(False) 161 | 162 | self["closeaction"] = ActionMap(['OkCancelActions', 'ColorActions'], 163 | { 164 | "ok": self.keyCancel, 165 | "cancel": self.keyCancel, 166 | "red": self.keyCancel 167 | }, -2) 168 | self["closeaction"].setEnabled(False) 169 | 170 | self["key_red"] = Button(_("Close")) 171 | self["key_red"].hide() 172 | self["button_red"] = Pixmap() 173 | self["button_red"].hide() 174 | self["key_green"] = Button() 175 | self["key_green"].hide() 176 | self["button_green"] = Pixmap() 177 | self["button_green"].hide() 178 | self["key_yellow"] = Button() 179 | self["key_yellow"].hide() 180 | self["button_yellow"] = Pixmap() 181 | self["button_yellow"].hide() 182 | self["key_blue"] = Button(_("About")) 183 | self["button_blue"] = Pixmap() 184 | 185 | self.firstrun = True 186 | 187 | assert HRTunerProxy_Setup.instance is None, "class is a singleton class and just one instance of this class is allowed!" 188 | HRTunerProxy_Setup.instance = self 189 | 190 | self.onLayoutFinish.append(self.LayoutFinish) 191 | self.onClose.append(self.__onClose) 192 | 193 | def LayoutFinish(self): 194 | print('LayoutFinish') 195 | self.createmenu() 196 | if getIP() == '0.0.0.0': 197 | self["information"].setText(_('WARNING: No IP address found. Please make sure you are connected to your LAN via ethernet or Wi-Fi.\n\nPress OK to exit.')) 198 | self["hinttext"].hide() 199 | self["key_red"].show() 200 | self["button_red"].show() 201 | self["closeaction"].setEnabled(True) 202 | else: 203 | self.populate() 204 | 205 | def onChange(self): 206 | print('onChange') 207 | currentconfig = self["config"].getCurrent()[0] 208 | if currentconfig == _('Tuner type to use.'): 209 | self.createmenu() 210 | self.populate() 211 | 212 | def selectionChanged(self): 213 | print('selectionChanged') 214 | self.populate() 215 | 216 | def __onClose(self): 217 | HRTunerProxy_Setup.instance = None 218 | 219 | def about(self): 220 | self.session.open(HRTunerProxy_About, self.menu_path) 221 | 222 | def createmenu(self): 223 | self.list = [] 224 | self.list.append(getConfigListEntry(_('Tuner type to use.'), config.hrtunerproxy.type)) 225 | self.list.append(getConfigListEntry(_('Bouquet to use.'), config.hrtunerproxy.bouquets_list[config.hrtunerproxy.type.value])) 226 | if config.hrtunerproxy.type.value == 'iptv': 227 | self.list.append(getConfigListEntry(_('Number of concurrent streams.'), config.hrtunerproxy.iptv_tunercount)) 228 | self.list.append(getConfigListEntry(_('Debug Mode.'), config.hrtunerproxy.debug)) 229 | self["config"].list = self.list 230 | self["config"].l.setList(self.list) 231 | if not self.selectionChanged in self["config"].onSelectionChanged: 232 | self["config"].onSelectionChanged.append(self.selectionChanged) 233 | 234 | def populate(self, answer=None): 235 | print('populate') 236 | setup_exists = False 237 | self["actions"].setEnabled(False) 238 | self["closeaction"].setEnabled(False) 239 | self["key_red"].hide() 240 | self["key_green"].hide() 241 | self["key_yellow"].hide() 242 | self["key_blue"].hide() 243 | self["button_red"].hide() 244 | self["button_green"].hide() 245 | self["button_yellow"].hide() 246 | self["button_blue"].hide() 247 | 248 | type = config.hrtunerproxy.type.value 249 | currentconfig = self["config"].getCurrent()[0] 250 | 251 | TunerInfo(type) 252 | if config.hrtunerproxy.debug.value: 253 | TunerInfoDebug(type) 254 | 255 | self.label = (BaseURL[type] + FriendlyName[type] + Source[type] + TunerCount[type] + NoOfChannels[type]) 256 | 257 | for types in tunerTypes: 258 | if path.exists('/etc/enigma2/%s.discover' % types): 259 | setup_exists = True 260 | 261 | if not path.exists('/etc/enigma2/%s.discover' % type): 262 | if int(NoOfChannels[type].split(': ')[1]) == 0: 263 | if config.hrtunerproxy.bouquets_list[type].value == None: 264 | self["information"].setText(_('Please note: Please now select a bouquet to use.')) 265 | else: 266 | self["information"].setText(_('Please note: You do not seem to have any channels setup for this tuner, please add some channels to Enigma2 or choose anther tuner type.')) 267 | self["hinttext"].setText('') 268 | self["key_red"].show() 269 | self["button_red"].show() 270 | self["closeaction"].setEnabled(True) 271 | elif int(TunerCount[type].split(': ')[1]) < 2: 272 | self["information"].setText(_('WARNING: It seems you have a single tuner box. If the box is not left in standby your recordings WILL fail.')) 273 | self["hinttext"].setText(_('Press OK to continue setting up this tuner.')) 274 | self.hinttext = '' 275 | self["okaction"].setEnabled(True) 276 | self["key_green"].setText(_("Save")) 277 | self["key_yellow"].setText("") 278 | else: 279 | if currentconfig == _('Tuner type to use.'): 280 | self["hinttext"].setText(_('Press OK to continue setting up this tuner or press LEFT / RIGHT to select a different tuner type.')) 281 | self.hinttext = _('Press LEFT / RIGHT to select a different tuner type.') 282 | elif currentconfig == _('Bouquet to use.'): 283 | self["hinttext"].setText(_('Press OK to continue setting up this tuner or select a different tuner type.')) 284 | self.hinttext = _('Press LEFT / RIGHT to select a different bouquet.') 285 | elif currentconfig == _('Debug mode to create logs.'): 286 | self["hinttext"].setText(_('Press OK to continue setting up this tuner or select a different tuner type.')) 287 | self.hinttext = _('Press LEFT / RIGHT to select a different bouquet.') 288 | else: 289 | self["hinttext"].setText(_('Press OK to continue setting up this tuner or select a different tuner type.')) 290 | self.hinttext = _('Press LEFT / RIGHT to set number of concurent streams.') 291 | if not setup_exists and self.firstrun: 292 | print('U1') 293 | self["information"].setText(_('Please note: DVR feature in Plex / Emby is a premium / premiere feature. For more information please refer to:\nhttps://www.plex.tv/features/plex-pass\nhttps://emby.media/premiere.html')) 294 | self["hinttext"].setText(_('Press OK to continue setting up.')) 295 | elif setup_exists: 296 | print('U2') 297 | self["information"].setText(_('Please note: To use another tuner type in Plex you need to setup/have another server.\nAre you sure you want to continue?')) 298 | else: 299 | print('U3') 300 | if currentconfig == _('Tuner type to use.'): 301 | self.hinttext = _('Press LEFT / RIGHT to select a different tuner type.') 302 | print('T2') 303 | elif currentconfig == _('Bouquet to use.'): 304 | print('T3') 305 | self.hinttext = _('Press LEFT / RIGHT to select a different bouquet.') 306 | elif currentconfig == _('Debug Mode.'): 307 | print('T4') 308 | self.hinttext = _('Press LEFT / RIGHT to enable or disable debug mode.') 309 | self.ok() 310 | self["okaction"].setEnabled(True) 311 | self["key_green"].setText(_("Save")) 312 | self["key_yellow"].setText("") 313 | else: 314 | print('T1') 315 | if currentconfig == _('Tuner type to use.'): 316 | self.hinttext = _('Press LEFT / RIGHT to select a different tuner type.') 317 | print('T2') 318 | elif currentconfig == _('Bouquet to use.'): 319 | print('T3') 320 | self.hinttext = _('Press LEFT / RIGHT to select a different bouquet.') 321 | elif currentconfig == _('Debug Mode.'): 322 | print('T4') 323 | self.hinttext = _('Press LEFT / RIGHT to enable or disable debug mode.') 324 | self["key_green"].setText(_("Save")) 325 | self["key_yellow"].setText(_("Delete")) 326 | self["key_yellow"].show() 327 | self["button_yellow"].show() 328 | self.ok() 329 | 330 | def cleanfiles(self): 331 | type = config.hrtunerproxy.type.value 332 | if path.exists('/etc/enigma2/%s.discover' % type): 333 | self.session.openWithCallback(self.cleanconfirm, MessageBox, text=_("Do you really want to remove the files for this tuner type? Doing so will cause your DVR to be none functional."), type=MessageBox.TYPE_YESNO) 334 | 335 | def cleanconfirm(self, answer): 336 | if answer is not None and answer and self["config"].getCurrent() is not None: 337 | type = config.hrtunerproxy.type.value 338 | if config.hrtunerproxy.debug.value: 339 | logger.info('Deleting files for %s' % type) 340 | if path.exists('/etc/enigma2/%s.discover' % type): 341 | remove('/etc/enigma2/%s.discover' % type) 342 | if path.exists('/etc/enigma2/%s.device' % type): 343 | remove('/etc/enigma2/%s.device' % type) 344 | self.session.openWithCallback(self.rebootconfirm, MessageBox, text=_("Files deleted. Please restart enigma2.\n\nDo you want to restart now?"), type=MessageBox.TYPE_YESNO) 345 | 346 | def ok(self): 347 | self.firstrun = False 348 | self["okaction"].setEnabled(False) 349 | self["actions"].setEnabled(True) 350 | self["information"].setText(self.label) 351 | self["hinttext"].setText(self.hinttext) 352 | self["hinttext"].show() 353 | 354 | self["key_red"].show() 355 | self["key_green"].show() 356 | self["key_blue"].show() 357 | 358 | self["button_red"].show() 359 | self["button_green"].show() 360 | self["button_blue"].show() 361 | 362 | def keySave(self): 363 | if self.savedval != config.hrtunerproxy.type.value and path.exists('/etc/enigma2/%s.device' % self.savedval): 364 | self.session.openWithCallback(self.saveconfirm, MessageBox, text=_("It seems you have already set up another tuner. Your server can only support one tuner type. To use this additional tuner type you will need to setup another server. Do you want to continue creating the files?"), type=MessageBox.TYPE_YESNO) 365 | else: 366 | self.saveconfirm(True) 367 | 368 | def saveconfirm(self, answer): 369 | if answer is not None and answer and self["config"].getCurrent() is not None: 370 | type = config.hrtunerproxy.type.value 371 | newsetup = False 372 | if not path.exists('/etc/enigma2/%s.discover' % type): 373 | newsetup = True 374 | if config.hrtunerproxy.debug.value: 375 | logger.info('Creating files for %s' % type) 376 | getdeviceinfo.write_discover(dvbtype=type) 377 | if not path.exists('/etc/enigma2/%s.device' % self.savedval): 378 | getdeviceinfo.write_device_xml(dvbtype=type) 379 | config.hrtunerproxy.type.save() 380 | config.hrtunerproxy.bouquets_list[config.hrtunerproxy.type.value].save() 381 | config.hrtunerproxy.debug.save() 382 | configfile.save() 383 | if self.savedval != config.hrtunerproxy.type.value and path.exists('/etc/enigma2/%s.device' % self.savedval) or newsetup: 384 | self.session.openWithCallback(self.rebootconfirm, MessageBox, text=_("Files created. Please restart enigma2 and then you should be able to add this STB to your server.\n\nDo you want to restart now?"), type=MessageBox.TYPE_YESNO) 385 | else: 386 | self.close() 387 | 388 | def rebootconfirm(self, answer): 389 | if answer is not None and answer: 390 | from enigma import quitMainloop 391 | quitMainloop(3) 392 | 393 | def cancelConfirm(self, result): 394 | if not result: 395 | return 396 | for x in self["config"].list: 397 | x[1].cancel() 398 | self.close() 399 | 400 | def keyCancel(self): 401 | if self["config"].isChanged(): 402 | self.session.openWithCallback(self.cancelConfirm, MessageBox, _("Really close without saving settings?"), default=False) 403 | else: 404 | self.close() 405 | 406 | 407 | class TunerMask(): 408 | def __init__(self): 409 | res_mgr = eDVBResourceManager.getInstance() 410 | if res_mgr: 411 | res_mgr.frontendUseMaskChanged.get().append(self.tunerUseMaskChanged) 412 | 413 | def tunerUseMaskChanged(self, mask): 414 | config.hrtunerproxy.slotsinuse.setValue(mask) 415 | 416 | 417 | def startssdp(dvbtype): 418 | discover = getdeviceinfo.discoverdata(dvbtype) 419 | device_uuid = discover['DeviceUUID'] 420 | if config.hrtunerproxy.debug.value: 421 | logger.info('Starting SSDP for %s, device_uuid: %s' % (dvbtype, device_uuid)) 422 | local_ip_address = getIP() 423 | ssdp = SSDPServer() 424 | ssdp.register('local', 425 | 'uuid:{}::upnp:rootdevice'.format(device_uuid), 426 | 'upnp:rootdevice', 427 | 'http://{}:{}/device.xml'.format(local_ip_address, tunerports[dvbtype])) 428 | thread_ssdp = threading.Thread(target=ssdp.run, args=()) 429 | thread_ssdp.daemon = True # Daemonize thread 430 | thread_ssdp.start() 431 | 432 | 433 | def starthttpserver(dvbtype): 434 | if config.hrtunerproxy.debug.value: 435 | logger.info('Starting HTTPServer for %s' % dvbtype) 436 | thread_http = threading.Thread(target=server.run, args=(dvbtype,)) 437 | thread_http.daemon = True # Daemonize thread 438 | thread_http.start() 439 | 440 | 441 | def HRTunerProxy_AutoStart(reason, session=None, **kwargs): 442 | if config.hrtunerproxy.debug.value: 443 | logger.info('Starting AutoSart reason: %s, for types: %s' % (reason, tunerTypes)) 444 | if reason == 0: 445 | for type in tunerTypes: 446 | if path.exists('/etc/enigma2/%s.discover' % type): 447 | starthttpserver(type) 448 | if path.exists('/etc/enigma2/%s.device' % type): 449 | startssdp(type) 450 | if not isDreamOS: # check if DreamOS image 451 | TunerMask() 452 | 453 | 454 | def HRTunerProxy_SetupMain(session, **kwargs): 455 | session.open(HRTunerProxy_Setup) 456 | 457 | 458 | def startHRTunerProxy_Setup(menuid): 459 | if menuid != "system": 460 | return [] 461 | return [(_("HR-Tuner Proxy"), HRTunerProxy_SetupMain, "dvr_setup", None)] 462 | 463 | 464 | def Plugins(**kwargs): 465 | screenwidth = getDesktop(0).size().width() 466 | if screenwidth and screenwidth == 1920: 467 | iconpic = "plugin-hd.png" 468 | else: 469 | iconpic = "plugin.png" 470 | return [PluginDescriptor(name="HRTunerProxy", description=_("Setup the HR-Tuner Proxy server"), where=PluginDescriptor.WHERE_SESSIONSTART, fnc=HRTunerProxy_AutoStart, needsRestart=True), 471 | PluginDescriptor(name="HRTunerProxy", description=_("Setup the HR-Tuner Proxy server"), icon=iconpic, where=PluginDescriptor.WHERE_PLUGINMENU, fnc=HRTunerProxy_SetupMain), 472 | PluginDescriptor(name="HRTunerProxy", description=_("Setup the HR-Tuner Proxy server"), where=PluginDescriptor.WHERE_MENU, needsRestart=False, fnc=startHRTunerProxy_Setup)] 473 | -------------------------------------------------------------------------------- /plugin/server.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | from __future__ import absolute_import 3 | 4 | import posixpath 5 | import argparse 6 | import urllib 7 | import os 8 | import json 9 | import six 10 | 11 | from sys import modules 12 | try: 13 | from http.server import SimpleHTTPRequestHandler, HTTPServer, BaseHTTPRequestHandler 14 | except: 15 | from SimpleHTTPServer import SimpleHTTPRequestHandler 16 | from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler 17 | 18 | from . import getIP, tunerports, porttypes, logger 19 | from .getLineup import getlineup 20 | from .getLineupStatus import getlineupstatus 21 | from .getDeviceInfo import getdeviceinfo 22 | from Components.config import config 23 | 24 | 25 | class RootedBaseHTTPRequestHandler(BaseHTTPRequestHandler): 26 | def log_message(self, format, *args): 27 | if config.hrtunerproxy.debug.value: 28 | logger.info("%s %s" % (self.address_string(), format % args)) 29 | 30 | 31 | class RootedHTTPServer(HTTPServer): 32 | def __init__(self, *args, **kwargs): 33 | HTTPServer.__init__(self, *args, **kwargs) 34 | 35 | 36 | class RootedHTTPRequestHandler(RootedBaseHTTPRequestHandler): 37 | def do_GET(self): 38 | try: 39 | for x in str(self.headers).split('\n'): 40 | x = x.strip() 41 | if x.startswith('Host:'): 42 | host = x 43 | break 44 | self.port = int(host.split(':')[2]) 45 | except: 46 | if config.hrtunerproxy.debug.value: 47 | logger.info('USING DEFAULT PORT: 6081') 48 | self.port = 6081 49 | tunertype = porttypes[self.port] 50 | 51 | if self.path == '/': 52 | self.path = '/device.xml' 53 | 54 | if self.path.endswith(".html"): 55 | mimeType = 'text/html' 56 | elif self.path.endswith(".json"): 57 | mimeType = 'application/javascript' 58 | elif self.path.endswith(".xml"): 59 | mimeType = 'application/xml' 60 | elif self.path.endswith(".css"): 61 | mimeType = 'text/css' 62 | elif self.path.endswith(".ico"): 63 | mimeType = 'image/x-icon' 64 | 65 | if self.path.endswith("lineup_status.json"): 66 | self.send_response(200) 67 | self.send_header('Content-type', mimeType) 68 | self.end_headers() 69 | self.wfile.write(six.ensure_binary(json.dumps(getlineupstatus.lineupstatus(tunertype)))) 70 | elif self.path.endswith("lineup.json"): 71 | self.send_response(200) 72 | self.send_header('Content-type', mimeType) 73 | self.end_headers() 74 | self.wfile.write(six.ensure_binary(json.dumps(getlineup.lineupdata(getIP(), tunertype, config.hrtunerproxy.bouquets_list[tunertype].value)))) 75 | elif self.path.endswith("discover.json"): 76 | self.send_response(200) 77 | self.send_header('Content-type', mimeType) 78 | self.end_headers() 79 | self.wfile.write(six.ensure_binary(json.dumps(getdeviceinfo.discoverdata(tunertype)))) 80 | elif self.path.endswith("device.xml"): 81 | self.send_response(200) 82 | self.send_header('Content-type', mimeType) 83 | self.end_headers() 84 | self.wfile.write(six.ensure_binary(getdeviceinfo.devicedata(tunertype))) 85 | elif self.path.endswith("tuners.html"): 86 | self.send_response(200) 87 | self.send_header('Content-type', mimeType) 88 | self.end_headers() 89 | self.wfile.write(six.ensure_binary(getdeviceinfo.tunerstatus(tunertype))) 90 | elif self.path.endswith("style.css"): 91 | self.send_response(200) 92 | self.send_header('Content-type', mimeType) 93 | self.end_headers() 94 | self.wfile.write(six.ensure_binary("""html { width:100%; height: 100%;} 95 | body {background: #777 url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgMSAxIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj48cmFkaWFsR3JhZGllbnQgaWQ9InJnIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iNzUlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjNjA2Yzg4IiBzdG9wLW9wYWNpdHk9IjEiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMxMzE3MjEiIHN0b3Atb3BhY2l0eT0iMSIvPjwvcmFkaWFsR3JhZGllbnQ+PHJlY3QgeD0iLTUwIiB5PSItNTAiIHdpZHRoPSIxMDEiIGhlaWdodD0iMTAxIiBmaWxsPSJ1cmwoI3JnKSIgLz48L3N2Zz4K) no-repeat center center fixed;background-size: cover;font-family: sans-serif;} 96 | .B {background: #fff;margin: 9.5em;border: 3px solid #000;box-shadow: 10px 10px 50px #000;display: table} 97 | .C, .W {margin: auto;margin-top: 1em;padding: 10px;} 98 | .C {width: 21em;} 99 | .W {width: 80em;} 100 | .S, .T {color: #fff;margin: -10px -10px 10px -10px;} 101 | .S {background: #393;padding: 2px 20px;font-size: 0.8em;} 102 | .T {background: #000;padding-left: 20px;font-weight: 700;} 103 | .TE {background: #a00;} 104 | .BE {background: #f00;color: #fff;border-color:#a00;} 105 | a {text-decoration: none;} 106 | a:hover {text-decoration: underline;} 107 | a,a:visited {color: #00f;} 108 | table {width: inherit;} 109 | td img {margin-right:5px;} 110 | .L * {border-bottom: 1px solid black;} 111 | td {white-space: nowrap;} 112 | td:first-child {text-align: center;} 113 | button { margin-top: 0.25em; }""")) 114 | else: 115 | self.send_error(404, '[HRTunerProxy] File not found!') 116 | if config.hrtunerproxy.debug.value: 117 | logger.info('file type not coded:', self.path) 118 | return 119 | 120 | 121 | def run(dvbtype): 122 | ipaddress = getIP() 123 | ipport = '%d' % int(tunerports[dvbtype]) 124 | startserver(ip_address=ipaddress, port=ipport) 125 | 126 | 127 | def startserver(ip_address='', port=''): 128 | server_address = (ip_address, int(port)) 129 | httpd = RootedHTTPServer(server_address, RootedHTTPRequestHandler) 130 | sa = httpd.socket.getsockname() 131 | if config.hrtunerproxy.debug.value: 132 | logger.info('Serving HTTP on %s port %s' % (str(sa[0]), str(sa[1]))) 133 | httpd.serve_forever() 134 | 135 | 136 | # For modules that do "from About import about" 137 | server = modules[__name__] 138 | -------------------------------------------------------------------------------- /plugin/skins/about.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /plugin/skins/dreamos_about.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /plugin/skins/dreamos_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /plugin/skins/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /plugin/ssdp.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | from __future__ import absolute_import 3 | 4 | # Licensed under the MIT license 5 | # http://opensource.org/licenses/mit-license.php 6 | 7 | # Copyright 2005, Tim Potter 8 | # Copyright 2006 John-Mark Gurney 9 | # Copyright (C) 2006 Fluendo, S.A. (www.fluendo.com). 10 | # Copyright 2006,2007,2008,2009 Frank Scholz 11 | # Copyright 2016 Erwan Martin 12 | # 13 | # Implementation of a SSDP server. 14 | # 15 | 16 | from . import logger 17 | import random 18 | import time 19 | import socket 20 | from email.utils import formatdate 21 | from errno import ENOPROTOOPT 22 | 23 | from . import logger 24 | from Components.config import config 25 | 26 | SSDP_PORT = 1900 27 | SSDP_ADDR = '239.255.255.250' 28 | SERVER_ID = 'SSDP Server for HRTunerProxy' 29 | 30 | 31 | class SSDPServer: 32 | """A class implementing a SSDP server. The notify_received and 33 | searchReceived methods are called when the appropriate type of 34 | datagram is received by the server.""" 35 | known = {} 36 | 37 | def __init__(self): 38 | self.sock = None 39 | 40 | def run(self): 41 | self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 42 | self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 43 | if hasattr(socket, "SO_REUSEPORT"): 44 | try: 45 | self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) 46 | except socket.error as le: 47 | # RHEL6 defines SO_REUSEPORT but it doesn't work 48 | if le.errno == ENOPROTOOPT: 49 | pass 50 | else: 51 | raise 52 | 53 | addr = socket.inet_aton(SSDP_ADDR) 54 | interface = socket.inet_aton('0.0.0.0') 55 | cmd = socket.IP_ADD_MEMBERSHIP 56 | self.sock.setsockopt(socket.IPPROTO_IP, cmd, addr + interface) 57 | self.sock.bind(('0.0.0.0', SSDP_PORT)) 58 | self.sock.settimeout(1) 59 | 60 | while True: 61 | try: 62 | data, addr = self.sock.recvfrom(1024) 63 | self.datagram_received(data, addr) 64 | except socket.timeout: 65 | continue 66 | self.shutdown() 67 | 68 | def shutdown(self): 69 | for st in self.known: 70 | if self.known[st]['MANIFESTATION'] == 'local': 71 | self.do_byebye(st) 72 | 73 | def datagram_received(self, data, host_port): 74 | """Handle a received multicast datagram.""" 75 | 76 | (host, port) = host_port 77 | 78 | try: 79 | header, payload = data.decode().split('\r\n\r\n')[:2] 80 | except ValueError as err: 81 | logger.info('[SSDP]', err) 82 | return 83 | 84 | lines = header.split('\r\n') 85 | cmd = lines[0].split(' ') 86 | lines = map(lambda x: x.replace(': ', ':', 1), lines[1:]) 87 | lines = filter(lambda x: len(x) > 0, lines) 88 | 89 | headers = [x.split(':', 1) for x in lines] 90 | headers = dict(map(lambda x: (x[0].lower(), x[1]), headers)) 91 | 92 | # if config.hrtunerproxy.debug.value: 93 | # logger.info('SSDP command %s %s - from %s:%d' % (cmd[0], cmd[1], host, port)) 94 | # logger.info('SSDP with headers: {}.'.format(headers)) 95 | if cmd[0] == 'M-SEARCH' and cmd[1] == '*': 96 | # SSDP discovery 97 | self.discovery_request(headers, (host, port)) 98 | elif cmd[0] == 'NOTIFY' and cmd[1] == '*': 99 | # SSDP presence 100 | logger.info('SSDP NOTIFY *') 101 | else: 102 | logger.info('SSDP Unknown SSDP command %s %s' % (cmd[0], cmd[1])) 103 | 104 | def register(self, manifestation, usn, st, location, server=SERVER_ID, cache_control='max-age=1800', silent=False, 105 | host=None): 106 | """Register a service or device that this SSDP server will 107 | respond to.""" 108 | 109 | if config.hrtunerproxy.debug.value: 110 | logger.info('SSDP Registering %s (%s)' % (st, location)) 111 | 112 | self.known[usn] = {} 113 | self.known[usn]['USN'] = usn 114 | self.known[usn]['LOCATION'] = location 115 | self.known[usn]['ST'] = st 116 | self.known[usn]['EXT'] = '' 117 | self.known[usn]['SERVER'] = server 118 | self.known[usn]['CACHE-CONTROL'] = cache_control 119 | 120 | self.known[usn]['MANIFESTATION'] = manifestation 121 | self.known[usn]['SILENT'] = silent 122 | self.known[usn]['HOST'] = host 123 | self.known[usn]['last-seen'] = time.time() 124 | 125 | if manifestation == 'local' and self.sock: 126 | self.do_notify(usn) 127 | 128 | def unregister(self, usn): 129 | if config.hrtunerproxy.debug.value: 130 | logger.info('SSDP Un-registering %s' % usn) 131 | del self.known[usn] 132 | 133 | def is_known(self, usn): 134 | return usn in self.known 135 | 136 | def send_it(self, response, destination, delay, usn): 137 | # if config.hrtunerproxy.debug.value: 138 | # logger.info('SSDP send discovery response delayed by %ds for %s to %r' % (delay, usn, destination)) 139 | try: 140 | self.sock.sendto(response.encode(), destination) 141 | except (AttributeError, socket.error) as msg: 142 | logger.info('SSDP failure sending out byebye notification: %r' % msg) 143 | 144 | def discovery_request(self, headers, host_port): 145 | """Process a discovery request. The response must be sent to 146 | the address specified by (host, port).""" 147 | 148 | (host, port) = host_port 149 | 150 | # if config.hrtunerproxy.debug.value: 151 | # logger.info('SSDP Discovery request from (%s,%d) for %s' % (host, port, headers['st'])) 152 | # logger.info('SSDP Discovery request for %s' % headers['st']) 153 | 154 | # Do we know about this service? 155 | for i in self.known.values(): 156 | if i['MANIFESTATION'] == 'remote': 157 | continue 158 | if headers['st'] == 'ssdp:all' and i['SILENT']: 159 | continue 160 | if i['ST'] == headers['st'] or headers['st'] == 'ssdp:all': 161 | response = ['HTTP/1.1 200 OK'] 162 | 163 | usn = None 164 | for k, v in i.items(): 165 | if k == 'USN': 166 | usn = v 167 | if k not in ('MANIFESTATION', 'SILENT', 'HOST'): 168 | response.append('%s: %s' % (k, v)) 169 | 170 | if usn: 171 | response.append('DATE: %s' % formatdate(timeval=None, localtime=False, usegmt=True)) 172 | 173 | response.extend(('', '')) 174 | delay = random.randint(0, int(headers['mx'])) 175 | 176 | self.send_it('\r\n'.join(response), (host, port), delay, usn) 177 | 178 | def do_notify(self, usn): 179 | """Do notification""" 180 | 181 | if self.known[usn]['SILENT']: 182 | return 183 | if config.hrtunerproxy.debug.value: 184 | logger.info('SSDP Sending alive notification for %s' % usn) 185 | 186 | resp = [ 187 | 'NOTIFY * HTTP/1.1', 188 | 'HOST: %s:%d' % (SSDP_ADDR, SSDP_PORT), 189 | 'NTS: ssdp:alive', 190 | ] 191 | stcpy = dict(self.known[usn].items()) 192 | stcpy['NT'] = stcpy['ST'] 193 | del stcpy['ST'] 194 | del stcpy['MANIFESTATION'] 195 | del stcpy['SILENT'] 196 | del stcpy['HOST'] 197 | del stcpy['last-seen'] 198 | 199 | resp.extend(map(lambda x: ': '.join(x), stcpy.items())) 200 | resp.extend(('', '')) 201 | if config.hrtunerproxy.debug.value: 202 | logger.info('SSDP do_notify content', resp) 203 | try: 204 | self.sock.sendto('\r\n'.join(resp).encode(), (SSDP_ADDR, SSDP_PORT)) 205 | self.sock.sendto('\r\n'.join(resp).encode(), (SSDP_ADDR, SSDP_PORT)) 206 | except (AttributeError, socket.error) as msg: 207 | logger.info('SSDP failure sending out alive notification: %r' % msg) 208 | 209 | def do_byebye(self, usn): 210 | """Do byebye""" 211 | 212 | if config.hrtunerproxy.debug.value: 213 | logger.info('SSDP Sending byebye notification for %s' % usn) 214 | 215 | resp = [ 216 | 'NOTIFY * HTTP/1.1', 217 | 'HOST: %s:%d' % (SSDP_ADDR, SSDP_PORT), 218 | 'NTS: ssdp:byebye', 219 | ] 220 | try: 221 | stcpy = dict(self.known[usn].items()) 222 | stcpy['NT'] = stcpy['ST'] 223 | del stcpy['ST'] 224 | del stcpy['MANIFESTATION'] 225 | del stcpy['SILENT'] 226 | del stcpy['HOST'] 227 | del stcpy['last-seen'] 228 | resp.extend(map(lambda x: ': '.join(x), stcpy.items())) 229 | resp.extend(('', '')) 230 | if config.hrtunerproxy.debug.value: 231 | logger.info('SSDP do_byebye content', resp) 232 | if self.sock: 233 | try: 234 | self.sock.sendto('\r\n'.join(resp), (SSDP_ADDR, SSDP_PORT)) 235 | except (AttributeError, socket.error) as msg: 236 | logger.info('SSDP failure sending out byebye notification: %r' % msg) 237 | except KeyError as msg: 238 | logger.info('SSDP error building byebye notification: %r' % msg) 239 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup 2 | import setup_translate 3 | 4 | pkg = 'SystemPlugins.HRTunerProxy' 5 | setup(name='enigma2-plugin-systemplugins-hrtunerproxy', 6 | version='3.5', 7 | description='HRTunerProxy', 8 | long_description='Setup Enigma2 to act as HR-Tuner Proxy', 9 | author='AndyBlac & Huevos', 10 | url='https://github.com/OpenViX/HRTunerProxy', 11 | package_dir={pkg: 'plugin'}, 12 | packages=[pkg], 13 | package_data={pkg: 14 | ['plugin.png', 'plugin-hd.png', 'skins/*.xml', 'locale/*/LC_MESSAGES/*.mo', 'locale/*/LC_MESSAGES/*.po']}, 15 | cmdclass=setup_translate.cmdclass, # for translation 16 | ) 17 | -------------------------------------------------------------------------------- /setup_translate.py: -------------------------------------------------------------------------------- 1 | # Language extension for Python scripts. Based on this concept: 2 | # http://wiki.maemo.org/Internationalize_a_Python_application 3 | from setuptools import Command as cmd 4 | from setuptools.command.build import build as _build 5 | import os 6 | 7 | 8 | class build_trans(cmd): 9 | description = 'Compile .po files into .mo files' 10 | 11 | def initialize_options(self): 12 | pass 13 | 14 | def finalize_options(self): 15 | pass 16 | 17 | def run(self): 18 | s = os.path.join('plugin', 'locale') 19 | for lang in os.listdir(s): 20 | lc = os.path.join(s, lang, 'LC_MESSAGES') 21 | if os.path.isdir(lc): 22 | for f in os.listdir(lc): 23 | if f.endswith('.po'): 24 | src = os.path.join(lc, f) 25 | dest = os.path.join(lc, f[:-2] + 'mo') 26 | print("Language compile %s -> %s" % (src, dest)) 27 | if os.system("msgfmt '%s' -o '%s'" % (src, dest)) != 0: 28 | raise Exception("Failed to compile:%s " % src) 29 | 30 | 31 | class build(_build): 32 | sub_commands = _build.sub_commands + [('build_trans', None)] 33 | 34 | def run(self): 35 | _build.run(self) 36 | 37 | 38 | cmdclass = { 39 | 'build': build, 40 | 'build_trans': build_trans, 41 | } 42 | --------------------------------------------------------------------------------