diff -Nru aceproxy-0.9.1-610~26e79d1/aceclient/aceclient.py aceproxy-0.9.1-638~c939589/aceclient/aceclient.py --- aceproxy-0.9.1-610~26e79d1/aceclient/aceclient.py 2016-09-09 18:17:56.000000000 +0000 +++ aceproxy-0.9.1-638~c939589/aceclient/aceclient.py 2017-02-13 13:05:05.000000000 +0000 @@ -171,7 +171,13 @@ ''' Start video method ''' - stream_type = 'output_format=http' if self._engine_version_code >= 3010500 and not AceConfig.vlcuse else '' + if self._engine_version_code >= 3010500 and AceConfig.vlcuse: + stream_type = 'output_format=hls' + ' transcode_audio=' + str(AceConfig.transcode_audio) \ + + ' transcode_mp3=' + str(AceConfig.transcode_mp3) \ + + ' transcode_ac3=' + str(AceConfig.transcode_ac3) + else: + stream_type = 'output_format=http' + self._urlresult = AsyncResult() self._write(AceMessage.request.START(datatype.upper(), value, stream_type)) self._getResult() diff -Nru aceproxy-0.9.1-610~26e79d1/aceconfig.py aceproxy-0.9.1-638~c939589/aceconfig.py --- aceproxy-0.9.1-610~26e79d1/aceconfig.py 2016-09-09 18:17:56.000000000 +0000 +++ aceproxy-0.9.1-638~c939589/aceconfig.py 2017-02-13 13:05:05.000000000 +0000 @@ -144,7 +144,19 @@ # transcodecmd['mp2'] = 'ffmpeg -i - -c:a mp2 -c:v mpeg2video -f mpegts -qscale:v 2 -'.split() # transcodecmd['mkv'] = 'ffmpeg -i - -c:a copy -c:v copy -f matroska -'.split() # transcodecmd['default'] = 'ffmpeg -i - -c:a copy -c:v copy -f mpegts -'.split() - + # ---------------------------------------------------- + # Transcoding configuration for HLS + # ---------------------------------------------------- + # If you use acestream engine ver >= 3.1.5 and vlcuse=True + # proxy automaticaly switch to HLS (HTTP Live Streaming) instead of HTTP Progressive Download + # You can use this settings for audio transcoding. This option applies only for Live-stream + # --------------------------------------------------- + # Transcode All audio to AAC + transcode_audio = 0 + # Transcode MP3 (use only when transcode_audio=1) + transcode_mp3 = 0 + # Transcode only AC3 to AAC (use only when transcode_audio=0) + transcode_ac3 = 0 # ---------------------------------------------------- videodelay = 0 # Obey PAUSE and RESUME commands from Engine diff -Nru aceproxy-0.9.1-610~26e79d1/acehttp.py aceproxy-0.9.1-638~c939589/acehttp.py --- aceproxy-0.9.1-610~26e79d1/acehttp.py 2016-09-09 18:17:56.000000000 +0000 +++ aceproxy-0.9.1-638~c939589/acehttp.py 2017-02-13 13:05:05.000000000 +0000 @@ -29,6 +29,7 @@ import time import threading import urllib2 +import urllib import urlparse import Queue import aceclient @@ -51,6 +52,19 @@ requestlist = [] + def log_message(self, format, *args): + logger.info("%s - - [%s] %s\n" % + (self.address_string(), + self.log_date_time_string(), + urllib.unquote(format%args).decode('UTF-8'))) + + def log_request(self, code='-', size='-'): + logger.debug('"%s" %s %s', + self.requestline, str(code), str(size)) + + def log_error(self, format, *args): + logger.error(format, *args) + def handle_one_request(self): ''' Add request to requestlist, handle request and remove from the list @@ -176,7 +190,8 @@ # Current greenlet self.requestgreenlet = gevent.getcurrent() # Connected client IP address - self.clientip = self.request.getpeername()[0] + self.clientip = self.headers['X-Forwarded-For'] \ + if self.headers.has_key('X-Forwarded-For') else self.request.getpeername()[0] if AceConfig.firewall: # If firewall enabled @@ -190,7 +205,7 @@ self.dieWithError(403) # 403 Forbidden return - logger.info("Accepted connection from " + self.clientip + " path " + self.path) + logger.info("Accepted connection from " + self.clientip + " path " + urllib.unquote(self.path).decode('UTF-8')) try: self.splittedpath = self.path.split('/') @@ -759,7 +774,7 @@ def clean_proc(): # Trying to close all spawned processes gracefully - if AceConfig.vlcspawn and isRunning(AceStuff.vlc): + if AceConfig.vlcuse and AceConfig.vlcspawn and isRunning(AceStuff.vlc): AceStuff.vlcclient.destroy() gevent.sleep(1) if isRunning(AceStuff.vlc): diff -Nru aceproxy-0.9.1-610~26e79d1/debian/changelog aceproxy-0.9.1-638~c939589/debian/changelog --- aceproxy-0.9.1-610~26e79d1/debian/changelog 2016-11-06 17:52:51.000000000 +0000 +++ aceproxy-0.9.1-638~c939589/debian/changelog 2017-02-13 13:05:06.000000000 +0000 @@ -1,1382 +1,29 @@ -aceproxy (0.9.1-610~26e79d1-yakkety) yakkety; urgency=medium +aceproxy (0.9.1-638~c939589-yakkety) yakkety; urgency=medium - * [26e79d1a1e4d97d92442d4dc77107432387d6ca4] - Added connection time to /stat + * [01d5b271a9f634f274a4a5fe21da298caa25a118] + Change urllib to urllib2 for geoip - * [e686825e5b078a15efa4c7438469f661fc73afb0] - Updated logos + * [73b886f6103b2af1293781aed0b834a2ba3dc502] + Minor changes for stat_plugin stability - * [c47af7fb6e43dc48b93e9a0a2ca988864075615a] - Fixed support for the fmt parameter + * [14006d7fae51968bf13fd63ef0539ea92318f436] + Add duration time & GeoIP info for connections - * [5915626271f51051c93b0955f63385ca46289d5f] - Enhanced the channels group filter + * [61ff44388fa1163184abe475ea0b1777241b95ce] + Add locale support for stat info - * [261b3a3a96827b7ca64926ea631b6f1c332cc978] - Added channel name to tvg name mappings + * [4f71a186d910fa87d6dbaf9861bd29ddeab9ed8b] + Get client IP from Header - * [9da639cf6146e3be5f1a97d8b416bc5aa87681a0] - Added support for zone id. + * [902226e26d5118c43c37252d4ef04b3f11e5cdd6] + Small changes for loggin - * [3f1e5f17410071bd44217c65a7d8471aa33ef7c5] - Implemented playlist sorting. + * [c90d5d316355a01b23802440355623ec5080fd60] + Add subclass for override the log messages - * [31b6b2e46692c2ead7a33070d6142f3f5ac06d2d] - Fixed transcoding + Change log massages in Cyrillic to readable format - * [a37f88f75ac87adf1751d357f63880d9d64ebb5a] - Fixed unicode channels renaming. - - * [894f821dec88318c05cbe30a08e22b0920449004] - Minor enhancements - - * [c68d9b94d342375d021f9d076c1ee6961269bd3e] - Fixed zombie connections caused by GreenletExit exception. - Added configuration for detecting fake requests. - Added configuration for changing channels name, group etc. - - * [cb8c8f2c35cf596dea4dc81878aecfcf46b8e6d0] - Show channel logo and name in /stat. - Minor enhancements. - - * [7725ff28b326778f8bd5b9bb9e219c9bea4b9524] - Spawn the hang detector just before the proxy - - * [8769e63b557b7ca0641ab7b009898d8831c3dc34] - Changed host to allfon.org. - - * [3465cdc71e4696d8bdb8f150f8a6df0246ecd03a] - Do not ignore acestream:// urls. - - * [d04c98dd6b546d92206817e0d4977269f83220c8] - Print VLC messages to log if DEBUG is enabled. - - * [54d9543ace3259fc508f17ac3b6704c19e9dca69] - Added handler for favicon.ico - - * [d4041af07d04f7c6707084193efb9246898313bb] - Added missing return - - * [1f73bc2d54cb5256edb90d9566224b82de27422d] - add EPG & TIMESHIFT - - for allfon & torrent-telik - - * [2086a61da5ee7a79b1e95cd41d4cf7be7c7861fe] - Add support playlist.py - - for allfon & torrent-telik - - * [e378999465e0a00882f4ce1975867c3f0620a30c] - Add new API features support for aceengine >=3.1.5 - - * [b754d168ae3c54d8dc5b931d7b3e2f8fb64550b9] - New playlist - /archive/dates.m3u - - * [cd6757695bb029a4fed7321352f1ae7b71ab1a17] - Added support for playlist url suffix. - - * [71e91f1aca5217544c5db477a9f77280c505c6c0] - Handle /channels.m3u requests in the same way as /channels/?type=m3u - - * [dc947c020778ee1ec67af6df537b840f8865c975] - Implemented new handler for archives - /archive/playlist - - * [853238ebc4d88b62810ceec87bf6463ae7bcea5d] - Fixes - - * [06f4a00649a75bc3507550eb6d2c39bc496ab26a] - Implemented transcoding - - * [44f0afe341ce9a99f88ce5a7d5dcc6834672e149] - Added group names for the torrent-telik plugin - - * [63533ec71adb54827c259bb1bb02e38b0935f3cb] - Fixes - - - * [97a908bc867155a5e2d99a8b39d5cc22d10d6274] - Removed header duplicates - - * [d2f66376ccda64d04dd74b3d08a2187e8010425f] - Check the ace engine and vlc processes before handling a request - - * [83d166d53fbac2198aafd4159a4ad6425ebfecf2] - Set the Content-Type header before writing data - - * [f3f7e2c4a2c7fc0d93d0bf26ee182b730954a8f6] - Fixed videodestroydelay - - * [c22da118710bbfd9c7c9173f416b4f93f13c0397] - Update logos if the p2p plugin is configured - - * [c7b945c2c4c702c652e7bf0aa464fc0c8d843752] - Set the Content-Length header. - - * [85f6d29946f50888840caa82a6b50b72d43e6e8d] - Added .mp4 suffix to urls. - - * [2c93fee2c6b797bc265e90b58d03263e7ce99d40] - Updated logos - - * [bf51dfc1e81a806985645090acf9dbf77d5f9fff] - Implemented archive m3u. - - * [a3071d074d245ed4cb3247d8b027e7bef0e2d7d7] - Added charset to the Content-type header - - * [6cb25827cc9dadcb8645ff0c24a902b00e39edb7] - Use channel name instead of sequence number. - Fixes. - - * [5342c09e68439e2ff9508a50b04819f9a245e4d8] - #EXTGRP removed from the default template since it's not supported by - some players - - * [6fa734b0804f7b78befc5dbde43f6d48d1789209] - Fixed archive - - * [15946921170724734b13e2cf6bc2240cf91ce621] - Stat plugin enhancements - - * [dd4b767d9f0f5111f1a6ad80f8b903d1b7e73d49] - Implemented ETag support. - Fixes - - * [6084802b7202f02dfe0e4c05a7f6cc45ee7a1a6c] - Encode vlc url - - * [94b9c71f8ee45683794bc750a83484ba312dbc52] - Use gevent.spawn instead of Timer - - * [4e313a99082fb0a1fed56f2c44aafcd6c443dea3] - Fixed VLC broadcasting - - * [6691c0caaeee3ae142208864931ede6e3dcaf854] - Fixes - - - * [ee5134d1fefeef38a67801112ce8507645b9add6] - Prefer WEB API since it's faster and more stable - - * [dd66362ff184120d33b75ce7af86e56c675b74c3] - Redesigned the torrenttv plugin - - * [9f9d77c74fa6c5e209097ea6455a5599cbc295ef] - Fixed torrents playback. - Minor fixes and enhancements. - - * [3a8cead4dd5f74122bf29cb37f4757ac88f1b7e6] - Redesigned ttv api - - - * [0f2ed041794bd127bcba0787ed7989c16937c692] - Use START PID if we know the content id - - * [7b1ab4b6a9e51051ccda479fc6744422792bd077] - Fixed typo. - - * [1fa4500dd1a689fafc558c35a5c29cea57ee4314] - Do not authenticate for each request - reuse the previous session. - - * [c75055b7789d8d6cf3d633e52190c1e0852c18da] - Added new handler - logos which is used to generate logomap for the - torrenttv plugin. - Updated logomap of the torrenttv plugin. - - * [b7947aac92eb32186d021697de37176642b526e4] - Use WEB API if failed to get CID from engine - - * [bd25c7eb00a7a0d58a8d8e31ea444cbfe1b2bf4c] - Destroy ace if failed to stop - - * [d7119f7cb38c576c864de60b1dc713cef48e8dd0] - Fixes and enhancements - - * [95a03382343f2c8e6cd0cda811df3b205f03b502] - Configurable playlist format - - * [aa48833d1499ab1e7a86378a873d342b4e09fa30] - Implemented streaming of the same channel to multiple clients without - VLC. - Channels zapping speedup. - - * [754d12cdc37569ab0676eb3306774e52e0955ab6] - Switched to TorrentTV API v3 - - * [fc53911561233475ea0589f22dcad6d31c89377e] - Fixed HEAD requests handling. - Added .pyc and IDE files to .gitignore. - - * [dd2f94d3d2954c58d6426cc41d49a690dd8737ff] - Fixed torrenttelik playlist - - - * [73da4c4f1b9a20586ffc87502ab6a3c177c21634] - Merge pull request #41 from AndreyPavlenko/logo - - [Torrent TV] Add channel logos (tvg-logo tag) to the playlist - - * [3828416191bef14ec3840a9336acf910b083777a] - [p2pproxy] Added settings for TV Guide url, id and time shift - - - * [fef91cc9901edd41a38d7ffb80da5bc8ed190291] - [Torrent TV] Add channel logos (tvg-logo tag) to the playlist - - - * [0b864f2c82bd7131f11060985498a928e31db7ee] - [Torrent TV] Added settings for TV Guide url and time shift - - - * [a937b0c17228748c9befd16245655d4055d68a1a] - Correct allfon usage description text - - - * [eaab692d4b3bb95ed8efa3a70706f245217c22cf] - New allfon.tv plugin - - - * [946274248dff019f5bfa3ae62e29fe16ba5c015c] - Handle socket timeout and don't print traceback - - - * [da40d80ba465951081f9f2098bf61327c334658c] - Print traceback if plugin exception was caught - - - * [ce22926a2c4b62f567382c83cced2e6671e79b65] - Fix VLC spawn logic - Spawn VLC if vlcspawn = True. If vlcspawn = False we will try to connect to VLC and only then find process. - - - * [7845b893d97e0889189fbd9caad0741204ab7ab9] - P2pProxy plugin rewrite and refactoring - Moved all API communication stuff from plugin code to torrenttv_api.py and covered it with proper documentation. - Rewrote API logic. Now errors are handled by exceptions. - Deleted session caching feature because it caused more problems than advantages. Now every request will open new session. - Refactored code. - - - * [ee250ca910c7c6804b325120e4fe10f8c7afaef2] - Make torrent-telik mobile playlist accessible again - Renamed command for getting mobile torrent-tv playlist because it was shadowed by another command after changing '==' to 'startswith' - - - * [12838389a1085dec1458584e8cd4c3bd909a7520] - Terminate VLC more correctly - - - * [4707832ebf4778132ee190af2cb76cc6a7a0d87c] - Revert "Handle other video connection exceptions (just to be sure)" - We should not handle GreenletExit here. - - This reverts commit 3a47c9c1254047c33ed61727f055ac9331e17af4. - - - * [13f350cd0975cd7c149df39022c2c7782d01774c] - Change user to "nobody" - - - * [591800056382dea7c48ea2cda8e340a48cfc2be8] - Add aceproxy systemd service - - - * [dd60afa40ebbb34c654df4f44d19936195a46a94] - Fix configuration reloading with SIGHUP (with compatibility with older gevent versions) - - - * [b0040d279373f425e256a5fab1ff8fe44833834a] - Damn that grammar! - - - * [4cd0456b7dd02477ce83059bdd101ccf0c9ffc75] - Properly disconnect clients on shutdown request - - - * [9f9479955b2cad21bbfe4f9362f2937220d215d8] - Make torrent-telik work with any tail (like /pl.m3u) - - - * [512ed4112cf3f92c8a19cdd40e5f420e4d6dec1e] - Disconnect client when video connection drops or closes. Fixes #28. - - - * [6ac47890adbb28d2d17025aff17681f598173248] - Merge branch 'seekback' - - - * [43d9a634d0526d9ce0fe98661b88d6096294cfc3] - Search for VLC PID only if vlcspawn is enabled - - - * [71610e33566133a370195036f895a306200d3110] - Add seekback feature. Helps fighting with lags. - - - * [cc763c12d4a5e863594a179f5b003c7cb54bc97d] - Use default configuration values and allow aceconfig to overwrite it - - - * [145712bbeec9f5dcdb1a59274f7e3ca72e68f519] - Fix VLC pause/resume if obey is enabled - - - * [eac3abe1dbef9731d028838ee8af068bb2e81279] - Fix getEvent. It never worked correctly till now. - - - * [0ada5d96e160863572c52c45f1e7a700d3958923] - Introduce VLC playBroadcast and pauseBroadcast - - - * [3a47c9c1254047c33ed61727f055ac9331e17af4] - Handle other video connection exceptions (just to be sure) - - - * [fad1d468e4bc5020ad34adc9eaef88c3ef0041e9] - Send PAUSE and PLAY commands to AceEngine on videodelay timeout - - - * [bc02fc4f1d1775606c487a990566d3b4af974ea4] - Add support for pausing and resuming the stream and print stream position - - - * [4847c0be526d5e4aac89822c8ff3fc5d5728724f] - Merge pull request #29 from miltador/master - - Specify User-Agent to parse playlists - - * [1a2d2ca21a00b840df21dcff0f86925a401800d0] - Merge pull request #23 from miltador/win-dist - - Script for building Windows dist with python bundle and required modules - - * [06bf567c5b02cc27d77b4c04b59dfb0c90d5e192] - plugins: specify User-Agent to parse playlists - - Thanks to 4public: http://mytalks.ru/index.php?topic=4506.msg49243#msg49243 - - * [645f9829de4173d43fa49f563f5991ed7f27ac18] - plugins: specify User-Agent to parse playlists - - Thanks to 4public: http://mytalks.ru/index.php?topic=4506.msg49241#msg49241 - - * [7183d7e405798314d6f9cff85d75adeb0b805f2d] - Replace all quit()'s to sys.exit()'s - - - * [13cfbf3f0cbcdc4709512e2ccd939ce4609915fb] - Fix error when acespawn = False and aceengine is not running - - - * [c2700b9a660cb08716b6d15f0af6cb1fa6e62c6a] - Script for building Windows dist with python bundle and required modules - - - * [02762b285a8eacc1926a73a5bfdbbda03ff47fe9] - P2pProxy: forgot to change 2 more config values - - - * [fa0c0865faf96ec21c46b8a60421f349d9056635] - Merge remote-tracking branch 'upstream/master' - - - * [7d2b55968c67a67defe7ae3285feddfbb12e3824] - Add requirements.txt for downloading dependencies with pip - - - * [b6b3aaef68524ee6919ee7b6e8eaeeacf5dfc062] - Introducing Torrent-telik.com Playlist Downloader Plugin (based on ytv plugin by ValdikSS) - - - * [c79315315f126115aaadfc207a76bef3a787dc77] - Use direct config values instead of storing them locally - - - * [85eb9c1bb37dbde75f09c30cc12d45a3f969e957] - rewrite 'if var is None' to 'if not var' - - - * [e6fed42042635b3fa4a0b4ac4865fca5af8ba0bb] - Revert using of gevent.sleep() for not blocking application - - - * [9ace7f9868c91361c1aeb088d7d1a4eb6f7d1890] - P2pProxy: status check request implemented + add 1 hour session cache - - - * [c014d2217596d468a8b20b050fad7cf827f6e0a3] - Use process.wait(1) instead of gevent.sleep(1) - - - * [7a09a92bdd72e5826ff819d4dbb336640b6f4816] - P2pProxy: support /archive/channels request - - - * [183ff5a298ae0ed11d0e2712c18d33618065a944] - P2pProxy: remove unused code - - - * [02973677aa7837a0259520b2f40d76bb7d757974] - P2pProxy: /xbmc.pvr/playlist request support - - - * [3fdb02d51c621f9bdebd57fd1f289c1e41594699] - P2pProxy: process filter param for /channels/?filter=* requests - - - * [61ff31c9fc4887f7670f0f9f0e4180bda30531a7] - P2pProxy: introduce full torrent-tv archive support - - - * [ff10c6088fa9b996a93acacc7ab99ca7d3610e41] - P2pProxy: new order because we need to count content-length header - - - * [112f059cfd147d419f5019da11b75f06ab7ef147] - P2pProxy: additional http headers for some TVs - - - * [220e9c1e9515ba3303be2f279fa64eb5a9cd6c13] - Thanks for Cantar - - - * [4c74e9b7169d4f860bb3a131bb353182e2ae9a35] - Do not shutdown when ace not found - Respawn vlc and ace only if vlcspawn or acespawn = True - Add timeout before detecting port on Windows - - - * [0b9b61592a65fe24c9c9c6be46ea0e68268bbcb0] - torrenttv_plugin: if updateevery == 0 then playlist shoudn't be downloaded by startup - - - * [b31a9e589c8e610f3931c2cd5f2b656e5c3c777e] - torrenttv_plugin: download playlist in every case - - - * [d753006b11d58f91fe0c1162fb8e19fd80d3fbe8] - torrenttv_plugin: download playlist on proxy startup - - - * [3870c024372ec3fd843b095907c8d29166f4dadb] - As we use psutil from now, no more requirement of gevent ver >= 1.0.0 - - - * [28cf9c1af499e30f44979307ca272a96510fa701] - Compatibility with 1.*.* version of psutil - - - * [7392ea3f9248eaa38e0d00603d18a83af00e03d1] - Fix vlc and ace process detection, implemented option of using ace_player on Windows, rewrite to use psutil - - - * [eff4e8a059e1b850cea50d78e33199d9d620f842] - Do not control the process, launched not by proxy - - - * [256e7759324ede083ed10cd1da21c9b8e03241ce] - Fix psutil process.name calls on different operating systems - - - * [fca74bfc1a9efe509d0917fd7db503ca604e6eb0] - P2pProxy: info message to not confuse users - - - * [634ed2120a3338c0931fa3dc51b456863e24b0cd] - P2pProxy: another simple errors, need to sleep :) - - - * [f9b2f6eaf51d4425c0ef3e364849a5c0de6df038] - P2pProxy: checking for None - - - * [f034fe9f03d14085ee1a891a39c02bba6341bde5] - P2pProxy: download playlist on demand and update session every hour if it's lifetime expired - - - * [f29b7f93e76c72a93f38e94469c35ecf8d01add7] - P2pProxy: no sense to download playlist on startup - - - * [ad16c2bd84bc949e08f8b08a0045c017de2b0e94] - P2pProxy: revert the idea of caching stream links, back to P2pProxy style - - - * [236288fda590671d5479e85347f26e14f86007f2] - Fix errors in aceRunning() method - - - * [2fc2160e1fa39525b7b3af045dadd4999d19ba8c] - Attempt to fix aceengine spawn detection on start up - - - * [2a7fc109ea8d428c06824f9639ff55137b37ae25] - P2pProxy: forgot that - - - * [a4a26ea0dbb7259276ddfbc6ed357d073a91d4c8] - P2pProxy: the play request is actually in format of /channels/play?id= - - - * [cb1f360c2d8f364fdb66cf9ec1a55c6b707fc6f5] - P2pProxy: correct play param - - - * [9ffedc67bd78a56ec40864fb89c6ba253af72719] - P2pProxy: filter=all and group=all correct handling - - - * [7cfe818bade38a690c02e1f7f4e7f029de1e5f8f] - P2pProxy: finished with standalone-rework and bug-fixing processing of params in requests - - - * [566e765d2c69f58d9fd4a55a2dabbb66d4821895] - P2pProxy: download playlist on start + fixes - - - * [c07af5439d8a71b84b42dd3c8d73ee1599f63c55] - P2pProxy: simplify logic on action determination - - - * [36318b0aa39de28bdd4b532880c11788327b54f8] - P2pProxy: now plugin is absolutely standalone + implementeed group\filter support - - - * [103d55d7cdde1c6c8c5395bf176a5f8ef989ff33] - Make VLC spawn timeout configurable - - - * [dc693d4bdb3e43e47819ec28c4d5c0b686d1e38d] - More common default parameters for vlc spawn - - - * [579c1fc230929ec9d4ca2663f67005dd5eacd671] - P2pProxy: add channel logotypes to m3u playlists - - - * [18ca3fa64d3e94ee1765374d77748659aa999c2f] - P2pProxy: should be debug instead of error - - - * [3586883a82a72bd8b32a3d46c9f20a96926db96e] - Adjust timeout for VLC spawn - - - * [30000f60e976cdcb2d45ae4678e1c3f94fb42d7b] - Adjust timeout for VLC spawn - - - * [d1c527994716d325c84315d59765745dc4e11670] - P2pProxy plugin: some refactoring and optimizations - - - * [e0779cf5b5dcd5e6a1e7d78c6af681d1bf8d0dc0] - P2pProxy plugin: correct handling of stream source and compatibility with standard plugin - - - * [4b745967313f7587f83afef25608e74a444596e6] - P2pProxy plugin: update session every N minutes to prevent torrent-tv of forgetting us - - - * [4afb07ea2557b37b367eeacb105c5f061b0ba0aa] - P2pProxy plugin: correct Content-Type for xml - - - * [3ee2b5c1172f7afb47581e99d41fbf378937decc] - P2pProxy plugin: fix some logic errors - - - * [b3d5bed1351a9b10e91516cc49df29492f4a904c] - remove ytv plugin, it's seems to be obsolete - - - * [aad7395c79d429b184786c97a78edf4337f17806] - P2pProxy plugin, brings support for P2pProxy widgets and programs - - - * [ffb66353d490bb57b0a3c551970dc07b43fa72aa] - Refresh port on ace respawn - - - * [509d3e127d81a6cf8e7b69092fc67c4d6c8e4ae4] - Port detection should be after ace spawn - - - * [6e75ecea3b9b2259f00700cca741f3f0a7fa49db] - Whoops :) - - - * [a1019228f78a640a1860ecbd3b4d7122b098cee7] - Improve ace engine port detection on Windows - - - * [6dff4771c3e591ed79ad6b1ca68981f052cdc210] - Disable acespawn by default - - - * [ed8c7bac8a6a04340a8f7c5fd6aba98d1e61ce20] - Merge Services spawn from deseven #15 - - - * [86afd3c64907912a14fe1640735cd3b530d61747] - Added API key and removed remote keygen - - - * [996e891985067b45023618196f3272544e7f4cd6] - Services spawn - - - * [09a15e4c1f95cabe7283cd6d36aed548c3490655] - Fix for windows - - - * [b1e25fb3f9786a15d3d51427f84a652b3ba46ab2] - Revert "os.getuid() is also missing in windows" - - This reverts commit fc0e79df7e9d2bd1c6e28e4ca57137bc9a3b5e2e. - - - * [fc0e79df7e9d2bd1c6e28e4ca57137bc9a3b5e2e] - os.getuid() is also missing in windows - - - * [54ee4cfd16e6895c6bbca6ff6b49963ebaf9282c] - pwd and grp are missing on windows - - - * [df2b195d5977b2d9061df53f52aef242a18fadd2] - Small cosmetic fix - - * [ca2d83f43211c6f71297913e1ce5d4c005ed454b] - privileges dropping - - - * [5d5c6b19ca05c3c8d1fe57ede1ce426bf207b923] - SIGHUP fix for Windows - - - * [68f9c30c86cbde6837d6a0e3fcdc1c8e0a052663] - Reload config on SIGHUP - - - * [175493b9e72b844866ad9e1e19608406a45b3e9f] - Fix key extract for newer AceEngine versions - - - * [30d0d1640f8a084b389bb232af312d1a0afde6e0] - New function: firewall - - - * [f0bc9e9db2c745a7b607568fbce88d2f50b65e23] - Added timed downloader to torrent-tv.ru plugin to prevent tracker forgetting us - - - * [b96fa407b21d0778f37467247f136cc20913f5aa] - proxyReadWrite refactoring and other minor changes - - - * [61c2585a0247e620d7a49ca59ef7fb89a485f24f] - Handle acestream:// PIDs in playlists - - - * [25fc047bdccba31b636fe66d7cb52d1e86bdec2d] - New plugin: ytv.su - - - * [cb0eb539738506f91fc0fc49f93e23c4cd0578b3] - Use PluginInterface from modules folder in acehttp - - - * [3ec347436deb79cafefd15e1686ab484e2fd13ec] - New torrent-tv.ru plugin (torrenttv) - - - * [247d1a6f9570f6777f8b2d98f00d1d7b49ba5a1e] - New module: PlaylistGenerator. Right now it can only generate .m3u's - - - * [730ee7d0942e9240641c5856df0a8f95629277e5] - Remove old torrent-tv.ru plugin (ttvplaylist) - - - * [f4c7557bc39995dd482d26c0da1345f3bae51d1c] - Move PluginInterface to 'modules' folder and fix stat and helloworld plugins - - - * [f187b0acefcc3368bc7c1f672ccb929e66d055e8] - Add support for HTTP HEAD requests. - - May be needed by some clients, e.g. XBMC. - - - * [3cabd551c0d0c11c39051ecea6301b5a1d476f59] - Raketa-tv.com plugin removed - - - * [c28f82bdf321dce0271f39b59cca685cd5b58dfe] - Host override removed - - - * [146ac65aeda9c07adfbb88fea896445dd5206110] - Change the way the URL is formed in ttvplaylist_plugin taking the "Host" header into account. - - - * [ab1e75c4ffde8f741d03eeef2dc309a1609ef985] - Changes for freezing - - - * [b99a7a0ffa971638c2a41126451b5e75fdbc6fda] - Use LOADASYNC to get content info - - - * [f14a80360256e9d573d789fbccbe880b0535b417] - Comment for handle_one_request - - - * [c248845a473b7a50e0f3c3de7f17b1d6c61676eb] - Do not use 'terminating' flag, use errorhappened instead - - - * [76c882a5ea2ca244bfdbe7951b814f65cd242c10] - A little change in hangDetector - - - * [c40ac3c324b83c3333f692418f40b698f69404b9] - Close client connections when shutting down - - - * [ca6bd5876918080b9503b49b8ed25f0c322309d1] - Use SocketException in proxyReadWrite - - - * [cc147709addaedbd074fbd9a1811f3a336c1713e] - Run proxyReadWrite() in the request greenlet - - - * [acef355e4b471a908fe09fce38a919eae48b4504] - Print gevent version - - - * [b67256c647d8485ffd44cb7e0f8b93d4acdd2459] - Shutdown on SystemExit too - - - * [061e2052fc52fbffb040c239ab17bea8244f49e8] - Remove unused gevent.queue - - - * [a89380bec45131781963ab9546554b785a3287f5] - chmod +x acehttp.py - - - * [06dfa3170f4805d35f63cb85befe7d0885d3978b] - Added shebang for acehttp.py which makes possible to run this script directly - - - * [b042007bab2d9174cd4e56146ac7b7642545ded2] - Add logging to a file - - - * [eb4c308bbe2824acc1016be761dd2a9713a909a3] - Include all audio, video and subtitles streams - - - * [15465a6138f0ed98b47217831d4e462ec577d065] - JTV Playlist for torrent-tv.ru plugin - - - * [9c47baad9dc7c6204b51de24150260426d80cc84] - Check optional parameters for integer in case we got not a parameter but a video extension - - - * [e08e78a8a2134352b13014a1dc462f6ca4b8f1f3] - Search video extensions in full path - - - * [ed619c6f1771df2aa0a26254fc08f58e317ecfc2] - Modify plugins to use new 'valid video extensions' logic - - - * [1ee5805e3b15da06b3ef68f611009a1ce327b399] - Add UTF8 header to acehttp.py - - - * [0a69b342fd0f8d74c6d396e9c2cdd0894a828aaf] - Accept only requests with valid video extension - - - * [91a492ba3ed1e05e2f8917e813c86d1dbe3bcd2d] - Revert all subtitles code - - This reverts commit f2973185c4e6dbf17537f714b903a81fd7372546 and commit 15cd25dc857d2de2efe2157d3515614425f93f51 - - - * [15cd25dc857d2de2efe2157d3515614425f93f51] - MX player requests .smi file also - - - * [f2973185c4e6dbf17537f714b903a81fd7372546] - Return 404 for subtitles requests - - - * [8e170e606ef9dbf1edffc851a4f74ae5b2f9a287] - Whoops, reverting this - - - * [9471cd07448430c20e36c6b4641245a861f50a6d] - Revert "VOD added" - - This reverts commit 7003b7063254796ad29bc30f2bc8d34dd749f912. - - Conflicts: - acehttp.py - vlcclient/vlcclient.py - - - * [df3e899cbddccc17bf8a2b0ca0f7f1785093765f] - Added pre-access VLC options (basically for transcode settings) - - - * [7003b7063254796ad29bc30f2bc8d34dd749f912] - VOD added - - - * [bd3253397bbfbcdc200be6a925e8cb54cf422c67] - Do not rewrite video port - - - * [35a1ab9561f30dbe98743f1eac774e0e180ee598] - Ace Stream Engine host rewrite - - - * [9b9f09003a385c148496dd1091f903a13fa931b5] - Yep, quite ugly - - - * [91498d089169e17a2af3c0f0cd54a0feba775356] - Leave only one debug parameter - - - * [5b7edd6cac3ff21bce421cc3a3c81b88c14bb3f1] - Added acevideoport, updated comments - - - * [e6dcf4e9f9702a4629a14a87055ff39217fd4ad7] - Use free playlist for raketa-tv - - - * [b7bf9826182297cc508217ddc888546f59bef41f] - Print "accepted connection..." on new connection - - - * [ab589b4a6565622b9f9518681f2b7df908500259] - Remove unnecessary debug message - - - * [ab145674d7d0f28bc71e72d7488c0659c46439c9] - Return from _recvData only if there was read exception or on SHUTDOWN - - - * [839e49153de91ff8a65432f3aacabdc5794bc2bf] - Parse both .acelive URLs and PIDs - - - * [27e0f2963cbf0cd89037494f07d1fcdc04007d6f] - Use authorization for Raketa-TV - - - * [1bf34737277045ad25d82c6c417220bacc046920] - Added Ace Stream connection timeout, authentication timeout and exception handling on keygen timeout - - - * [29cd52403ee738e220aa9ae67d3933c3a6b1d8b3] - Added Ace Stream connection timeout, authentication timeout and exception handling on keygen timeout - - - * [f193b7d3412552047210996473c1895b9b245bdc] - Torrent-TV now uses .acelive instead of PID - - - * [09d5055bd5248d1a384820739fbdce3b0dc1c6bc] - Handle exception in closeConnection() - - - * [5a6b2d5e48309257d2a46e0aa87449a86ff3d2cd] - Remove whitespaces - - - * [cc8d168c5771df8fbd5727f3d194aad08be64456] - Added http://ts://… syntax into Raketa-tv.com plugin for some players - - - * [7fc7dc912b597a42969d8c6f02db46295f507cf7] - Added http://ts://… syntax into Torrent-TV.ru plugin for some players - - - * [d0893f22973ccf599b9f00c320a9761b797e5222] - Added group parser for Torrent-TV.ru - - - * [a4c35bcd3f22e8ec2ea4083015837a6039863218] - Raketa-tv.com plugin - - - * [eb5de625efa9fb82519959dc1adf5496823ea397] - Add VlcException and Exception handlers - - - * [1eb95b173f6c8ad655445fd641549895ca5a91b4] - Whoops, typo - - - * [a41538963e21da1f3d5e11a975e49662c8c14d66] - Added some gevent.sleep's - - - * [1dd48613ca7d8aafb4a86228ba4958d2ba730f92] - Remove unnecessary timeouts in VlcClient and AceClient - - - * [8c9d0412e87d8357557e02c70b454b2706b0f19f] - Better VLC connection exception handling - - - * [f251d61b3a539d52fe3d2e4a7265e1f7ec52f51b] - Parsing everything only if the string is not empty - - - * [1b5857f38c061224b0aadfd2e3c7365e7dfb02e0] - Added host override for torrent-tv - - - * [33a2effc080b1a2c695e87068d7cf8b712640a24] - Autopep8'ed - - - * [b4332db16193c81b6eaaa848c3e0637baa03226c] - Added debug message when maximum connections limit is reached - - - * [b34be2d23037a4f2b69cc034a055a12c00dfb9b5] - "Concurrent connections limit" in statistics - - - * [7df2285a06d548a4c61707b17e7482d21bbf5cd1] - Check maxconns to be >= 0 - - - * [785be2f14ace0e23836a22e0614047d24db5d262] - Revert "Close socket on AceClient destroy() because sometimes Ace Stream hangs and doesn't send SHUTDOWN back." - - This reverts commit 79f2d94b3981ee080dab83bd48093d5320baa745. - - Windows users report this commit breaks proxy. That's strange actually. - - - * [268bd90bc9ccc026de4ae6a8076b3f998c2468c0] - Added concurrent connections limit - - - * [d928bfb85341fe0e55b230cfa1b08cd19f5c5228] - Use proper HTTP error codes - - - * [8ef41f3aa8d14fb0466a498fa39fc2a2226cf12c] - Added errorcode to dieWithError - - - * [9dbdfd02806aa031e7ae9c170aa65e0ca4c852d4] - Remove silly print - - - * [84414c8a0a7a0fb08e8e1b1cc1c8a1b24ef76a81] - Set shuttingdown on exceptions - - - * [632788bda19b018cc4574758de562ca10aa78198] - Revert back handle_error bypassing removed by mistake - - - * [34df1faa1dd85066e0fbb10ed8439765207c19a1] - Show IP in statistics - - - * [a548d3213870bef9fd6378966d167d2718deb038] - Store client IP in clientcounter - - - * [ed3ebb062e3230aa98426653a4a4cb1e0a90d347] - Handle NOTREADY - - - * [22b96128f0d047a774e75a5bab78be4beb8b1463] - Do not log error on shutting down - - - * [79f2d94b3981ee080dab83bd48093d5320baa745] - Close socket on AceClient destroy() because sometimes Ace Stream hangs and doesn't send SHUTDOWN back. - - - * [a9232f96ffbea51895ef8a99f4b32c22bb6ec307] - Added simple statistics plugin - - - * [70c5e84e0d7241be9ce5be52ea9ddc1c29bfb35f] - Send AceConfig and AceStuff to plugins' __init__ - - - * [ac3272dfad68903230477df10231674494683d5f] - chdir to directory with script to load plugins correctly - - - * [7541a09c015278b2797b0b74ee1fcacd132b4465] - Torrent-TV.ru plugin - - - * [e2eca55679f8434383deb037fef5a9e3843a476a] - Remote key generator timeout - - - * [455aa7c142c4e49a36966c5247cce274a4a4e58b] - Better exception handling - - - * [6c24609f0815a6e3f05e1482a58a466698523e92] - Use pure Exception for AceException and VlcException - - - * [3f2339db4a7c9114c00bfcd2927b3c5c03035e32] - Yay! Plugins! - - - * [7bda2efa1ff4ca39500431e61eb06358fd882205] - Change str() to repr() for exceptions - - - * [1f9d78553785154a75d6ea1ac732cc79eda18ee7] - Interhit from object - - - * [1f5574e05cf7f4d3cf10cf3d202ba9030adf6a8d] - Do not print HTTP tracebacks - - - * [384dc9f028eb5ee1ee39749c8f94f4c491cdf937] - Classes renaming - - - * [b77fdda94743d9e47e5b8f8aa3802bd570378755] - _close_connection → closeConnection, die_with_error → dieWithError - - - * [beae077735592dddfd5b475f4da9f7a91376fb2e] - AceClient termination in non-VLC mode fix - - - * [74747a4c9bbbbcc85e67a460b4c2ebdae7d33bc4] - Small fixes - - - * [79153cda082c6ab5acb897370c51e4d3dd6cec8a] - Removed unnecessary check - - - * [6ee4556607522f2c79102fd658ef437492cab50f] - Fake headers for players with fast timeouts - - - * [0082e6560db099fccfecf96a960d5c26e91663e5] - Move fakeuas block higher - - - * [d91e6659789b1c7058284b509fbc97f99c5cf2ff] - Set buffer to 4096 - - - * [a2a879bd8bee44c28353aef1d7d965947fb52dc8] - Typos in config - - - * [71796af71a56b82c4d8bc5d6c5f488fd15f120b8] - warning → error on main:err - - - * [7865b57e3d7469a6239c8e44b94ad283269021a7] - file_indexes for PID - - - * [a3cbee9d94a4d7123752877279ae19ffceb41d46] - Better error handling - - - * [de837812b4ddb5540dd1247a549992ea3ba87764] - Update README.md - - * [561e5002116eddfbeb2c42c4a0f07895bf9a9ce5] - Wait before destroying Ace Stream connection instance - - - * [813f6a61d398655fe2dfa36ce496ab27f92a0e42] - Set VLC's ts muxer as a default muxer - - - * [9bc66241fcb0d16908fe32d1f2ef571fb8df9e47] - Update README - - - * [75eab202537d2f71f1072caf646d4b791bd3aaa7] - Option to force ffmpeg demuxers in VLC - - - * [5fe5c05c07463d5fd8fc4921f96da4e85c927216] - Use ffmpeg's ts muxer by default - - - * [f1b7d314e6ba74d1ae55160d3da837ecaf91f367] - Added VLC muxer into config file - - - * [3e79df29001961a0af4ac89d302ae775ca87eee4] - Send stream parameters, like file_indexes, developer_id… - - - * [4f4d325056b815714810ecacead35a519396af58] - Added gender and age configuration - - - * [bede680e9038b85fe3965c722506595ed1dfecf3] - GENDER -> AGE - - - * [ca1e482e6cbea481cf893629f6f7ff5d1357a7fe] - Woops, that was handled not as a tuple but as a string - - - * [115fc121044d4174422c6091f8ecd021edf37307] - Do not handle main:idle as bug - - - * [8455a4d5240a96704972b436995c8ac7ea88096b] - Close video before destroying AceClient - - - * [005d4e51d774ae4a797745e166b3d6fe66cdb48b] - Handle exception on socket read - - - * [e34f670eb48b217ea8e7520d00494577cc874fcb] - We should not sleep twice with VLC - - - * [bc755ffdfd7b75417e01231706f3fd1c8dae2ad5] - Another forgotten thing - - - * [af165d702e53b046e311759108ada9cd1ef32d88] - Better client disconnection detection - - - * [e2c78d55bb8d4a0a0c6698bdf48b0a49c59d0e2f] - Readme update - - - * [7f8e775913554ad6828d6c38c84e068596703a38] - Fake UAs fix - - - * [44741fd09246ce51e792b6ec362c968ea8a1ed71] - Pre-buffering timeout - - - * [88fa5ae3c5c606e366d99d8958822bd0b9b5bd06] - Start Ace Engine if not running, Windows-only - - - * [0ff3efb34851d28f283db8c086991a03710bbf93] - Small refactoring - - - * [cdfc45c8c272eb2235cc26a421e9b4e1ff4ac651] - typo - - - * [e7fc3423210f653aed311241beaee2a4f97f8402] - Fixed torrents with VLC - - - * [98a532df3826fb3cb1c7906e9f8c605b61997ad9] - Use remote acekey by default - - - * [f47d92a4c8e44e706c202ba9d1f9e93f9f72b5b0] - Added remote key generator support - - - * [97b58fa7cec190a1aa4bbce5d3078e3490edc005] - Check user-agent existence - - - * [bf06e3450279564c0da8b0f95d97fa1961b9abc7] - Workaround try #2 - - - * [d65b5544e3ec919c2453cbf70e9e40a9cf4ecd1b] - Ace Engine BUG workaround - - - * [a43b6feb68b0d870cdcca2da8a5719cb4d3093ff] - Wait for SHUTDOWN and close socket after it - - - * [baf5a60e20ee12bcbd60eb014583d901db4399d2] - Fixed SHUTDOWN - - - * [bc3dbd7b3887639456053068c15c9517bc5e2fcd] - Merge branch 'master' of http://github.com/ValdikSS/aceproxy - - - * [d5e0833631cd00b691b67d6803c59b9819792401] - Better destroy handling - - - * [50cffc3e29dc5503a3d4a8da603312abda21da9b] - Close socket on SHUTDOWN - - - * [83d80c5b3fed66e571037c1d4517c07f4b12e4b3] - Update README.md - - * [3a46ba0de04be4981811f19063873c6fb73ace19] - Update README.md - - * [7855ff86b7aa9963a54db908974e1fd0fa2cb3aa] - Update README.md - - * [afab726d30144fa5c7dd9ac87c9de40d161f1b3d] - videodelay handlers for VLC mode - - - * [d19923ea0fefaf92110f8857c7017a464a959479] - Prevent deadlock and 100% cpu usage - - - * [dfed97668607b8fb25c102ab6d53ddb273cf7e3a] - Ugly race condition fix for VLC - - - * [e83194ec862aacfbb6c3b82cd2da333ef149559f] - Oh, forgot about this - - - * [3aa02b413d1427403c9ea828fbe0d819fc8db64e] - Yay, VLC VLM support! - - - * [39bca4d1f7b8d07700c6403ea98194b78247730c] - Merge branch 'master' of http://github.com/ValdikSS/aceproxy - - - * [c28a7f83e41893d7f245282af12b6afe3049afdf] - More debug messages, better error handling, configuration in another file - - - * [fac7d884cdd618c7f084d5bae4d17452ab72031f] - Update README.md - - * [90c4f968008cca008d5bb82a7d7e645f95582a95] - Update README.md - - * [6a8bf034fc9122e3bcf82a1fc807db56bd1a1ba1] - Added Fake UAs - - - * [e43d260c3bd2fba38ea398a41be2c2594e6a364c] - Move httpdelay sleep after headers sent - - - * [a1d68e312cfefc70814703992f4c43805eda861e] - Small fix for hang when URL cannot be retrieved - - - * [f2a7146055376ac4dd9d19b4712982b73d2528b6] - Removed queue, added headers magic - - - * [baa1905cfedecf24002cbb190ecf71b8bf3c4810] - Added torrent and .acelive handler - - - * [e63cd0db78622c7fce93efa918692e0cb7e19f27] - Added proper headers - - - * [7f7f62e2b11ed07b6837c2501b4cb57b392005a7] - Added public key - - - * [d21e4f975028ca2995183147d80156aebab4ad6d] - Close connection properly and add Connection:close to headers - - - * [eb0e8940d054b7b6bcdeed0e86d4bd6f219f5438] - Fixed some deadlocks - - - * [1164980d2c18d253e4d18a4f0ebdd3b6242654c4] - Quick fix - - - * [dd44ab07b9b1c9d6e4c5e70d0782382437d01862] - Fixed exception type - - - * [f7b69a1eb677fcc2946d6acdd0efb36ce83db9c6] - Added PAUSE/RESUME delays - - - * [f559e5507bd841921ff3427a60e51bfdf2348129] - Added events obey to proxy_write - - - * [2a003a4544107a4d69f1a5e6f8fac882b988f2a2] - Changed httpdelay to 1 - - - * [3e7dd249ec248219ee516a7ee3c244a104c9e4e2] - Added PAUSE and RESUME event obey - - - * [961cc72e996e75eca2e19f2c495270e0e2344e04] - Added PAUSE and RESUME messages - - - * [112a2fb6cc3bf59be9218002b11115f12b445f01] - Added proxy-side buffering - - - * [c25140a647a09e98907a0cfa861d5d09dc49616e] - Added delay - - - * [d04c494f1ab0533d43c89a407297a44e5bc2dce3] - Quick fix - - - * [e4727e652c2de16040d3bec657046ad3a0810625] - Update README.md - - * [686f06057f85a891412b45f10acea9793971e57c] - Update README.md - - * [2013315644a41cd93e2039752d7cbe61fd98b6ab] - First working version - - - * [83b348e29c66cc5f29a7ee64aec1b45153b01c0a] - Initial commit + Logger output changes - -- Andrey Pavlenko Sun, 06 Nov 2016 20:52:48 +0300 + -- Andrey Pavlenko Mon, 13 Feb 2017 16:05:06 +0300 diff -Nru aceproxy-0.9.1-610~26e79d1/plugins/allfon_plugin.py aceproxy-0.9.1-638~c939589/plugins/allfon_plugin.py --- aceproxy-0.9.1-610~26e79d1/plugins/allfon_plugin.py 2016-09-09 18:17:56.000000000 +0000 +++ aceproxy-0.9.1-638~c939589/plugins/allfon_plugin.py 2017-02-13 13:05:05.000000000 +0000 @@ -54,9 +54,10 @@ # Match playlist with regexp - matches = re.finditer(r'\#EXTINF\:0\,ALLFON\.ORG (?P\S.+)\n.+\n.+\n(?P^acestream.+$)', + matches = re.finditer(r'\#EXTINF\:0\,(?P\S.+)\n.+\n.+\n(?P^acestream.+$)', Allfon.playlist, re.MULTILINE) + add_ts = False try: if connection.splittedpath[2].lower() == 'ts': diff -Nru aceproxy-0.9.1-610~26e79d1/plugins/config/p2pproxy.py aceproxy-0.9.1-638~c939589/plugins/config/p2pproxy.py --- aceproxy-0.9.1-610~26e79d1/plugins/config/p2pproxy.py 2016-09-09 18:17:56.000000000 +0000 +++ aceproxy-0.9.1-638~c939589/plugins/config/p2pproxy.py 2017-02-13 13:05:05.000000000 +0000 @@ -39,6 +39,6 @@ # Format of the tvg-id tag or empty string tvgid='ttv%(id)s' -# Zone id - MSK, SPB, SAM, etc. +# Zone id - AUTO (1), MSK (2), SPB (3), SAM (4), AMS (5), ISR (6) etc. # For more details see http://api.torrent-tv.ru/v3/api_v3.html#toc-35- -zoneid=None +zoneid = '1' diff -Nru aceproxy-0.9.1-610~26e79d1/plugins/config/torrenttv.py aceproxy-0.9.1-638~c939589/plugins/config/torrenttv.py --- aceproxy-0.9.1-610~26e79d1/plugins/config/torrenttv.py 2016-09-09 18:17:56.000000000 +0000 +++ aceproxy-0.9.1-638~c939589/plugins/config/torrenttv.py 2017-02-13 13:05:05.000000000 +0000 @@ -23,26 +23,30 @@ logobase = 'http://torrent-tv.ru/uploads/' logomap = { u'0x0 Fireplace HD': logobase + 'H1VboxDJC7sE7x3nKXoYT0X5r4LIqD.png', - u'0x0 Music HD': logobase + 'hFj4tnC5uqAgpod3doHnJGZxgZXaiP.png', u'1 HD': logobase + 'FtLnmUwjG18XJFEKYvLKjwUq1gwHVZ.png', + u'1 Мистический': logobase + '6NZHK1Lz0SbqVMhy20L9gPEJjW89mQ.png', u'1+1': logobase + 'omm2Xc8xSVIT6Od6ca4QqMrEXw3jaK.png', - u'1+1 International': logobase + 'o6wtkD3LF7NT4yADrcoBrXVWDDrvgV.png', u'100% News': logobase + '9yEWvPmTcFS8lyQ5NjJ7vbYOa3bx1W.png', u'112 Украина': logobase + '0AUjU7DOzZcpizC4UR19vDZqqthSe0.png', u'112 Украина HD': logobase + '0AUjU7DOzZcpizC4UR19vDZqqthSe0.png', - u'12 Канал (Омск)': logobase + '6DFMdGjXUjvzyk3B5ltbEd8mWVxAcD.png', u'2+2': logobase + 'XHXBC3ghvhh100BNXylSgJLx5FVQgD.png', + u'24 TV': logobase + 'QkclX0M9kXSGGDRhBw8H0T37VDzwNb.png', u'24 Док': logobase + 'H1UXBai10DjYfScfv1sNAILV9EPDer.png', u'24 Украина': logobase + 'XfKEdfsy4S1zbE8n2tB1tNNe9IkrRP.png', u'2x2': logobase + 'hTpJUV15GSTxZ5kJQGLcn42kCzKyEH.png', u'2x2 (+2)': logobase + 'ZPOhZle6vrDaulo2KMmyrCkkkLn7Ci.png', + u'360 Tune Box': logobase + 'WofrwD5WhK8TxQvbTBchuo1QKcbbFS.png', u'360 градусов': logobase + 'K4tiqb5ajIgmxqh8X5moJuDjN7q5hx.png', u'360 градусов HD': logobase + 'K4tiqb5ajIgmxqh8X5moJuDjN7q5hx.png', u'365 Дней': logobase + '0IZrVwoxtmjtgnWu5Dj4Hb8FRc8NIX.png', u'3S TV': logobase + 'AL7uQOgsyYqE7V1BagxC2jqQVOvucp.png', u'43 Канал HD': logobase + '1mNoU1QXmcmK48eVTlnADtsEBmA2sN.png', + u'47 канал': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', + u'49 канал ( Новосибирск )': logobase + 'WK3XEVPHqpV3VkKEBHi8QSXoPKPj6T.png', u'5 канал (Украина)': logobase + '9La0uS6S8rMKr0BOh6vSCQLNiCqN7N.png', u'8 канал': logobase + 'wKPUJjcpZIfI5zBSZwNayOlv63zRNV.png', + u'8 канал (+3)': logobase + 'XaNnxrpV00f3Zcfyw6WAg6uMT8NznG.png', + u'8 телеканал ( Красноярск )': logobase + 'MmesR31Atj0JdU6q1MaqXXdm533h00.png', u'9 волна': logobase + '8zDeTSBhsmJDbXo9dxHA1c9mDOP9sP.png', u'9 канал Израиль': logobase + 'dsi2SD7Pmq3sxxaNPpRAUgKmxXh4s6.png', u'A-One UA': logobase + '8rEKNCXhKeWnUvGhWCsrb2RN5FMqJi.png', @@ -50,33 +54,39 @@ u'AMC': logobase + 'rozrC8ZPYA1YGajyow35doeVcaQzpa.png', u'Amedia 1': logobase + 'jT3vAEOG5jTd2t8GcC797Bw5W0kSl9.png', u'Amedia 2': logobase + 'fAvxTQbWu0DAcMkqej0m73KohAcQJw.png', + u'Amedia Hit': logobase + '3lKypp7zXsJ3FDusXzKw9hHnVLythX.png', u'Amedia Premium': logobase + 'ornzQpk6WCW6xk0lyBhlwqH8u2QyU7.png', u'Amedia Premium HD': logobase + 'ornzQpk6WCW6xk0lyBhlwqH8u2QyU7.png', u'Ani': logobase + 'vui1cRrE05CZv1N9Qb20jJ6mTFOJue.png', u'Animal Family HD': logobase + '58VN85gBIna4Ko2K2uNeG6ZrfFNTLK.png', u'Animal Planet': logobase + '45.png', + u'Animal Planet': logobase + '45.png', u'Animаl Planеt HD': logobase + '9HZGan5rQItVQOfnB91FGqyJXjoqYV.png', u'Anyday 3D': logobase + 'r8hT8FoPXteOKe9H8FjQTdIttfOg8S.png', u'Anyday HD': logobase + 'r8hT8FoPXteOKe9H8FjQTdIttfOg8S.png', + u'Arirang TV': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'Armenia TV Satellite': logobase + 'M4UAMT6cEyL3zuim9fzy38vZRkIfKq.png', + u'ATR': logobase + 'uggqxQxxDTuz1P1mY4PZdlRcAKow3F.png', u'Az TV': logobase + 'FB2qxgNm8xTU6YiR2fY1jH4PIRR2SF.png', u'B4U Music UK': logobase + 'LlfDsq3FEU2D4P3lmj25fvl6zQnvNM.png', - u'BBC One': logobase + 'ofuDCyM7MgzwFbzG2pyavFu6xeRHwp.png', - u'BBC Two HD': logobase + 'bbUzq7qIDlw2K8zk0oRHZzc4yHJkW6.png', u'BBC World News': logobase + '8cSYWwvq6BAzcGDjJODvCGQYGJ2c4S.png', - u'beIN Sports 1 HD': logobase + 'lqnLsL3LkmnVte1I8djXkbFEYFx91o.png', u'Bloomberg': logobase + 'OTsoNZRT8xjXz5nnTICPCQRvNLjBal.png', u'Blue Hustler': logobase + 'dFDAUzpGhQFOyHz59iyi7gsGHHMQbj.png', + u'Bollywood HD': logobase + 'HXzWxtMxmXkrpgr88Kh8Z1A8F6o5dK.png', u'Boomerang': logobase + 'tsP2U3zkp5o8B0TD6luRLg0leS9FvM.png', + u'Boutique TV': logobase + 'bDSWVUfAEYN9VS25roxW52xO1pj6qp.png', + u'Brazzers TV': logobase + 'VPCmFsMfpnB0pg9VBzvUG5TkRcHTsR.png', u'Brazzers TV Europe': logobase + 'OmVBp3Kz4Lx722dq2e1OxE26QSxrDA.png', + u'Bridge HD': logobase + 'hSVhfaLPt58KBflQjQxwiDqqO6h3rm.png', u'Bridge TV': logobase + 'dPhBiaViIznwjeWU3pTbIXFmS3iJkU.png', u'Brodilo TV HD': logobase + '0pLPWiGqZjDe2O4vbPd8QL0qGsA9lq.png', - u'BTV': logobase + '52ZaTijyyDOsKI7B1fYnUWliW6i2ah.png', + u'BT Sport 1': logobase + 'whrGkbmFh1pcdxuanV5u4zcD7PDuhd.png', u'Business': logobase + 'wvwXc2x8Bjev90GD6LO6t7TL2aKW1h.png', u'C More Tennis': logobase + 'ql4qy7gHN4GtWhcqfd97HqXUs8HXI9.png', - u'C Music TV HD': logobase + 'YhtkJhsV8NKwm4FGWhQZDmYcW0TYQS.png', + u'Canal 3': logobase + 'rb39jMz38xLuXKGCuWD2GcHHMEzfX1.png', u'Canal+ Sport HD (France)': logobase + 'I4vGNtOsYtkBnwOwFi94RHazK1ngqw.png', u'Cartoon Network': logobase + 'NTNQLLri3Hh9iqYjW7VEkFYJsTLjk9.png', + u'CBC': logobase + 'GuGWslWHNQ2fb88q6JYKSAV1n9A6hF.png', u'CBS Drama': logobase + '1Mcq9jbl7qPeXpT0bbPTnf8aM3f7dq.png', u'CBS Reality': logobase + 'QbWaD2vNgLRLY0Hsccg3nf9azAXRld.png', u'CCTV 9 Documentary': logobase + 'dqoArqO8dd09vzsSSQPqLUj5wM9O9M.png', @@ -91,15 +101,22 @@ u'Deutsche Welle': logobase + 'RnqBDfde1HP4OkZhXWlKB1xkHi6Io9.png', u'Digi Sport 1': logobase + 'gk0ajzoQjMHlBKM298kWjcfNy1P8ec.png', u'Digi Sport 2': logobase + 'x1HMd7tDoprxuZvq90Uj2Gb1eEOhTm.png', + u'Discovery Channel': logobase + '44pYdn5EiVvHLg0VtshNaBO6HBUosF.png', u'Discovery Channel': logobase + 'oKx1ImWVRT3AK3DHYWUVc71JZUkwu5.png', u'Discovery Channel HD': logobase + 'SmWnYlOvkJn8GzttT2UY0vmo8PYfMg.png', + u'Discovery HD Showcase': logobase + 'HCjNT859EyclaIl0GSueEiUacnR5Qd.png', u'Discovery Science': logobase + 'GAaO3EfDwMuHAIelG4gYW6TDEYbLnS.png', + u'Discovery Science HD': logobase + 'nnC8c8Z3iWbGSsgDORtWrS6O5n0ljr.png', u'Disney Channel': logobase + 'JxEjTeXwExjnxutQGKJBmMI85tpNqK.png', + u'Disney Channel (+7)': logobase + 'LZQKp6qoXQ8Ef64qUzcCOACy8qJAoq.png', + u'Disney Channel +2': logobase + 'awk1MeZ3IP1HOAtPt4jfvdR2P6YqIc.png', u'Djing Animation HD': logobase + 'ZA8pwcclRpzTflNKLqeZmDHCA7lHoX.png', u'Djing Classic HD': logobase + 'fDCLK7k2nYRKPAD125JdHM5uuEM7bZ.png', u'Djing Ibiza HD': logobase + 'aGqPHXL6MxB8j4GXldadnOR3r5D03f.png', u'Djing Underground HD': logobase + 'ceUcUA6hsEV7tBVmSF1chE203B14M3.png', u'Dobro TV': logobase + 'tcHbtjkY9gYD4VqipgwLP2BYxgdrZb.png', + u'DocuBox HD': logobase + '3AIG2M0cHQuzeyQA2o1hClKAy1F8Ir.png', + u'Dog TV': logobase + 'NblfllG2mrqX3Zrb36rv7hLUe2sG1R.png', u'Dot Dance HD': logobase + 'Z8TDmebVzyNS57me2IO2rd2LaiNRM6.png', u'Dream TV': logobase + '3k3m3ElnUQ0UhX54qa7hOGbmNjKZSc.png', u'DTX': logobase + 'bx7MosYUikfuwwIOzx2elT6Dh7h50I.png', @@ -112,20 +129,44 @@ u'Eska Rock TV HD': logobase + 'VU2POxFhYCM4XhFAtOp8Y4sdlbu32M.png', u'Eska TV': logobase + '1KX19DgurgoaSKNTTpjXCeSQr1epwv.png', u'Eska Wawa TV HD': logobase + 'r9d697qox4MFgypnVqeILYWKcfbwNc.png', - u'ETV 2 (Эстония)': logobase + 'HExQnCel4LeRvVFpvXj7hXfMXslkGE.png', + u'Espreso TV': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'ETV pluss (Эстония)': logobase + 'cZBJJjYDyuuJHMQk3ZOogcDZYcu2SK.png', + u'EU Music': logobase + 'hubnM8JT96ngUDKI6WBYv9aKMIyWvS.png', + u'EU Music HD': logobase + '1sHUUmgTa6QmeeXWeZ2mFfPZyHX4Mz.png', + u'Eureka HD': logobase + '2cuuRl39vFAHg1pjMKWJJoqwYOqo6y.png', u'EuroNews': logobase + 'Vb3fP5gUK0q40WuzYeUhMT7RQmDg27.png', u'Europa Plus TV': logobase + 'PkatgpdmA4ArsgSG5shu0ZCQQ5RgMx.png', u'Eurosport 1': logobase + 'QA9jgUaQRrE4vMno04eM3aUrklXOce.png', u'Eurosport 1 HD': logobase + 'DpFTzUEA3y67Z6ObTPF4xH0XLNRAZm.png', - u'Eurospоrt 2': logobase + 'qYbdkVFDkhGqTAjXlRtIj2Fg45bmrm.png', + u'Eurosport 2': logobase + 'qYbdkVFDkhGqTAjXlRtIj2Fg45bmrm.png', + u'Eurosport 2 HD': logobase + '0mo5WOW3xn7FmcIRM9PMZxb2Zgad86.png', + u'EWTN UK & Ireland': logobase + 'maP6bdwOGv77xHPvRnKBHww9cmG2oV.png', u'Exotica TV': logobase + 'K5hm3mURkkDaSc7RI5RDti5edynMGl.png', u'Extreme Sports': logobase + '21FhIqWK82JDPNuLTEIC9hSO2EHfks.png', u'FAP TV': logobase + 'd5ulbooZicKw3aMLwn2Ho0yD9c46T2.png', u'FAP TV 2': logobase + 'YVmUBY8cBPO8IoL4djlyeKCDbs6f0p.png', + u'FAP TV 3': logobase + 'S5gXPPcF53lFHQ3kgJofKMQudRQKPt.png', + u'FAP TV 4': logobase + 'xv1QyBV2OkaDbZ1ebRB2FWwfw40BR5.png', + u'FAP TV Amateur': logobase + 'LGfemDTp3Z3mvhn1aKSGVvtlNu5zMF.png', u'FAP TV Anal': logobase + '1PVgf85c4DjIsiWEikpEHDV1j1m6ph.png', + u'FAP TV BBW': logobase + 'PHnwbskpP4oixpMjlJKgGvTAajXFSg.png', + u'FAP TV Compilation': logobase + 'FXT4PI3HHWIGlk49jRpHyGQBTTVbmt.png', + u'FAP TV Gay': logobase + 'vJB3tfzXuDX8R7eLXV63tCFgxnOgP1.png', + u'FAP TV Legal Porno': logobase + 'QMv8xcYgTaW9108ymib6XyWXRMI7dn.png', + u'FAP TV Lesbian': logobase + 'M3LLmt76GGyLBhpAEnRtn368pAeGH3.png', + u'FAP TV Older': logobase + 'G1L5Qh2QVnSu6zEVua6KOI4hxtUfcn.png', + u'FAP TV Parody': logobase + 'mu4NIjgq7Xu5nt32zTSxGvBOfk90xt.png', + u'FAP TV Pissing': logobase + '3QJ9sSAI90ALizvl1B2sbt8WxIVLSu.png', + u'FAP TV Teaching': logobase + '3MzvfwDLSX8zUmmuO7TpS8O2iD03Tj.png', + u'FAP TV Teens': logobase + '7Z9gyzosm1oUC82aFfA3mBG9YAjOrS.png', + u'FAP TV Trans': logobase + '05P2Z8lWWIgaEmvWcTRO1R9F0lMPZL.png', u'Fashion One HD': logobase + 'iPs2ptiBXm8h0KSnRmyqu45texHNig.png', u'Fashion TV': logobase + 'PSjqabjhYIBqcS8hUA8WNrZEjV4zZY.png', + u'FashionBox': logobase + 'bNAHBFlVPUSr7PI5bPQVXQcJiOcjd2.png', + u'Fast and FunBox HD': logobase + 'D88mJMen7WRxrg0C7TFFeiXXI1gRHM.png', + u'FightBox HD': logobase + 'mZbmQtneRV9cWJsMQ2PSfkGqbsJm9o.png', + u'FilmBox': logobase + 'XVIhYgI4sM1faDqfgMxWqbuOew9bn4.png', + u'FilmBox Arthouse': logobase + 'aZIcmFuP4mihAQoNXEK05oglDfhupR.png', u'Fine Living': logobase + '22I1fK1aMCUgeYUCV0K3vwmlJKELZD.png', u'Food Network': logobase + 'W68LEGlOOMPtN0qoGXvdkWhHBjKet6.png', u'Fox': logobase + 'XGC77wQNeEyaJ2z2mDipyIPsoF0xc1.png', @@ -135,41 +176,56 @@ u'Fоx HD': logobase + 'Pl8S60EJ52htHxi1gAw1SS1y8i1p3z.png', u'Fоx Life HD': logobase + 'Vou521VpOGAGqhp4HUfiG7BSbKNSk6.png', u'Galaxy TV': logobase + 'pU2NsRP9CVtEgQuDTi9jcTYV8iAD4a.png', + u'Gamanoid': logobase + 'DxEQkipHmJjSY0wHGKHDV6eAZKiwoG.png', u'Game Show': logobase + 'Uc9sBHj0DAYzfXMZmdxeriCBZvUpeb.png', + u'Game Show': logobase + 'WgebxxZr1mTHsGtMTYZzLvV3OnPQrQ.png', + u'Game Show-HD': logobase + 'sB7MetJbNWRBt2Hk56gffI5F9hraLt.png', u'Ginger HD': logobase + 'eW7CqWW2bppbpKzhNctyElyv5Nzs30.png', u'Glazella 3D': logobase + '7EM3eHww2EvOf9jgeFPdZrsQwO8Fz7.png', u'Glazella HD': logobase + '7EM3eHww2EvOf9jgeFPdZrsQwO8Fz7.png', u'GlobalStar TV': logobase + 'Y4kNxgbAnPGCt753P73NzCIbcNz5lD.png', u'Gulli': logobase + '2IynBdmw3mmdXt01r8DXKxeor7STnw.png', u'HardLife TV': logobase + 'fHPc5oaRdIzKpHTqBFnHA4O2LVf91D.png', + u'HD Fashion': logobase + 'EU8qD4hyW8aJjCdSYOVNOMk8WP02vw.png', u'HD Fashion (SD)': logobase + 'nEIXShrZ56g4IA4VKXReUBF32iYwKJ.png', + u'HD Fashion ukr': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'HD Life': logobase + 'jUteUS0xRGdvLyBVqNjowEUDkOjT0t.png', u'HD Media': logobase + 'woAI3zcytfbyiX0LBRToKzErJNy1qF.png', u'HD Media 3D': logobase + 'takNty6pirY7TeCRPX5VyUW1mZHHxI.png', - u'HD Кино': logobase + 'iHVs7YvUVlUvMTnlma7GMpX5p0Tpy1.png', u'Hello TV HD': logobase + 'o4WXPUTr5f2tuXFdjuLqgEg3qieGre.png', u'History Channel': logobase + '9cVifexiWW0qWDhhpnLNVydoZkeRqZ.png', u'History Channel HD': logobase + 'VFgU260pmiIyPxCzD3f8R7Yc6DXClH.png', u'Hit TV': logobase + 'FnCnW1vmvm8gjAwMGXe2Q8qtN1C3zy.png', u'Hustler HD': logobase + 'LBz8ia8AASewVuLjMs5v4MDiVYfsJO.png', u'Hustler TV': logobase + 'wgAR4TI1xdd2LAtnbkpvFAfnnn5Uru.png', + u'iConcerts HD': logobase + 'fLNDK6Nxz7xMv61nOsZvED749DlOtz.png', + u'Ictimai': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'ICTV': logobase + 'YuNtYxhj9vqgTU9kVuz9imhqviY4PZ.png', u'ID Xtra': logobase + 'fq3ovkZeu4R4YVYt1VMZN1NU7mMrH9.png', u'Idman TV': logobase + 'UhhUZdtM7FjDFbmoleWalj7tp6nj5o.png', + u'Iland': logobase + 'S2eR34Z8l9ne1lteBOLvknOq64jMJN.png', u'InterAz': logobase + 'rdntbmpYEYtyRbW3nGa1FUNZPXF53O.png', + u'Islam Channel': logobase + 'XqP875iZVDQXcyNB4AnAEZ4n3PX9xs.png', u'Jahonnamo': logobase + 'OqNuJdvRTdBh5NeydnpmCfMnTJs9XZ.png', u'Jasmin TV': logobase + 'MBRUFcRx5wtHLZmgahvcGdXB2ERdst.png', u'JimJam': logobase + 'BPDFCK5SQF3mXu5MsDNSdtvz4Gjawo.png', - u'Kino Space TV': logobase + '28A3JkU9kVHQWimTbBinKpqYyjZHcA.png', + u'Juce TV': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', + u'Kidzone': logobase + 'CMwzzYODhlLDC188nnF28qxfwvMkWa.png', + u'Kino Space TV HD': logobase + '28A3JkU9kVHQWimTbBinKpqYyjZHcA.png', u'KroneHIT TV HD': logobase + 'dq6m0UE9ffgAbXNt49qDlIAr7T8lud.png', + u'Kvartal TV': logobase + 'HeyS7MiMm71GffX6GeOFDMIs2NOgLv.png', + u'Kvartal TV': logobase + 'zkg5FwPBQonqxQlFIOblrboFQpHK6i.png', u'Lale': logobase + '99AZ5VwFy9yZrgsdZ6kIxcoYqwSyUH.png', + u'Lale': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'Lider TV': logobase + 'LByLhdeQ30Ln5pSZRYSpoLpXQS5Ytr.png', u'Life78': logobase + 'ZloJoTx0yurBDfEtB6V91vRuF8mxB4.png', u'Life78 HD': logobase + 'ZloJoTx0yurBDfEtB6V91vRuF8mxB4.png', u'LifeNews': logobase + 'K8dBCUNz1BSwbgUYYU04i2qJpQKLMc.png', u'LifeNews HD': logobase + 'Mvurp6cp7Sq2fV3tnFBwPtJy7Ifm1i.png', - u'LNK': logobase + 'svzmHjJUDAOijKSBd3HL9XTvBOBPij.png', - u'LRT': logobase + 'sgH7Pdrd27V3cvlvg8OFOzsL2gLbcF.png', + u'LTV World': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', + u'Luxury World': logobase + 'QvaV83TwgWHnaGmw4C822MCNYi9zio.png', + u'Luxury World': logobase + 'LB9Pgt6QNYOVDEJqKI2xcmq6VZOP0m.png', + u'Lviv TV': logobase + 'VMl4S9yd5IYFAVFaR8XG6KEm5pgVu4.png', u'Maxxi-TV': logobase + 'uqyYr07PPk2OuEdnNrbkMHVlGZCJp5.png', u'MCM Top': logobase + 'b4SLIxXFbKUErZxBXfGoo6eQN5Mu38.png', u'Mezzo': logobase + 'GUzJ4cyK50ZahOSIx6tTbwGLJiUnSA.png', @@ -186,34 +242,47 @@ u'Music Box RU': logobase + 'zaHCW7nPCyGRnqHDkenCIXo7d6vR7v.png', u'Music Box TV': logobase + 'fvt4pris0lwnVhSyUrh8QlyzWBhbgz.png', u'Music Box UA': logobase + '8T7Rnct8q2VHhRm0BcGFxCjxuYEArc.png', + u'Music TV': logobase + 'XQB0y9UMs7XT4YTtKd8AcYigdhP3Wv.png', u'Mute TV 3D': logobase + 'hlnSJQ7CeTNjKR9FmOki97DzTTgyLJ.png', u'Mute TV HD': logobase + 'hlnSJQ7CeTNjKR9FmOki97DzTTgyLJ.png', - u'N24 HD (Germany)': logobase + 'j0NiKCcpOnPBobWAE0CVBLsBhSLgCt.png', + u'MUTV': logobase + 'yDbkEj466sOzY5cCPVbCW6NIT7kkly.png', + u'N4 TV': logobase + 'R1NDSrUKnB1RoT8iv1okSe2xY39W4J.png', + u'Nashe Music HD': logobase + 'Xv91mHlQ4d5fCWu7xxpgy847qTWyc2.png', u'Nat Geo Wild': logobase + 'ciHIDUuHEnkEuPghbcqkDQx4vadle3.png', u'Nat Geo Wild HD': logobase + 'YYa1wyNA9prFK1APZ2ZSHGirPpm8kY.png', u'National Geographic': logobase + 'i6STSw6Hg1wWP18yBAOyKoKpSMeKLu.png', u'National Geographic HD': logobase + 'hK1waimMq9eAp0ugM19moSoQvUeve5.png', + u'NBA HD': logobase + 'ZfUh18TUU7KVCgzPPi79D5Zqtu8njC.png', u'News One': logobase + 'SnaQqBa1YMS2b8b8EGdZSMCConLbDS.png', u'NHK World TV': logobase + 'JJ8Sh9c7zA3PaXlK1ZaNjy3GgWQFh2.png', u'Nick Jr.': logobase + 'D87kJ3fIWIm5wKi5qxm24nbuPQv0U8.png', u'Nickelodeon': logobase + 'j66xpaZbfiYIgQxv76QAPckPVjmLNs.png', u'Nickelodeon HD': logobase + 'CFYx7Bd1aDSgkqjMLLQjFE6xe3u1E0.png', - u'Nova Sport': logobase + '8npwMe6SAEgj5nMBCoVPCemX9fKOvI.png', - u'nSport+ (Poland)': logobase + 'SVdxnEDeE280C8YVqsEIsJermTq1Ks.png', u'Nuart TV': logobase + 'aqMIuUixqLQYmJITPnOGtFkRPuTqKa.png', u'O-la-la': logobase + '7ddvb8Tivq7yuEgffrKildHi2BQcCE.png', u'O-TV': logobase + 'UlIt4rE3FZs7IQmPN3tsGS6fqY5F1D.png', u'Ocean-TV': logobase + 'cvBAngU16nJU1bEzxAEcMPiPvf7fVT.png', + u'OSN Movies Action HD': logobase + 'BUJiIaGHNzhRASjqNAgRIoC8Xz2Ket.png', + u'OSN Movies HD': logobase + 'UMzAVPfEGT4NxDvqA2nZrv61IFh4Bs.png', u'Outdoor Channel': logobase + 'SuxFoocUmay5G8jtfJaHL1yIbAT5Hr.png', + u'Outdoor HD': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', + u'PanArmenian': logobase + 'Goi0hXa9CeThenpkvfPq7E961TMUAT.png', u'Paramount Channel': logobase + 'Iyzjhb5BBRKfvEZdBwNJ785jzroODU.png', + u'PARAMOUNT CHANNEL HD': logobase + 'LD6lUAlPHwEUOGeqDfa4xBfCdZY8nC.png', u'Paramount Comedy': logobase + '5EtvAWXB7VK1Yw82yvO28sY28dU4ZC.png', + u'Paramount Comedy HD': logobase + 'xN7JbuSQbfkVaI4fVG4XuwRDjs85Hk.png', u'PassionXXX': logobase + 'U2oO3j1eda31nrTwHqaQ8psrLfH5CD.png', + u'Phoenix CNE': logobase + '4A3PI1xIjIeECNSMDDvOfwXd5n2sso.png', + u'Phoenix Marie TV': logobase + 'mC9hfoTbTEXlNXEVFrJvXaj78QGUhA.png', u'Pink O TV': logobase + 'aI99kH6bHY5Qt2ph4W1Nh0wxdzd1p8.png', u'Playboy TV': logobase + 'lIWBxmt5GDl9tg4KsQNtA0CuZWdOHH.png', u'Polonia 1': logobase + '3fzUyCBgUoJ6zqc92KSXh9g9utJEuO.png', u'Pro Все': logobase + 'OavKhOpBMn27qPDKJXXm5rgATgovgn.png', u'QTV': logobase + 'zmh1xStjBZGJ6U5g3xLoemD2oT3w3h.png', - u'R1': logobase + 'OducDuiwKukJTHXoQo49vuh62PvXK2.png', + u'R1': logobase + 'zI5CoA2qyiJYuXzqsXo0LBmJv9Tern.png', + u'Rai 1': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', + u'Rai 2': logobase + '9m3iFYefQC0919T6EfaIhIjiINBuEk.png', + u'RaiNews 24': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'Real Madrid TV': logobase + 'KfoLG7goywcRhMMCc3sO8IVwhuATLp.png', u'Redlight HD': logobase + '5tFZcJtKAZRbXtKGDuLe8FZ3lK9LI5.png', u'Renome (Одесса)': logobase + 'uXenrBCtSwAsv31RtOAXdn3hXm3i5N.png', @@ -221,7 +290,6 @@ u'RMC TV': logobase + '3CiAgachWg7ohgoU1Gilcm73hXhT41.png', u'RTG HD': logobase + 'g4MDyw0yqXWkIar8eH0cgCz4xhiKON.png', u'RTG TV': logobase + 'IeaOjwR6Q9eJjGZr0LYk2tpchM3ITZ.png', - u'RTL': logobase + 'Ekttfk03O2aNYv6OoYlVFEAykjDzom.png', u'RTVi': logobase + 'QBnba0xrWtpPWLL4yKDRixaCRQAmaP.png', u'RU TV': logobase + '161.png', u'Rusong TV': logobase + '186WxZMn3PGQyMlWsItM9JkSS4Tt29.png', @@ -231,53 +299,70 @@ u'Russia Today Doc HD': logobase + 'b8QePfFi6zsCDS7hfTeFWES5UN4SAk.png', u'Russia Today Espanol': logobase + 'zkPwjfFbktNO8EYDaHlYhwAeT88dmY.png', u'Russia Today HD': logobase + 'rL14fwCe8q10mKTchOwLkfwQVki9XK.png', + u'Rustavi2': logobase + 'WAgaH51sY7ujcWlPQGWeUCP12zIU8t.png', + u'Rytas TV': logobase + 'TBousteH8Slv9wtLiQ0ssNHXslA4yl.png', u'Satisfaction HD': logobase + 'isdNgbfGENuaDPSMzsz8WMjBzc1rah.png', u'SCT': logobase + 'bDRN0guXHaNHruxtyFkpKYz8J09Xj3.png', u'SET': logobase + 'tKzOKIcOQYrFl1VL8B0QqERFXCAYfU.png', u'SET HD': logobase + 'sX1unYoKj8JR7m8lbtkmPCClRrjAZ9.png', + u'Setanta Sports + HD': logobase + 'jW7pJhmebW2fZsXUTvDuRQLahgiLlU.png', + u'Setanta Sports Eurasia HD': logobase + '1wgHdJP76TCItF14FxDwBtak8tmxRv.png', u'Sextosenso': logobase + 'HXMvFMLO9weHUcolVmmMKpz98T0K4K.png', u'Shant TV': logobase + 'IgJpH1JzyjI55Ki2G2Ybz6jzOkwG0T.png', u'Shop 24': logobase + 'bCuxLyvoTk8l5cBRSyKFXjWjYucvlu.png', u'Shopping Live': logobase + 'HVwxC489SYFr8Ttqs1he9RZjEmJjPn.png', - u'Sky Sport 2 HD DE': logobase + '4dPVkJ96LwrNCbFCii8dJwJC1wEAzJ.png', + u'SHOPping-TV (Ukraine)': logobase + 'Yhipu86vXMGf0hxCTXLezpGpcUbibW.png', + u'Sky Sports 1': logobase + 'eFxo8gGgylCVPEv9IG4Pud4LdmfAhF.png', u'Sky Sports 1 HD': logobase + 'U4ngWpMf0MTbeOpX4Tgxelz0tPCBs8.png', u'Sky Sports 2 HD': logobase + 'B40l6w5yVEpOpZ31io1VzkubFnygLT.png', - u'Sky Sports 3 HD': logobase + '5Ft6qyJQXmV1MogsjpO79oKKruQj64.png', - u'Sky Sports F1': logobase + 'J9T7KUE84YobHuNThXN6Hl9UG21tD9.png', + u'Sky Sports 5': logobase + 'PL0v2id4iRQoYNIhS4BVyKSPeL8Hor.png', + u'Sky Sports News HQ': logobase + 'v4uIda6tAEaPiumlAg2kqbxlyAheDj.png', u'Sony Sci-Fi': logobase + 'zLWEgf9BbxBr1TR2Qj2NxVQBuPecEP.png', u'Sony Turbo': logobase + 'CaPjVaQrpyN138TarQ7CYBqBOz0ZF7.png', u'Sport 1 Cz': logobase + 'kCLlfkFz3Ba3BL9Jc9ZPgUKXh2piyv.png', u'Sport 2 Cz': logobase + 'YLmEjnczWQGJcZC0SxRcH4ifPcwYlx.png', u'STV': logobase + 'DbKEKL5gUOFHiruYRjY2H9gTLOV5mu.png', u'Super Tennis HD': logobase + 'mjQW91VJdjIEhADvOO2s6OiKNeUdUK.png', + u'Super TV': logobase + 'iRrgl4xiCvibdxWfiQcVUWuYCYCI9K.png', + u'TBN Europe': logobase + 'bZT2NYEtReHVOSFTcW8xuDTVDvcoUn.png', + u'Tele 5': logobase + 'BahbW0uBxpVOHayoLrr6uFcaBsiYSc.png', + u'Tele Vsesvit': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', + u'Telemarket': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', + u'Telesur': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'Teletravel HD': logobase + '4ZlASq3oDpOjXfhwluOzY74sy9elaE.png', + u'TG 3': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'TGirls TV': logobase + 'FufZ2heFswzvAbRkTQZs8UJBYGsxuG.png', u'TiJi': logobase + 'mD3GW0E7rdPwc4stjk7xrLI2gZn4Hq.png', u'TLC': logobase + 'gT4olUY9nFJbGRCdwd7hHJp1NJ5eJr.png', u'TLC HD': logobase + 'gT4olUY9nFJbGRCdwd7hHJp1NJ5eJr.png', + u'TMB RU ': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', + u'Tonis': logobase + 'f4NBZiozbHDSxPGRpphIXhvlBjytkG.png', u'Tonis': logobase + '38BRA5jO6LAsQ6rv1NC3FMJ6KALp8z.png', + u'Tonis HD': logobase + '38BRA5jO6LAsQ6rv1NC3FMJ6KALp8z.png', u'Top Shop': logobase + 'uD257Lhw7Ko2YD1reC0nRqW7lpy93D.png', u'Topsong TV': logobase + 'DsJRpcbI6rgjONbQftC5nHt1XMAXYQ.png', + u'Trace Urban HD': logobase + 'v7sxI2w7167Ku0bd9eitaNW508A7Ot.png', u'Travel + adventure': logobase + 'b1HifWKMyefmDDvaDAJTwNNTaD8LF4.png', u'Travel + adventure HD': logobase + 'b1HifWKMyefmDDvaDAJTwNNTaD8LF4.png', u'Travel Channel': logobase + 'fhmrYjlpC0YMxFd2RqOolbjlXMr0tI.png', u'Travel Channel HD': logobase + 'zfnAGLCvIu1fx9hfrITAZMoo9HYww4.png', + u'TRT Türk': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'TSN 1': logobase + 'GJsJeixsOKvFaXz8XKqvX4Uh6sUicu.png', u'TV 1000': logobase + 'WJMEvVafVakrm7BUMy1lzku7VQCx25.png', u'TV 1000 Action East': logobase + 'GblbxkDGXZyW5oWt9W8wuERQAiZ7ZT.png', u'TV 1000 Русское кино': logobase + 'ch5DX6f8hxDnmyzrjotUoKHNGzcw9P.png', u'TV Bakhoristan': logobase + 'LoXaN929SQC5r5aQ3JETDXwG6VlPMk.png', + u'TV Mall': logobase + 'hao8n2RWJzxwNaiVHUawwkNVG6X4Zp.png', + u'TV Rus': logobase + 'MgGR3UkXL6TDO1kA9E9xxH7EYvEwu9.png', u'TV Safina': logobase + 'mJUmNhJbQqcr2NPppAryEJqDPBJGV0.png', u'TV Sale': logobase + 'hs0YdiUTlpRtb3wTiP4cXboX0H9oTN.png', u'TV XXI (TV21)': logobase + 'TKchoTWZFRMmGDBok08zoEFJ8mJJCe.png', - u'TV1 LT': logobase + 'CXD4Zq54oHMsByuJbWtdIqzD24dVVo.png', u'TV1000 Comedy HD': logobase + 'ygGiR2hkQLySH6khdo8GV9CyMJ8dXi.png', u'TV1000 Megahit HD': logobase + 'lVPY7WCjn1WM6NL6tfLFy8iGA4yk3Z.png', u'TV1000 Premium HD': logobase + 'raoDrpin8VKmi522LZWzSF0fLRO04m.png', - u'TV3 LT': logobase + '0OYDSD4Gc81rVyDm8YbqvY5gY0dNzZ.png', u'TV5 Monde Europe': logobase + 'ko7rbRBnyK1iINkLOA2adRvgVOEgUK.png', - u'TV6': logobase + 'l1UpPzlU6nnHGIAdtNGTgns5V2l6jV.png', - u'TVP Sport': logobase + 'AkCqdaRAZAZY0PKGoKZkhDlBCF9RR6.png', + u'TVC 21': logobase + 't6oWXfHEIMAjJ9GSEChuI2JHQg7KzL.png', + u'TVM Channel': logobase + 'aCAKhUCXdMfvBlPD4sHnmOe0LNpPB5.png', u'TVT 1': logobase + 'CKKdhDfmno9O52tMfWptiAQT0IBWV8.png', u'UA:Перший (Украина)': logobase + 'iN5vheceBnPmO18uXHGgKwq7q2PHtF.png', u'UBR': logobase + 'F6EzmjkOBVB0gmn1kQX6itv5VvFml5.png', @@ -286,6 +371,7 @@ u'Viasat Explore': logobase + 'uCqpsdKP0ialUUYxUk2fXshYdYfxzW.png', u'Viasat Fotboll': logobase + '0JLqj3qwFoT1Y61scCyUdWioV5U6hx.png', u'Viasat Fotboll HD': logobase + '0JLqj3qwFoT1Y61scCyUdWioV5U6hx.png', + u'Viasat Golf': logobase + 'IGpQl5iTxaDEPyKffdDEpU0EU0SPiO.png', u'Viasat History': logobase + 'MWGbB8wJp5Gm4vbPHl0ktohDDjMKdr.png', u'Viasat Hockey': logobase + 'CuAbCRGdf3Z1FGFiwErTbHZ3lAMJzr.png', u'Viasat Motor': logobase + 'RuYtGxEpqJ5DG7WxGCMWNDXosRdh59.png', @@ -295,52 +381,73 @@ u'Viasat Sport Baltic': logobase + 'ZIITckvF1w5u1MlubmhoG45HxPgcZZ.png', u'Viasat Sport HD': logobase + 'prAZKkny3W1HGM03lP0EhzcMmTPZdi.png', u'Viasat Sport Sverige': logobase + 'prAZKkny3W1HGM03lP0EhzcMmTPZdi.png', + u'Vintage TV': logobase + 'mhFKSRmQIsgPnIUCWFzWbMAXK5dn3i.png', u'Virgin Radio TV': logobase + '6DgkEMl3HtkpKQbzVovPdSYhy9f3ne.png', - u'VIVA DE': logobase + 'HagNMshKtJ7zKnk9fdmBLhITjoWdrJ.png', + u'Vision Norden': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', + u'VOX DE': logobase + 'sfwtJrwyJw1vyIG83Ym08tm5pYIH2Q.png', u'WBC HD': logobase + 'fMdJvc8moH4HGH5OYqsZwskCowQYuE.png', u'World Fashion': logobase + '2YI4sT9YkGezrw9vZPn0uIRhZ7E2BV.png', - u'World Fashion HD': logobase + '2YI4sT9YkGezrw9vZPn0uIRhZ7E2BV.png', - u'XXL': logobase + '6nJtj85PlL0MxB8RDkM3toyGND3Anc.png', u'ZDF': logobase + '5SH5FeZiITw27CPxscjksZp272u7He.png', + u'ZIK Ukraine': logobase + 'dB1PmpYtgeI0C4u7Cv1QoXHlvc4JtT.png', u'Zoom': logobase + 'SyisYhg411o7z9kXci4vfpLq4KBZZ4.png', u'Авто 24': logobase + 'GZwKgvkC0vfYquFAn1dKhppNxdDit9.png', u'Авто плюс': logobase + 'WkRxjy6fJEBJ5NZiaGn2j05eqfFfQq.png', + u'АРТ 24 (Одесса)': logobase + 'H7YvrLp7Zwdb0G4rmB99E5nF4TTmsf.png', + u'Архыз24': logobase + 'tuMbRlnkeMiYQ6u9oeiAVfHF0F20RB.png', + u'Башкир ТВ': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'Беларусь 24': logobase + 'GxA1KJP5YwpWc38BoPEmLwQH6uDeEz.png', + u'Беларусь 4': logobase + 'xTwlFgOsv50ls1Z9ecK0MhC0hCGX2W.png', u'Беларусь 5': logobase + '2bzJLE9Sbk9BqUBlsVrtqpsz8h0rB6.png', u'Белсат ТВ': logobase + '9VYuUQxx1ss7ieu2upENtlibyamBP0.png', u'Бигуди': logobase + 'JvcMdB5e6KVBpbXT12ulzmDqenheRx.png', u'Бобер': logobase + '2Edln8vEbg7UUSVUo7lIJPR780OWAR.png', + u'Брянская губерния': logobase + 'V5M08NU3jRbd2wKvtVLIRbg9J6ObAZ.png', u'БСТ': logobase + '05dZ8fzOmf1lXYue2OvVsQ21eIeX69.png', + u'БСТ': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', + u'Винтаж ТВ': logobase + '6yngbEKfgy6XtMw28INQCoOdulf2tC.png', u'Вместе РФ': logobase + 'qa50GYekwBWym7KtoJdzrWHWqN8TeU.png', + u'Возрождение ТВ': logobase + 'CKWaxJsLQYiJmnkLhtysIn8hb0NK8b.png', + u'Война и Мир': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'Вопросы и ответы': logobase + 'xbV8M35FkvpieQ3TUEL8fhwU8MzjmQ.png', u'Время': logobase + 'F44yKDJQLsX0llpZ2wupg8V5vHx5fF.png', u'ВТВ': logobase + 'svsUD6TinXyv3B1q5sZf3fI9ebmpaF.png', + u'Глазами туриста': logobase + '0tuGdZaluGh8jDJulzD0MOcHOkKMJI.png', + u'Глас': logobase + '6m1xUI7vFyadFMFxXeIZjlATt7rlWw.png', u'Горизонт': logobase + 'f6wqkzO4WZW7D5Z9xIB4VkMRGmgXUU.png', u'Громадське ТБ HD': logobase + 'Ovkd9TiVv3nLcKPwQS2wkJ85KyYCMQ.png', + u'Дача': logobase + 'mX1irJVUyLtrXr9vfDdhknRqiqV9wA.png', u'Детский': logobase + 'jk8kody2p38CKdj5KGXWMwRLjgFIlG.png', u'Детский мир': logobase + '00Vf3rPABNnbNQ6Rv0dnfcg3JsJelA.png', u'Дождь': logobase + '381.png', u'Дом кино': logobase + 'jlC78Fy13KWjQUN6l3FtbsRLZDvc0x.png', - u'Дом кино Премиум': logobase + 'uPO7sY6QsL94BV6QZGtLaxmPd75DJB.png', u'Дом кино Премиум HD': logobase + 'uPO7sY6QsL94BV6QZGtLaxmPd75DJB.png', u'Домашние животные': logobase + 'HiWAmn5RvUKNJnSW2Jhxjs6maoNFV7.png', u'Домашний': logobase + 'qmqrH2E2EX11qitbIvq0CYsxQjsHGm.png', + u'Домашний (+2)': logobase + 'EbGoVedT7WolQo811cBniNuONJG18q.png', + u'Домашний (+7)': logobase + 'n1Qul20d4Ux9bA8uT6iujBL4B93UO1.png', + u'Домашний (рег)': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', + u'Домашний +4': logobase + 'atZkgcX9EReSy2VkatZGbdQyBI2viX.png', + u'Домашний магазин': logobase + 'yhzajV7vdLogQzMKat0rLJWaDkPpTP.png', u'Донбас': logobase + 'vsj1IA3Z8QVL3AzzuN4EshgT4LUmRr.png', u'Драйв ТВ': logobase + 'pmmgMKcRbxeYkjVUVr4IAWM0UuZHO4.png', u'Еврокино': logobase + '34mszCG0j0Vf6kFcMrLPnFEA8UPdu6.png', + u'Евроновости': logobase + 'K6qQrjlS6ykRlhYGyagaK3jqSXmctx.png', + u'ЕГЭ ТВ': logobase + 'lkZvzcsrdp5eJ4359OcNa5DHaHFEtE.png', u'Еда HD': logobase + 'ojUD1jhpv7HBOLmubpEBOsANkpYNtk.png', u'Еда ТВ': logobase + 'TWdAdMXfMSylb2mQ4efFnOAYosymNC.png', - u'Ескулап TV': logobase + 'onT5lg0NOm9BSORR7KNsO1oRA9pY1S.png', u'Еспресо ТВ': logobase + 'lOwm890F5URuR5Ej7IacerzECPIDt4.png', + u'Етно HD': logobase + '3SMfgieNX8dCez4flcM8TpCCePrgaq.png', u'Живая Планета': logobase + 'xgKSMwqBdEyXnbVgb8LtNXSMiaPcOx.png', u'Живи': logobase + 'cOluSjslxxs3JZtSVO8c15xh7h8SDU.png', u'Загородная жизнь': logobase + 'cGGo8HRkVhy66UXKXZ4tH5HyUaaxJA.png', u'Звезда': logobase + '0HLRrFHt2QIkbJpLc1fy0RVe7hqCEC.png', + u'Звезда (+2)': logobase + 'wa6skHc8W2MRz9Mm3qoKS4LpctSvYs.png', + u'Здоровое ТВ': logobase + '6x1zbASjWqScFk0bghS2RX3H2k5XZf.png', u'Зоо ТВ': logobase + 'RtAhntWPlKQs6CIYAb72piNF9EsN3E.png', u'Зоопарк': logobase + '1Ugpb5T1THFcFpn19Mnua21KxHkjct.png', u'Иллюзион+': logobase + '8LToTNvWRBHvb5IKoteKm8EwAGw8mv.png', u'Индиго': logobase + 'dFIp5shmC5DbfWIDVaFh7coAofmLON.png', - u'Индия': logobase + 'XVWyHt5bFFcZNzmysBSjuVdGBGl45D.png', + u'ИНДИЙСКОЕ КИНО': logobase + 'y8wvb5nc77vn5c4x8kinv85c7mv6n875c84.png', u'Интер': logobase + '3SP67FapzyZqMVZTPiJIcN09KRkTeu.png', u'Интер+': logobase + 'QEdaDBbqr13CCfwKQAP77UZYPQIPn0.png', u'Интерра ТВ': logobase + 'Akn9ntxqkSNrX3BTFRRtXPaEYBszjR.png', @@ -349,30 +456,43 @@ u'К1': logobase + 'mk2mYb28HFIxkFIiMNQWmKUdn1Y8hD.png', u'К2': logobase + 'IjG76jf8k8HTNLooNpUiEXtkPfA2rG.png', u'Калейдоскоп ТВ': logobase + 'YJMqmzlZ87QeXYm9XpjH0XzpjljNcU.png', - u'Карапуз ТВ HD': logobase + 'ieXzw5xeahW3OoO66m2LX8GwLCYyYl.png', u'Карусель': logobase + 'S233D4b6eq7KOXfdyi4dY2GokKeltg.png', + u'Карусель (+3)': logobase + 'cYXQq7FnkEBAyYxfoPPsL2y3fwMDKU.png', + u'Карусель (+3)': logobase + 'lQ7gn9ZjH9TS7X5JZnEZpJf4Jy5D2D.png', + u'Карусель (+7)': logobase + 'TxPMnikZ6AeVKgUH1TK3OADh9nalHw.png', u'Карусель International': logobase + 'S233D4b6eq7KOXfdyi4dY2GokKeltg.png', + u'КВН ТВ': logobase + 'xb1VGuwpJFlQ9fWExWngUeSUSC2xJW.png', u'Киевская Русь': logobase + 'C1AZimW2NnNA17H1uJLxxePUMTPQZ7.png', + u'Кино 2': logobase + '4liS5ZApeFUGXcGL6gFrbw7swx2ZaB.png', u'Кино ТВ': logobase + 'KkITMDICqC1erWdSqyOqoccqde2wHC.png', - u'Кино ТВ HD': logobase + 'glnk0UNz0DwfqxgJh4A5Emo0tKrQAZ.png', + u'КИНОКОМЕДИЯ': logobase + 'y087hci8ityixcnyxinxoafhiu.png', + u'КИНОМИКС': logobase + 'y6b876ih8g7R876hfug3897wrhj.png', u'Кинопоказ': logobase + 'v0JEbxExcFI8dVEzCkpZUoktgiS9t7.png', u'Кинопоказ 1 HD': logobase + 'pNA1vR3sPoovYNKzO4TU6NQcSXNqjk.png', u'Кинопоказ 2 HD': logobase + 'Yf2XKrtorOF2wSZ23Q9NHhL2MfOcqi.png', u'КиноПремиум HD': logobase + 'p580CRZ8bBS6dw3plMWhhxXSzQ59uS.png', - u'Комедия ТВ': logobase + 'L2MEpT2YePoDvmKRjYy6yyt5ssH1m4.png', + u'КИНОПРЕМЬЕРА HD': logobase + 'y4Ihg8o7ikgJHF768iJHFH76iu.png', + u'КИНОСВИДАНИЕ': logobase + 'y1876iuyf7645urjg56utfy.png', + u'КИНОСЕМЬЯ': logobase + 'y2oerfuhdj2108nbs4ev875esk47dn.png', + u'КИНОХИТ': logobase + 'y3igbjZ&LGyqDWGIASUY78AWID.png', u'Конный Мир': logobase + 'd8gVne1Em14rIfM6pSsiuufXZeYQqi.png', u'Кот ТВ': logobase + 'Rtdtc632nbBQ2TsymgXhkOt7nhytjW.png', u'Красная линия': logobase + 'I43S6jd5noclar0LlPJnyY8adonmUV.png', + u'КРИК-ТВ': logobase + 'z4Iv85kqJXWHQJ5475DNxOxlo9Ty5v.png', u'Круг': logobase + 'fbzJYZiRscBiEvaWEFmzvYzEHdaNN7.png', + u'Крым 1 HD': logobase + 'fVpBXMtyVEJ538kDDcWsezJbgcG8zA.png', + u'Крым 24': logobase + 'x4s9QQXR8KerO13nlkuEujzcv5ww5F.png', u'КТК': logobase + 'BhI4KURCZ3fAgCQcwQWn7vRCJQblH3.png', u'Кто есть кто': logobase + 'MwNkO3fXd6KefRdiGlOdOQ5q0Zu7kS.png', u'Кубань 24': logobase + 'CAAqiN96tQzFDdtz3vjrrgeIjAKqNq.png', u'Кубань 24 Орбита': logobase + 'FauvJxsKmI5a1fR62uSH9hJfHs5TCr.png', u'Культура Украина': logobase + 'pyKdve4YhoChQFGSha8J0FBWBf302a.png', u'Купи Дом ТВ HD': logobase + '7CyfedwVltdaMcZXD3Xx7wa50mZJom.png', + u'Курай ТВ': logobase + 'A0onEnFhSzqGxckeyyXsf0ZQ4R3Vc6.png', u'Кухня ТВ': logobase + 'G0WbVMphlP9oJ6KvHRfx0xDfhrF9Re.png', u'КХЛ HD': logobase + 'kRN7BwVtcdaXrU4Mdg24qhFAxjx9oZ.png', u'КХЛ ТВ': logobase + '216.png', + u'ЛДПР ТВ': logobase + '1keO0CoTmw0B3VZRe4TZnzfGdKDqSj.png', u'Любимое ТВ': logobase + 'qVREQyj0rN87jDZ1ylYW0sDvzfNp8p.png', u'Ля-минор': logobase + '8FJA3xMMHcrZuGifHViyVQLjVIem5u.png', u'М1': logobase + 'ezvu2ugYMGnZ968LlnjPw7VjqWIPeM.png', @@ -390,6 +510,12 @@ u'Матч! Планета': logobase + 'mWQ92sSmszzmjme9GTueLPCxagJGtl.png', u'Матч! Футбол 1': logobase + '9PM8M6cN21wQ3M5isVZgjNepzUI4Ry.png', u'Матч! Футбол 1 HD': logobase + '9PM8M6cN21wQ3M5isVZgjNepzUI4Ry.png', + u'Матч! Футбол 1 HD Резерв 1': logobase + 'HWZYoNrs7kQimfhyzT8V2d0WvBRbEr.png', + u'Матч! Футбол 1 HD Резерв 2': logobase + 'jJsAF2rxef4RpccQrmfPkIbJc9kS7Q.png', + u'Матч! Футбол 1 HD Резерв 3': logobase + 'Tpv0BbEi315Omo6MKh3ZiX5zTzc8OT.png', + u'Матч! Футбол 1 Резерв 1': logobase + 'CWit8nYXCcCsmB6KbIedlKwFWWTyZT.png', + u'Матч! Футбол 1 Резерв 2': logobase + 'n6kF2auPAk8bMH2zray20zP12QKL1Z.png', + u'Матч! Футбол 1 Резерв 3': logobase + 'ipK5bpcm9mR9COdolCiHV6csIndprl.png', u'Матч! Футбол 2': logobase + '8MA3WloO6RsWX8N7Ck5ugek2Kirf4B.png', u'Матч! Футбол 2 HD': logobase + '8MA3WloO6RsWX8N7Ck5ugek2Kirf4B.png', u'Матч! Футбол 3': logobase + 'OLHdmyfUev4mMX0OGniJrlUwHnMKOg.png', @@ -399,27 +525,32 @@ u'Мир (+3)': logobase + 'QxOYkz6f80IdhmC4RSHI1cMd32CqYZ.png', u'Мир 24': logobase + 'auv6717gJOWi0A2VoeDQaCsx9G1NOj.png', u'Мир HD': logobase + 'Oq6h2IicTagHENQu1mFkjLk5rChMnr.png', + u'Мир белогорья': logobase + 'JRU6TyiBAX5Fk84DebhKeSxg7ZkrEf.png', u'Мир сериала': logobase + 'n3zRAlCCBLl5WOeunWGpuMmfdvSJcW.png', + u'Мир сериала': logobase + 'XWDsU7aoUyPPoKfcX7WMYQheuzHJL0.png', + u'Мир Увлечений': logobase + 'KtELENmDesBwzAAryLgJPqwlr9m17z.png', u'Многосерийное ТВ': logobase + '4TMYdVpZYXafyIumuB5d7PrjFnslyT.png', u'Морской': logobase + 'uzlb3awoyNqvIcf6i35hTVqf7gvuqz.png', u'Москва 24': logobase + 'dZcmoqRoZLhCBh8BE4RnbQivuDY6hH.png', u'Москва Доверие': logobase + '9oPazhJQrGZcSN64ZOS3WjLwGmQIZy.png', u'Моя планета': logobase + 'Qa41eifERrD77xQsmpRGbeTq95Ldlv.png', - u'Мужское кино': logobase + 'PUDb8m2JFLndsPvb56tdH0V4RW0kZc.png', + u'МУЖСКОЕ КИНО': logobase + 'y997iu65e65h4w5d3s4dy.png', u'Мужской': logobase + '6YbhuWNqPKQWWsUGbBnSbAbm7IGssX.png', u'Муз ТВ': logobase + 'gttVvZmkAklbl2i0Mqy1MCzSCn7WiY.png', u'Музыка Первого': logobase + 'fD2Hnsq5BPMGvobLDMPZP049yNhBYt.png', u'Мульт': logobase + 'ZVzHvGF8mZ6RTsSh6aWsPbF1FBLjyp.png', u'Мультимания': logobase + '132.png', + u'Мультимания HD': logobase + 'xrR3K6dBvelv1nZos2kTbTiU3QnJVK.png', u'Надежда': logobase + 'fvCkzRJPsTx4HONWPv3vPMjQNloPBT.png', u'Нано ТВ': logobase + 'QuURIfJUmXegxsHMYqMivVwxizbfKd.png', u'Наука 2.0': logobase + 'ypWbqYqKApM8cnDK1FibvQgpmgEay9.png', u'Наше HD': logobase + 'NyV9o2C4xIMFxxYUQsS1qsdAtkqz0k.png', u'Наше любимое кино': logobase + 'LSR5M6VxB0YDwv6803zrGFkq7vGQ3J.png', + u'НАШЕ НОВОЕ КИНО': logobase + 'y5jtghJCHG65ukyfjv 45stjxc76.png', u'Наше ТВ': logobase + 'O7Wx8kIB2aXEEmHLwBFIUhxn8B5WQF.png', + u'Наше ТВ': logobase + 'gTfxpSWtOGWBq7UHAHcz3XF10bzg78.png', u'Ника ТВ': logobase + 'pb3d3rBN4qW7ggzsosbAZXflfIv0Ty.png', u'НЛО ТВ': logobase + '2VGhYruaQo19G1NLGoOiTrwmPxef7d.png', - u'Новороссия ТВ': logobase + 'zUchDq13UVJRmlwAl3feV8cgKHYSyE.png', u'Новый канал': logobase + 'k7YdHhVpFZPIkBMXS2P2O2TkZSPf0y.png', u'Новый Христианский': logobase + 'gf6hTOcGXasvr47vTFRYZGV11xkDr5.png', u'Ностальгия': logobase + 'tIfiXoDaXoZevuGu9pZJSvX8unv1xl.png', @@ -427,14 +558,15 @@ u'НСТ': logobase + 'fKYzdlWRz68qd9mRZnWuxMY73EyaSz.png', u'НТВ': logobase + 'B5GA1cfgmn8EsxrdwfNUIrEbdqarXf.png', u'НТВ (+2)': logobase + 'B5GA1cfgmn8EsxrdwfNUIrEbdqarXf.png', + u'НТВ (+2)': logobase + '20Ppq9Mmamklh3J27etMM89gFGYPYN.png', + u'НТВ (+3)': logobase + 'B5GA1cfgmn8EsxrdwfNUIrEbdqarXf.png', + u'НТВ (+4)': logobase + 'FeYewxBbj2Cz8NOJDl98PTxYXI8cPg.png', + u'НТВ (16:9) ': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', + u'НТВ +7': logobase + 'f5N5GvTcqD5JLvdeRPha6LtkgUroht.png', u'НТВ HD': logobase + 'zdJ3ye6d3UWl5a56zm6LjqYH6ziSOs.png', u'НТВ Мир': logobase + 'ykpU49Gl1akVkgiVSsCm5B4TjXvQ64.png', - u'НТВ+ Кино плюс': logobase + 'cnz8ZMypP2HV6phwv3rkSVQ7CgJExi.png', - u'НТВ+ Киноклуб': logobase + 'nRnksgRuhojvbFDqh5KZ30XJQ4iyFO.png', - u'НТВ+ Кинохит': logobase + 'iQ0I0OnN11zzfQc5yivSJtXLiV0n8J.png', - u'НТВ+ Наше кино': logobase + 'UXJcZjVdZVIzciVHgGT3e6XxdRaBsD.png', - u'НТВ+ Наше новое кино': logobase + 'RcsEz5rIV3hQ6cwn6hqiwNAEOh1zNp.png', - u'НТВ+ Премьера': logobase + 'lDiI54Y3LjIAOg5VV0adicP3OJrdgo.png', + u'НТВ+ Баскетбол': logobase + 'bIWuyv7DJ65D5hIANkeo9SyIHGUXtn.png', + u'НТВ-ПЛЮС Инфоканал': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'НТН (Украина)': logobase + 'LpQE1Odb1EoH5dJ90gWjItVyEYBXsw.png', u'ОНТ (Одесса)': logobase + 'P3tnfUDZ7f025rw6X7rFNT4aYmwMlJ.png', u'ОНТ Беларусь': logobase + 'a84If8XdqSFa6nHpegdujt52vAGNJW.png', @@ -442,20 +574,28 @@ u'Оплот ТВ': logobase + 'gvofGxTug45qSt1vsX0BPzQxGTrwTr.png', u'Оружие': logobase + 'CyDUCmYXK8WS2kXCX5kiAOFejnlwoP.png', u'Остросюжетное HD': logobase + 'mxF7CZsqsDRMMK4pN8ekdccEgvEsZC.png', + u'Открытый мир': logobase + 'VX8Nc6TW79bbns9IgJI6OdIj0r3DPG.png', u'ОТР': logobase + 'CqxKorK72v3ULbWkB3ZOhdte0duYZa.png', u'Охота и рыбалка': logobase + '5l2P20J6ebTh0ptOr27Hh704niP3nU.png', u'Охотник и рыболов': logobase + 'Ws2ddPI0b5Ie7PymoPUsboVlz9lYMS.png', u'Парк развлечений': logobase + 'beyfqyeacrFG0PrOeKUQhzQ4bV6Q5d.png', - u'Первый автомобильный (Украина)': logobase + 'oZTXrmNOxeJIVSbnuxqbiuAL3voXYa.png', u'Первый городской Одесса': logobase + 'vBOI3YTA4FDLD0c7BHHjq476p9GMCZ.png', u'Первый деловой': logobase + 'a1Qf3MpxC9FPD68Tj8vtUTNK8P25xr.png', + u'Первый деловой': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'Первый канал': logobase + 'WimZD6efLd6QotrPP9uiJeF7t50nFv.png', u'Первый канал (+2)': logobase + 'Lo2zy8h0msIieULsbHOjV1oSInHogr.png', + u'Первый канал (+2)': logobase + '7qA89ulmkQx43LT4XRkDiOepVnUBJ6.png', + u'Первый канал (+4)': logobase + 'WimZD6efLd6QotrPP9uiJeF7t50nFv.png', u'Первый канал (+4)': logobase + 'nHJycH0CkOhPeZ9DmB47iSMWP5HyWz.png', + u'Первый канал (+6)': logobase + '45vL1pa1DYHjYyMs1dtGC9RsACLmz3.png', + u'Первый канал (+8)': logobase + 'lRjN5HOOX0txLz8nigpKqpVw5CBKJZ.png', + u'Первый канал (4:3)': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'Первый канал (Евразия)': logobase + 'oPB8TcSFAuJtk4hBWgAqC9yNjMpfsi.png', u'Первый канал (Европа)': logobase + 'WimZD6efLd6QotrPP9uiJeF7t50nFv.png', + u'Первый канал (Молдова)': logobase + 'UsbyyrSaJmdjntY4muATwDytnseYYB.png', u'Первый канал (СНГ)': logobase + 'WimZD6efLd6QotrPP9uiJeF7t50nFv.png', u'Первый канал HD': logobase + 'VxAFWzh1y88c8Aqa17TsxD2IO5pqoi.png', + u'Первый канал [16:9]': logobase + 'VGBjnqmDOxPOgDXK0seYUkmVloEpr2.png', u'Первый Метео': logobase + 'vdA7FKd1SCYhX4ovvzjQEHFdW3uA5X.png', u'Первый музыкальный HD': logobase + 'YxKl6Jqi6fmlUJjYGPnBhWhntKzI65.png', u'Первый музыкальный UHD': logobase + 'YxKl6Jqi6fmlUJjYGPnBhWhntKzI65.png', @@ -464,37 +604,63 @@ u'Первый музыкальный Россия HD': logobase + 'h7EDhdGypKmtfEP98O052SLlXUCcXt.png', u'Первый образовательный': logobase + '1kXxtStMuodaPU09H3rla3ry3QA2Wr.png', u'Первый Республиканский': logobase + 'Ubch3Ma8hsdSd8u6spOxVK5bZYsnDs.png', + u'Первый Ярославский': logobase + '6FZ4QqwM18DLS3WE6XKeF0rJzpSAIH.png', + u'Перец (рег)': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'ПИК': logobase + 'P0YqVS65dvcrXyt5BDd0bx02EtK9HC.png', u'ПИК HD': logobase + 'P0YqVS65dvcrXyt5BDd0bx02EtK9HC.png', + u'ПИК HD': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'Пиксель ТВ': logobase + 'BdCXB7wPZMNvlWzB5xEFzmsYUXcfXW.png', u'Планета': logobase + 'o7wnxC58C4KfCnX0hh0il0LTRlPfSg.png', u'Планета HD': logobase + '1QjirpCLi3q9qPu1CTvEvCB0BfINeo.png', u'ПлюсПлюс': logobase + '6gVIy7RMokFO61iVawgwbthe5mhgqm.png', + u'Правда ТУТ': logobase + '6JMI68m3c7uK5DtCvF9HcmCl0R6tJy.png', + u'Про Бизнес': logobase + 'ngUUkphyiFlnVUMIjoHzwrhcwDTsTt.png', + u'Про все': logobase + 'S2i01pmEOFJxwJtJCVF7PYc6Ij4jBX.png', + u'Продвижение ТВ': logobase + 'A13CkivHlwonag4N6pzFujtV00lwLL.png', u'Просвещение': logobase + 'Fpx3Vqqk2VNcXl4YjsfO53XscWadvF.png', u'Психология 21': logobase + 'AyLAdiqcKu5X8ykdLf2bO9HsxMlJdO.png', u'Пятница': logobase + '0fafj6PSIWdqtBdgwYTl9M06SDU2wA.png', + u'ПЯТНИЦА ( +4 )': logobase + 'HjLiq5t608j5kH6yjSiodCoFMUYwQL.png', u'Пятница (+2)': logobase + '0fafj6PSIWdqtBdgwYTl9M06SDU2wA.png', + u'Пятница (+7)': logobase + '3UjE5kGjFxeXtseV0TlUTAHv71aQGO.png', u'Пятый канал': logobase + 'nIUDYY41OO4Xo0ntGpGv2rfpOR5ngt.png', + u'Пятый канал (+2)': logobase + 'rsEtkBk2ta1Wj1Y8uvxvSm4Vmbycir.png', + u'Пятый канал (+7)': logobase + 'q0XABDTYA29I5V6AMEqFQDdcr5Bj9k.png', + u'Пятый канал +4': logobase + 'jLZJgPYRXOQWt6vmNpisLyb0HC6wnT.png', u'Рада Украина': logobase + 'hBFJBYNiqZUom0ooVtNEJKliZwfioO.png', u'Радость моя': logobase + 'VRylZFYgFq7AL0FWcbf5JVOX3desn3.png', + u'Раз ТВ': logobase + 'CWaPSXdAL4Ejo1wNOqSWNPNVwbbhC7.png', u'РБК': logobase + 'JUMDXZxxB3UiVpMpU8t0aCpbVzxTmP.png', u'РЕН ТВ': logobase + 'LJvkfB2kYaDzij1Y13Fy6syUCkP5Y6.png', + u'РЕН ТВ ( +4 )': logobase + 'n0OQ3o7skZJ0B9Htlj01o2VDeXKj0f.png', u'РЕН ТВ (+2)': logobase + 'WeHcyu6MG9GGpCmToRQnoL97iesKk9.png', + u'РЕН ТВ (+7)': logobase + 'bOa17Taj05Dr1k29vFt0hdbOqCeqGQ.png', + u'РЕН ТВ [16:9]': logobase + '8KwidLyxxFby0hoExGeUh4pbaetC16.png', + u'Ретро ТВ': logobase + 'nf4fvx9VYrz9U4cJZv2xTx09ejd1SE.png', u'РЖД ТВ': logobase + 'qa6177IUBWR0hYt1HKXxlMrF5MStOb.png', u'РИА Новости': logobase + 'DixgG6tVZzcVHO2LPQEx3QrtfoVah3.png', + u'Рим ТВ': logobase + '0bwbLdfI8rl5xpxQb3gy1NPxoGh2Ie.png', + u'РОДНОЕ КИНО': logobase + 'y7saqicb538iqo64ho46hh46.png', u'Россия 1': logobase + 'UUrfoqi6NQcc9gRLnCc8ODZJ2T3ShE.png', + u'РОССИЯ 1 ( +4 )': logobase + 'jy8HZ6Xf6hroTuXmjqSUgawX7O0g9t.png', u'Россия 1 (+2)': logobase + 'UUrfoqi6NQcc9gRLnCc8ODZJ2T3ShE.png', + u'Россия 1 (+2)': logobase + 'IVnok4EXJmqeIq8Kppprl456zRybNO.png', + u'Россия 1 (+6)': logobase + 'vWy8vur5mokNIzuCKPZpOnj59w8TP8.png', + u'Россия 1 (+8)': logobase + 'WY9uVth2S8kKBB5Jk7OVoXi9Omf02r.png', u'Россия 24': logobase + 'LWfGV6eICPYL7psaBfw2dOgGrOtHFS.png', u'Россия HD': logobase + 'ghvqmVpPWqn9x6POAm9UJBvXFzTrqN.png', u'Россия К': logobase + 'W9pWrec1BOJTmj8okrFeyM44wcpyd4.png', + u'Россия К': logobase + 'M0fzdXnwAvdXUdIMtyWGoGmCq2BTTa.png', u'Россия К (+2)': logobase + 'rVrDeCUhT4RPKIa2h9qRtnDon3Pd9X.png', u'Россия РТР (Украина)': logobase + '5o9OWeEw90hM5ouECuTLwj5QP8MwU3.png', + u'РТР Планета': logobase + 'wJMTJDEEwIhJWhNL0c6kfs5HVVJOVx.png', u'Русская комедия': logobase + '4Q3vGcJh5o0cgJB18scb90ogvL6OYV.png', u'Русская ночь': logobase + '9Sh9bJuj6js5AJsypAd6UvwnsIB25R.png', u'Русский бестселлер': logobase + 'b5JXaosgmcanh9EVJg52yBefvdLQF7.png', u'Русский детектив': logobase + '7I7VjbsFMIkZdoSbHFXiKEVZKNUbOM.png', u'Русский иллюзион': logobase + 'E9Imfr8aHN5midPVpNhJ3fo49FHbQE.png', u'Русский роман': logobase + '2smriIFxtj7Ojh4jyZq0K1XrT98XjS.png', + u'Русский роман HD': logobase + '2smriIFxtj7Ojh4jyZq0K1XrT98XjS.png', u'Русский экстрим': logobase + 'upndVpIdjY3vb5vrituof5UcKISNcQ.png', u'Русский экстрим HD': logobase + 'upndVpIdjY3vb5vrituof5UcKISNcQ.png', u'Рыжий': logobase + 'wfBSy60qHaPSKPpTfrNv9Q167iHIPu.png', @@ -502,6 +668,7 @@ u'Сарафан ТВ': logobase + 'LsYzwEOUspoxkY2hrTSy9zKqvpWlY8.png', u'Семейное HD': logobase + 'ORgdUno4IvNQYiShiEY4srF16JguLs.png', u'Сказка HD': logobase + 'dxhsesilX4JjwoCc8Qab4SYe8fxm75.png', + u'Смайл-ТВ': logobase + 'AFH2ud3ZiC5BXXPoq9OVbhCQTS0yOF.png', u'Совершенно секретно': logobase + 'BZJQEpa6Y4KL9tQjPHAIxbodw0KAyN.png', u'Сонце': logobase + 'TJXJVeoBFRMFrUgzpPW4dunJL6XSzn.png', u'Союз': logobase + 'YpsuBorUwulPHW3nI8O6nKETnEVB83.png', @@ -513,59 +680,86 @@ u'СТРК HD': logobase + 'xOmVS1kQFIHeAwqtJbBfrbE75Quj2a.png', u'СТС': logobase + 'is620Pu6DreVLLnpHkpcXXZC9PI2Hi.png', u'СТС (+2)': logobase + 'FWNPupxL8N0STWKYEryyiV5sDFN2tS.png', + u'СТС (+2)': logobase + 'CPz3EbrU8SxT3CFj4JXtsx5YBJX3DH.png', + u'СТС (рег)': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'СТС Love': logobase + 'iciJHbEmJ1hHXAMhzC9cRWhmh9gH0L.png', + u'СТС Love (+7)': logobase + 'HVMQnlAIMnDToeJqFdxKojHUGA0QT1.png', u'ТА-Одесса': logobase + 'xnCANqGy0KUMtzCttmO9jyZUsXlEEI.png', + u'Тагил ТВ': logobase + 'ubegTi3hkdx7xtZCdOz8K0gBQLlght.png', u'ТБН': logobase + 'r9O7HmwQbFR4oKMH9yKAogE8xBzwz4.png', + u'ТБН': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'ТВ 3': logobase + '427.png', + u'ТВ 3 (+2)': logobase + '427.png', u'ТВ 3 (+3)': logobase + '427.png', + u'ТВ3 ( +4 )': logobase + '7A2g2KEIG6GRcHWjGYCz73jymxAZP1.png', u'Тверской проспект': logobase + 'k6RPWpDIwfsOZ5qkqHF5ZdOf5GqfmH.png', u'ТВЦ': logobase + 'QEpQTskZ9hcfI0rgD8osHVYSv58pde.png', + u'ТВЦ (+2)': logobase + '7zGrgQeXL61DZu4RBOo3KDwnlOjymw.png', u'ТВЦ (+4)': logobase + 'dR7hMBOIq0MDGMkydFuksHGLNIWz7U.png', + u'ТВЦ (+4)': logobase + 'TJaQ1WxxrKacqXlGR4f7rWwfHAJYol.png', + u'ТВЦ (+7)': logobase + 'dlUvjPT15oxOQ2OD8lYegSkN37mQnJ.png', u'ТДК': logobase + 'eSrHE6Gws4U6JxhFXA3mQ4iDVc0SwS.png', u'Театр': logobase + '8qawrcOtzHZTAa3kI0rcDfVFEZoI5u.png', u'Теледом HD': logobase + 'XviuCfRo0T4WFTOhFaC978AwZ1a3Ge.png', u'Телекафе': logobase + 'fYRFV5oY197jXcyModfWVs0AlrCOIs.png', + u'Телемикс ТВ': logobase + 'FtmRS2h59h41VyWFPh4JtjOGHVjZAB.png', u'Телепутешествия': logobase + 'fz4bqwLySJAQkUN7l2EPKNqyvilfRD.png', u'ТЕТ': logobase + 'jp0YxRwXOyMWgVfDAyQaXNwle90sV3.png', u'Техно 24': logobase + 'JbUGHLuuZa3WQbjtbzUo0cDZkGnLRK.png', u'Тиса-1': logobase + 'pPRRy0SjPl3JKXdcZrQrdXQz3NTKOH.png', + u'Тлум HD': logobase + 'ZoOHbzwrnWPUaBLOWZJIHPyG5ssYfc.png', u'ТНВ-Планета': logobase + 'vBMv8AtIpDhBGQLjPoxkko3baWMFac.png', u'ТНВ-Татарстан': logobase + 'kMdYm3qFLgK52EV0ymvRBB43peSrj9.png', u'ТНТ': logobase + 'Vtt1KKIpLY4LTQGnV03sdBYyX3hyWR.png', + u'ТНТ (+1) [Скат]': logobase + 'F5G2d7xGXnFfRMHSDCFiXWAdu1Oe2z.png', u'ТНТ (+2)': logobase + 'Vtt1KKIpLY4LTQGnV03sdBYyX3hyWR.png', + u'ТНТ (+3)': logobase + 'XIqPuPa3zUzZFevriI0urGganhT8Hm.png', u'ТНТ (+4)': logobase + 'Vtt1KKIpLY4LTQGnV03sdBYyX3hyWR.png', - u'ТНТ (+7)': logobase + 'Vtt1KKIpLY4LTQGnV03sdBYyX3hyWR.png', + u'ТНТ (+7)': logobase + '3nipGCZNvlMHrtgLyraU5YEA6sj0ek.png', u'ТНТ International (Европа)': logobase + 'd4loXdWqOPiwF7thzyBXX8JSspfVjU.png', u'ТНТ-Music': logobase + '6Go23tY9hpakfrvTEUH7Z7o5Y9hpOG.png', u'ТНТ4': logobase + 'yTclqOAW0EWwhw9vt0spVSUcS70ZR0.png', + u'ТНТ4 ( +4 )': logobase + '14QPJWtD2gaXxRFVr2v9YxkvwDiT0O.png', u'ТНТ4 (+2)': logobase + 'yTclqOAW0EWwhw9vt0spVSUcS70ZR0.png', u'ТНТ4 (+3)': logobase + 'dg9BEAtJr4IthpXjxV8NGAiu95NjXl.png', + u'ТНТ4 (+7)': logobase + 'QMacW5XucDi08h4stQ3AGt69IYAr97.png', u'Тонус ТВ': logobase + 'bE8WfReOerYTIbqPOo6VD2ajrFdOBT.png', u'Точка ТВ': logobase + 'JWwPbPnkWooIpKd5WYsdpfO3Mh14oA.png', + u'Третий цифровой (Одесса)': logobase + 'UERKEoCARXOG4CveFzUNnJoM9eOSwh.png', u'ТРК Киев': logobase + 'qW0p5z3De7COmSxTmvJ4ZA2wOuSJjg.png', u'ТРК Украина': logobase + '0co3dwhFDhoCVeTbfMV8ASYFYxSrWM.png', u'ТРО Союза': logobase + 'xAXy9iMyJ4wa2wmugJvbZuDIzc9pVz.png', u'Трофей': logobase + 'tQTWwjNBC8aLLWiWZfCj43BhWNH51I.png', + u'Трофей': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'Трофей HD': logobase + 'cPi9B0icZpuvSRQiH0Kk6rNY8r1X65.png', u'ТТС': logobase + 'crsSIipA6N288sjn4EvUyOyTd0ed9A.png', u'Улыбка ребенка': logobase + 'P8aPFN50uJWJHkrqFGb7wgzfaTHUOO.png', u'Унiан': logobase + 'fhpFrTDoI9xx7UlK65KAjAbdTGehLL.png', u'Усадьба': logobase + '5yIxLQzQyZnH5EJcwpSGb28QuRTSFH.png', + u'Успех': logobase + 'RLcfsouYRxTNrQT97AOPIYfSneJyB6.png', + u'УТР': logobase + '83AcB7NfDhEh4tEcJx7d5Lm1l6dzpB.png', u'Феникс+ Кино': logobase + 'idiNkkBsxLwxWCF2VZrc9LQEevKh0d.png', u'Футбол': logobase + '472.png', u'Футбол 1 (Украина)': logobase + 'AMKtYwcgSAX5mTcPdhQDe4he18Jz7S.png', u'Футбол 1 HD': logobase + 'hZaWPKLVxTqUWZk0LTmLi1K1WUzX85.png', u'Футбол 2 (Украина)': logobase + 'PUXTI9mKcs49JnEENkh95KoKqt9VNg.png', u'Футбол 2 HD': logobase + 'TTvGrBoRM07MHY4q6bSwfzVuDKEGTi.png', + u'Хабар 24': logobase + '5ucUtr617J0k3od3cVRn1mMy0Ezi1x.png', + u'Хорошее кино': logobase + 'xEF8TOIGFqtgbOLkMM3TlA20Blel32.png', + u'Царьград ТВ': logobase + '9DJiua5LxhwBe2Is3l4LDJIH8zf5EE.png', u'Центральный канал': logobase + 'vzfLS14qVT0rSphoNeEuO2WDvXFoub.png', u'ЧГТРК Грозный': logobase + 'LqDNdQj6nf4MraZztT6ZnACn7yOJpV.png', u'Че': logobase + 'Hv36ZG48lg1mm2wdxAo3ju1EFS41Ga.png', u'Че (+2)': logobase + 'N7R86wgoPSELhZ9jCeqaykayjU8mbB.png', + u'Черноморская телекомпания': logobase + 'LJVoPVcJAE0s4DNmXCga0UPZkRkLTq.png', u'ЧП-Инфо': logobase + 'Xy7mLl3exaBKuLlDGdrRls6hyR7mSw.png', u'Шансон ТВ': logobase + 'VY0TyCCkKOj5b8BhBJjT020sQoxL9F.png', u'Эгоист ТВ': logobase + 'moG8uExVh4nw3MN7dmGFdysJHBWLk6.png', + u'Эко-ТВ': logobase + 'EmsE2NuqzHi5NXh6OIMMXQpfmD0VIl.png', + u'Эра ТВ': logobase + 'ejWH5qVf8XAWkc3HLQYTmEpYchtaIS.png', u'Ю': logobase + 'YvnG7hXCwMmHnakp2KkCbqeCigHcuK.png', u'Ю (+2)': logobase + 'YvnG7hXCwMmHnakp2KkCbqeCigHcuK.png', + u'Ювелирочка': logobase + 'pvKHFUCv25R51hJoUpAJfvjGnWyqoZ.png', u'Юмор ТВ': logobase + '6VFA1SVxeFHUsGaKPbNxWZREDkGeZw.png', u'Ямал Регион': logobase + 'xapccCaMjlT6JEAkZmk27wzCXlEU2m.png' -} \ No newline at end of file +} diff -Nru aceproxy-0.9.1-610~26e79d1/plugins/stat_plugin.py aceproxy-0.9.1-638~c939589/plugins/stat_plugin.py --- aceproxy-0.9.1-610~26e79d1/plugins/stat_plugin.py 2016-09-09 18:17:56.000000000 +0000 +++ aceproxy-0.9.1-638~c939589/plugins/stat_plugin.py 2017-02-13 13:05:05.000000000 +0000 @@ -5,6 +5,18 @@ ''' from modules.PluginInterface import AceProxyPlugin import time +import json +import plugins.modules.ipaddr as ipaddr +import urllib2 + +localnetranges = ( + '192.168.0.0/16', + '10.0.0.0/8', + '172.16.0.0/12', + '224.0.0.0/4', + '240.0.0.0/5', + '127.0.0.0/8', + ) class Stat(AceProxyPlugin): handlers = ('stat', 'favicon.ico') @@ -13,7 +25,24 @@ self.config = AceConfig self.stuff = AceStuff + def geo_ip_lookup(self, ip_address): + """ + Look up the geo information based on the IP address passed in + """ + GEOIP_LOOKUP_URL = 'http://api.2ip.ua/geo.json?ip=%s' + lookup_url = GEOIP_LOOKUP_URL % ip_address + req = urllib2.Request(lookup_url, headers={'User-Agent' : "Magic Browser"}) + response = json.loads(urllib2.urlopen(req, timeout=5).read()) + + return {'country_code' : response['country_code'], + 'country' : response['country'], + 'region' : response['region'], + 'city' : response['city'], + } + def handle(self, connection, headers_only=False): + current_time = time.time() + if connection.reqtype == 'favicon.ico': connection.send_response(404) return @@ -26,6 +55,7 @@ return connection.wfile.write( + '' '

Connected clients: ' + str(self.stuff.clientcounter.total) + '

') connection.wfile.write( '
Concurrent connections limit: ' + str(self.config.maxconns) + '
') @@ -38,6 +68,16 @@ connection.wfile.write(c.channelName.encode('UTF8')) else: connection.wfile.write(i) + connection.wfile.write('') - connection.wfile.write('') + clientinrange = any(map(lambda i: ipaddr.IPAddress(c.handler.clientip) in ipaddr.IPNetwork(i),localnetranges)) + + if clientinrange: + connection.wfile.write('') + else: + geo_ip_info = self.geo_ip_lookup(c.handler.clientip) + connection.wfile.write('') + + connection.wfile.write('') + connection.wfile.write('') connection.wfile.write('
' + c.handler.clientip + '' + time.strftime('%d %b %Y %H:%M:%S', time.localtime(c.connectionTime)) + '
' + 'Local IP adress' + '' + geo_ip_info.get('country') + ', ' + geo_ip_info.get('city') + '' + time.strftime('%c', time.localtime(c.connectionTime)) + '' + time.strftime("%H:%M:%S", time.gmtime(current_time-c.connectionTime)) + '
') diff -Nru aceproxy-0.9.1-610~26e79d1/plugins/torrenttv_api.py aceproxy-0.9.1-638~c939589/plugins/torrenttv_api.py --- aceproxy-0.9.1-610~26e79d1/plugins/torrenttv_api.py 2016-09-09 18:17:56.000000000 +0000 +++ aceproxy-0.9.1-638~c939589/plugins/torrenttv_api.py 2017-02-13 13:05:05.000000000 +0000 @@ -39,7 +39,7 @@ API_URL = 'http://1ttvapi.top/v3/' - def __init__(self, email, password, maxIdle, zoneid=None): + def __init__(self, email, password, maxIdle, zoneid='1'): self.email = email self.password = password self.maxIdle = maxIdle @@ -73,6 +73,11 @@ self.session = result['session'] self.lastActive = time.time() self.log.debug("New session created: " + self.session) + + req = TorrentTvApi.API_URL + 'set_zone.php?session=' + self.session + '&zone=' + self.zoneid + result = self._jsoncheck(json.loads(urllib2.urlopen(req, timeout=10).read())) + self.log.debug("HTTP streaming ZoneID set to : " + self.zoneid) + return self.session def translations(self, translation_type, raw=False): @@ -87,9 +92,6 @@ """ query = '&type=' + translation_type - if self.zoneid: - query += '&zone_id=' + self.zoneid - if raw: try: res = self._xmlresult('translation_list.php', query) diff -Nru aceproxy-0.9.1-610~26e79d1/plugins/torrenttv_plugin.py aceproxy-0.9.1-638~c939589/plugins/torrenttv_plugin.py --- aceproxy-0.9.1-610~26e79d1/plugins/torrenttv_plugin.py 2016-09-09 18:17:56.000000000 +0000 +++ aceproxy-0.9.1-638~c939589/plugins/torrenttv_plugin.py 2017-02-13 13:05:05.000000000 +0000 @@ -11,6 +11,8 @@ import urlparse import md5 import traceback +import gzip +from StringIO import StringIO from modules.PluginInterface import AceProxyPlugin from modules.PlaylistGenerator import PlaylistGenerator import config.torrenttv as config @@ -32,7 +34,7 @@ self.etag = None self.logomap = config.logomap self.updatelogos = p2pconfig.email != 're.place@me' and p2pconfig.password != 'ReplaceMe' - + if config.updateevery: gevent.spawn(self.playlistTimedDownloader) @@ -46,27 +48,45 @@ try: self.logger.debug('Trying to download playlist') req = urllib2.Request(config.url, headers={'User-Agent' : "Magic Browser"}) - origin = urllib2.urlopen(req, timeout=10).read() - matches = re.finditer(r',(?P\S.+) \((?P.+)\)\n(?P^.+$)', origin, re.MULTILINE) + req.add_header('Accept-encoding' , 'gzip') + response = urllib2.urlopen(req, timeout=15) + + origin = '' + + if response.info().get('Content-Encoding') == 'gzip': + # read the encoded response into a buffer + buffer = StringIO(response.read()) + # gzip decode the response + f = gzip.GzipFile(fileobj=buffer) + # store the result + origin = f.read() + # close the buffer + buffer.close() + # else if the response isn't gzip-encoded + self.logger.debug('Playlist downloaded using gzip compression') + else: + # store the result + origin = response.read() + self.logger.debug('Playlist downloaded') + + matches = re.finditer(r',(?P\S.+) \((?P.+)\)[\r\n]+(?P[^\r\n]+)?', origin, re.MULTILINE) self.playlisttime = int(time.time()) self.playlist = PlaylistGenerator() self.channels = dict() m = md5.new() - + for match in matches: itemdict = match.groupdict() encname = itemdict.get('name') name = encname.decode('UTF-8') logo = config.logomap.get(name) url = itemdict['url'] - if logo: itemdict['logo'] = logo if (url.startswith('acestream://')) or (url.startswith('http://') and url.endswith('.acelive')): self.channels[name] = url itemdict['url'] = urllib2.quote(encname, '') + '.mp4' - self.playlist.addItem(itemdict) m.update(encname) @@ -78,7 +98,7 @@ if self.updatelogos: try: - api = TorrentTvApi(p2pconfig.email, p2pconfig.password, p2pconfig.sessiontimeout) + api = TorrentTvApi(p2pconfig.email, p2pconfig.password, p2pconfig.sessiontimeout, p2pconfig.zoneid) translations = api.translations('all') logos = dict() @@ -140,7 +160,7 @@ hostport = connection.headers['Host'] path = '' if len(self.channels) == 0 else '/torrenttv/channel' add_ts = True if path.endswith('/ts') else False - header = '#EXTM3U url-tvg="%s" tvg-shift=%d\n' % (config.tvgurl, config.tvgshift) + header = '#EXTM3U url-tvg="%s" tvg-shift=%d deinterlace=auto\n' % (config.tvgurl, config.tvgshift) exported = self.playlist.exportm3u(hostport, path, add_ts=add_ts, header=header, fmt=fmt) connection.send_response(200) diff -Nru aceproxy-0.9.1-610~26e79d1/vlcclient/vlcclient.py aceproxy-0.9.1-638~c939589/vlcclient/vlcclient.py --- aceproxy-0.9.1-610~26e79d1/vlcclient/vlcclient.py 2016-09-09 18:17:56.000000000 +0000 +++ aceproxy-0.9.1-638~c939589/vlcclient/vlcclient.py 2017-02-13 13:05:05.000000000 +0000 @@ -4,7 +4,7 @@ import gevent import gevent.event -import gevent.coros +import gevent.lock import telnetlib import logging from vlcmessages import * @@ -40,7 +40,7 @@ # Authentication done event self._auth = gevent.event.AsyncResult() # Request lock - self._resultlock = gevent.coros.RLock() + self._resultlock = gevent.lock.RLock() # Request result self._result = gevent.event.AsyncResult() # VLC version string