Commit Graph

9487 Commits

Author SHA1 Message Date
Remita Amine 3444844b04 [limelight] extract PlaylistService errors 2017-02-21 17:52:50 +01:00
Sergey M․ eea0716cae
[extractor/common] Print origin country for fake IP 2017-02-21 23:14:33 +07:00
Sergey M․ 336a76551b
[extractor/common] Do not quit _initialize_geo_bypass on empty countries 2017-02-21 23:09:41 +07:00
Sergey M․ dc0a869e5e
[extractor/common] Fix typo 2017-02-21 23:05:31 +07:00
Sergey M․ e39b5d4ab8
[extractor/common] Allow calling _initialize_geo_bypass from extractors (#11970) 2017-02-21 23:00:43 +07:00
Remita Amine e469ab2528 [ninecninemedia] use geo bypass mechanism 2017-02-21 14:38:00 +01:00
Remita Amine 890d44b005 [adobepass] add support for Time Warner Cable(closes #12191) 2017-02-20 19:00:40 +01:00
Sergey M․ 6926304472
[spankbang] Make uploader optional (closes #12193) 2017-02-21 00:54:43 +07:00
Sergey M․ 3ccdde8cb7
[extractor/common] Emphasize geo bypass APIs are experimental 2017-02-20 23:21:15 +07:00
Sergey M․ da42ff0668
[iprima] Improve geo restriction detection and disable geo bypass 2017-02-20 23:17:19 +07:00
Sergey M․ 82f662182b
[iprima] Modernize 2017-02-20 23:16:14 +07:00
Sergey M․ 2cc7fcd338
[commonmistakes] Disable UnicodeBOM extractor test for python 3.2 2017-02-20 03:06:52 +07:00
Sergey M․ 6d4c259765
[svt] PEP 8 2017-02-20 02:25:55 +07:00
Sergey M․ c78dd35491
[nrk] PEP 8 2017-02-20 02:25:39 +07:00
Sergey M․ 8ffb8e63fe
[prosiebensat1] Throw ExtractionError on unsupported page type (closes #12180) 2017-02-20 01:00:53 +07:00
Sergey M․ 983e9b7746
[nrk] Update _API_HOST and relax _VALID_URL 2017-02-20 00:59:31 +07:00
Sergey M․ c58b7ffef4
[tv4] Bypass geo restriction and improve detection 2017-02-19 06:25:59 +07:00
Sergey M․ f1a78ee4ef
[tv4] Switch to hls3 protocol (closes #12177) 2017-02-19 06:16:00 +07:00
Sergey M․ 4248dad92b Improve geo bypass mechanism
* Rename options to preffixly match with --geo-verification-proxy
* Introduce _GEO_COUNTRIES for extractors
* Implement faking IP right away for sites with known geo restriction
2017-02-19 05:10:08 +08:00
Sergey M․ 0a840f584c Rename bypass geo restriction options 2017-02-19 05:10:08 +08:00
Sergey M․ 0016b84e16 Add faked X-Forwarded-For to formats' HTTP headers 2017-02-19 05:10:08 +08:00
Sergey M․ 5d3fbf77d9 [viki] Improve geo restriction detection 2017-02-19 05:10:08 +08:00
Sergey M․ 80b59020e0 [vgtv] Improve geo restriction detection 2017-02-19 05:10:08 +08:00
Sergey M․ 71631862f4 [srgssr] Improve geo restriction detection 2017-02-19 05:10:08 +08:00
Sergey M․ 89cc7fe770 [vbox7] Improve geo restriction detection and use geo bypass mechanism 2017-02-19 05:10:08 +08:00
Sergey M․ 04d906eae3 [svt] Improve geo restriction detection and use geo bypass mechanism 2017-02-19 05:10:08 +08:00
Sergey M․ 8ab8066cf0 [pbs] Improve geo restriction detection and use geo bypass mechanism 2017-02-19 05:10:08 +08:00
Sergey M․ 01b1aa9ff4 [ondemandkorea] Improve geo restriction detection and use geo bypass mechanism 2017-02-19 05:10:08 +08:00
Sergey M․ ff4007891f [nrk] Improve geo restriction detection and use geo bypass mechanism 2017-02-19 05:10:08 +08:00
Sergey M․ 28200e654b [itv] Improve geo restriction detection and use geo bypass mechanism 2017-02-19 05:10:08 +08:00
Sergey M․ e633f21a96 [go] Improve geo restriction detection and use geo bypass mechanism 2017-02-19 05:10:08 +08:00
Sergey M․ d392005a79 [dramafever] Improve geo restriction detection and use geo bypass mechanism 2017-02-19 05:10:08 +08:00
Sergey M․ 773f291dcb Add experimental geo restriction bypass mechanism
Based on faking X-Forwarded-For HTTP header
2017-02-19 05:10:08 +08:00
Remita Amine 049a0f4d6d [brightcove:legacy] restrict videoPlayer value(closes #12040) 2017-02-18 21:08:40 +01:00
Sergey M․ e84888b432
[tvn24] Improve extraction (closes #11679) 2017-02-18 23:34:09 +07:00
Jakub Wilk 02d9b82a23
[tvn24] Add extractor 2017-02-18 23:33:49 +07:00
Sergey M․ a2e3286676
[thisav] Add support for html5 media (closes #11771) 2017-02-18 20:21:53 +07:00
Sergey M․ f75caf059e
[metacafe] Improve (closes #10371) 2017-02-18 19:58:25 +07:00
Alex Monk bdabbc220c
[metacafe] Bypass family filter
If you don't send this user=ffilter: false cookie, it will 301 redirect you to a page asking about it, and then the title check will fail.
2017-02-18 19:47:33 +07:00
Remita Amine 70bcc444a9 [viceland] improve info extraction and update test 2017-02-18 09:52:43 +01:00
Sergey M․ bad4ccdb5d
[heise] Improve (closes #9725) 2017-02-17 23:09:40 +07:00
Tobias Gruetzmacher db76c30c6e
[heise] Support videos embedded in any article. 2017-02-17 22:55:53 +07:00
Déstin Reed c2bde5d081
[ellentv] Improve 2017-02-17 22:45:51 +07:00
Sergey M․ 90fad0e74c
[openload] Fix extraction (closes #12002) 2017-02-17 22:31:16 +07:00
Vijay Singh d94badc755
[openload] Semifix extraction (closes #10408)
just updated the code. i don't do much python still i tried to convert my code. lemme know if there is any prob with it
2017-02-17 22:30:05 +07:00
Yen Chi Hsuan fef51645d6
[theplatform] Recognize URLs with whitespaces (closes #12044) 2017-02-17 23:13:51 +08:00
Sergey M․ 4cead6a614
[einthusan] Relax _VALID_URL (closes #12141, closes #12159) 2017-02-17 22:02:01 +07:00
Yen Chi Hsuan a4a554a793
[generic] Try parsing JWPlayer embedded videos (closes #12030) 2017-02-16 23:44:03 +08:00
Sergey M․ b898f0a173
[elpais] Fix typo and improve extraction (closes #12139) 2017-02-16 04:57:42 +07:00
Sergey M․ eafaeb226a
[ceskatelevize] Lower priority for audio description sources (#12119) 2017-02-16 00:04:15 +07:00
Sergey M․ de4d378c0c
[ceskatelevize] Prefix format ids 2017-02-15 23:38:00 +07:00
Remita Amine 1bd05345ea [amcnetworks] fix extraction(closes #12127) 2017-02-15 14:19:18 +01:00
Sergey M․ 3021cf83b7
[pinkbike] Fix uploader extraction (closes #12054) 2017-02-15 02:08:32 +07:00
Sergey M․ 04a741232f
[onetpl] Add support for businessinsider.com.pl and plejada.pl 2017-02-15 01:23:55 +07:00
Sergey M․ 43a3d9edfc
[onetpl] Add support for onet.pl (closes #10507) 2017-02-15 01:14:06 +07:00
Sergey M․ d31aa74fdb
[onetmvp] Add shortcut extractor 2017-02-15 00:58:18 +07:00
Sergey M․ 6092ccd058
[vodpl] Make more robust and add another test (closes #12122) 2017-02-15 00:52:31 +07:00
Marek Rusinowski 22ce9ad2bd
[vod.pl] Add new extractor 2017-02-15 00:48:08 +07:00
Sergey M․ 9a372f14b4
[pornhub] Extract video URL from tv platform site (#12007, #12129) 2017-02-14 23:52:41 +07:00
Sergey M․ 5cb2d36c82
[ceskatelevize] Extract DASH formats (closes #12119, closes #12133) 2017-02-14 22:57:38 +07:00
Ondřej Caletka fcca0d53a8
[ceskatelevize] Quick fix to revert to using old HLS-based playlist
This fixes recent changes in iVysilani. Proper patch should migrate to
MPEG-DASH version, which is now the default.
2017-02-14 22:25:37 +07:00
Sergey M․ 50de3dbad3
[zdf] Fix extraction (closes #12117) 2017-02-14 01:00:06 +07:00
Sergey M․ 085f169ffe
[xtube] Fix extraction for both kinds of video id (closes #12088) 2017-02-13 23:44:43 +07:00
Vobe f6d6ca1db3
[xtube] Improve title extraction 2017-02-13 23:34:14 +07:00
Sergey M․ 6e5956e6ba
[lemonde] Fallback delegate extraction to generic extractor (closes #12115, closes #12116) 2017-02-13 23:17:48 +07:00
Remita Amine 89c6691f9d [bellmedia] accept longer video id(closes #12114) 2017-02-13 15:08:48 +01:00
Remita Amine 454e5cdb17 [limelight] add support referer protected videos 2017-02-13 14:29:05 +01:00
Remita Amine 9dad941853 [disney] improve extraction
- add support for more urls
- detect expired videos
- skip Adobe Flash Access protected videos

closes #4975
closes #11000
closes #11882
closes #11936
2017-02-13 11:43:20 +01:00
Remita Amine 0dac7cbb09 [hotstar] improve extraction(closes #12096)
- extract all qualities
- detect drm protected videos
- extract more metadata
2017-02-12 17:35:24 +01:00
Yen Chi Hsuan f8514630db
[einthusan] Fix extraction (closes #11416)
The old test URLs are no longer valid, so I replace them with the one
from #11416
2017-02-12 20:53:55 +08:00
Aniruddh-J 459818e280 [aenetworks] Add support for lifetimemovieclub.com 2017-02-12 20:18:11 +08:00
Sergey M․ 6310acf512
[youtube] Fix parsing codecs (closes #12091) 2017-02-12 18:09:53 +07:00
Yen Chi Hsuan 68c22c4c15
[iqiyi] Update _TESTS 2017-02-11 22:27:45 +08:00
Sergey M․ 3d7e3aaa0e
[pluralsight:course] Fix extraction (closes #12075) 2017-02-11 17:00:52 +07:00
Sergey M․ 624c4b92ff
[facebook] Add coding cookie 2017-02-11 16:18:45 +07:00
Remita Amine 97eb9bd2ac [bbc] extract m3u8 formats with 320k audio 2017-02-10 19:46:15 +01:00
Sergey M․ 71cdd75628
[facebook] Relax video id matching (closes #11017, closes #12055, closes #12056) 2017-02-11 01:05:22 +07:00
Remita Amine c7d6f614f3 [corus] Add new extractor(closes #12060)(#9164) 2017-02-10 17:00:09 +01:00
Remita Amine 08a00eef79 [extractor/common] skip m3u8 manifests protected with Adobe Flash Access 2017-02-10 17:00:09 +01:00
Sergey M․ 9dd5408c99
[pluralsight] Detect blocked account error message (#12070) 2017-02-10 22:48:11 +07:00
Sergey M․ 9510709575
[bloomberg] Add another video id regex (closes #12062) 2017-02-10 22:16:20 +07:00
Remita Amine 5abcca9060 [sixplay] use raw string for regex 2017-02-10 09:34:59 +01:00
Sergey M․ e01bfc19c3
[extractor/commonmistakes] Restrict _VALID_URL (closes #12050) 2017-02-10 09:39:24 +07:00
Remita Amine 4d32b63851 [tvplayer] Add new extractor 2017-02-09 23:09:21 +01:00
Sergey M․ ff24261ba0
[kaltura] Add explicit port to regexes
They should not match e.g. cdnapi.kaltura.computernetworks.com/...
2017-02-10 01:24:14 +07:00
Sergey M․ fbc6dc525e
[xtube] Fix shortcuts 2017-02-10 01:06:23 +07:00
Sergey M․ 9150d1eb69
[xtube] Fix extraction (closes #12023) 2017-02-10 01:03:35 +07:00
Sergey M․ b7f9843bec
[pornhub] Simplify (closes #12018) 2017-02-10 00:57:44 +07:00
Thomas Christlieb e64b0fca14
[pornhub] Fix extraction (closes #12007) 2017-02-10 00:56:12 +07:00
Sergey M․ 78ef214d2d
[facebook] Improve JS data regex (closes #12042) 2017-02-09 23:42:40 +07:00
Remita Amine 37084f6641 [kaltura] improve embed partner id extraction(fixes #12041) 2017-02-09 16:24:54 +01:00
Remita Amine b04975733c [sprout] Add new extractor 2017-02-09 09:13:29 +01:00
Remita Amine c8b8fb0a99 [sixplay] improve extraction
- skip drm protected formats
- extract more and better formats
- skip duplicate asset urls
2017-02-08 22:56:10 +01:00
Remita Amine 8298018273 [scrippsnetworks:watch] Add new extractor(closes #10765) 2017-02-08 20:44:23 +01:00
Remita Amine ae8d5a5c59 [go] add support for adobe pass auth(closes #11468)(closes #10831) 2017-02-08 18:57:07 +01:00
Sergey M․ b9c9cb5f79
[6play] Fix extraction (closes #12011) 2017-02-08 23:15:39 +07:00
Remita Amine fdf9b959bc [nbc] add support adobe pass auth(closes #12006) 2017-02-08 16:23:42 +01:00
Sergey M․ f28aeff264
[pornhub] Fix extraction (closes #11997) 2017-02-07 01:52:59 +07:00
Sergey M․ 242a14a1f6
[extractor/common] Fix audio only with audio group in m3u8 (closes #11995) 2017-02-07 00:22:16 +07:00
Sergey M․ d5d904ff7d
[canalplus] Add support for cstar.fr (#11990) 2017-02-06 23:53:42 +07:00
Sergey M․ 5620f840f6
[extractor/generic] Add test for #11993 and more metadata for rtmp 2017-02-06 23:31:58 +07:00
Sergey M․ b7a8c1bcfa
[extractor/generic] Improve rtmp support (closes #11993) 2017-02-06 23:23:40 +07:00
Sergey M․ 2aec7256ae
[extractor/common] Speed-up media tags regex (closes #11979) 2017-02-06 00:20:30 +07:00
Yen Chi Hsuan 9c14fe9681
[gaskrank] Minor change and update ChangeLog after #11685 2017-02-06 00:25:28 +08:00
motophil e705755739 [gaskrank] Add new extractor (#11685)
* [gaskrank] Add new extractor

* [gaskrank] Add new extractor - fixes as requested

* [gaskrank] Add new extractor - style fix

* [Gaskrank] Add new extractor - requested fixes

* [Gaskrank] Add new extractor - fix md5 checksum

* [gaskrank] Add new extractor - more requested fixes

* [Gaskrank] Add new extractor - fixed all but one quantified code issues

* [Gaskrank] add new extractor - more fields extracted, added second test

* [Gaskrank] Add new extractor - requested fixes.

* [Gaskrank] Add new extractor - requested changes.

* [Gaskrank] Add new extractor - final(?) fixes.
2017-02-06 00:19:37 +08:00
Yen Chi Hsuan 019f4c0371
[bandcamp] Fix extraction for incomplete albums
Closes #11727
2017-02-05 22:47:04 +08:00
Yen Chi Hsuan 2ab2c0d1f5
[iwara] Add width (closes #11724)
The heuristic is from #11724
2017-02-05 22:30:13 +08:00
Yen Chi Hsuan caf0f5f8b7
[iwara] Fix extraction (closes #11781) 2017-02-05 21:48:13 +08:00
Yen Chi Hsuan e4e50f60b1
[googledrive] Fix extraction on Python 3.6
Since Python 3.6, invalid escape sequences are deprecated. It's likely
that there are invalid escape sequences somewhere on the webpage, so
instead of unescaping the whole webpage, just unescape the URL.

See https://bugs.python.org/issue27364. That change was designed for
string literals, while it affects the 'unicode_escape' encoding as well.
The code path is:

str.decode('unicode_escape')
    codecs.unicode_escape_decode()
        PyUnicode_DecodeUnicodeEscape()
2017-02-05 21:41:08 +08:00
Sergey M․ 6ef3e65a7b
[videopress] Add extractor 2017-02-05 13:37:27 +07:00
Sergey M․ 6fd138bed8
[sportbox] PEP 8 2017-02-05 13:36:52 +07:00
Remita Amine 3d2c2752c5 [afreecatv] extract rtmp formats 2017-02-04 18:18:28 +01:00
Sergey M․ 9db8f6c540
[twitch:stream] Improve _VALID_URL (closes #11971) 2017-02-04 23:21:07 +07:00
Remita Amine 8e4041cf3f [radiocanada] fix extraction for toutv rtmp formats 2017-02-04 17:05:35 +01:00
John Hawkinson c2521c1ac6 [Piksel] Add another app token regex 2017-02-04 23:23:14 +08:00
A Connecticut Princess 643dc0fcfe
[vk] Catch author blocked error message
Example link (video in blocked group):
https://vk.com/search?c%5Bq%5D=%D0%9F%D1%80%D1%8B%D0%B6%D0%BE%D0%BA%20c%20%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%20%D0%B2%20%D1%81%D1%82%D0%B8%D0%BB%D0%B5%20%D0%A7%D0%B5%D0%BB%D0%BE%D0%B2%D0%B5%D0%BA%D0%B0-%D0%BF%D0%B0%D1%83%D0%BA%D0%B0&c%5Bsection%5D=video&c%5Bsort%5D=2&z=video-10639516_456240611
2017-02-04 22:21:09 +07:00
Remita Amine 36fce54816 [turner] fix downloading of secure hls formats using ffmpeg(closes #11358)(closes #11373)(closes #11800) 2017-02-04 15:23:46 +01:00
Remita Amine 2c15db829c [drtv] add support for live and radio sections(closes #1827)(closes #3427) 2017-02-04 08:38:28 +01:00
Remita Amine f65dba7cdb [myspace] fix extraction and extract hls and http formats 2017-02-03 22:25:19 +01:00
Remita Amine 605fd6392f [youtube] add format info for itag 325 and 328 2017-02-03 17:59:48 +01:00
Sergey M․ f962790ee5
[vine] Fix extraction (closes #11955) 2017-02-03 21:56:48 +07:00
Sergey M․ b7cc5f078e
[extractors] Remove remnants of sportbox extractor (#11954) 2017-02-03 21:56:10 +07:00
Sergey M․ f7a10d8cd6
[sportbox] Remove extractor (closes #11954)
Covered by generic extractor
2017-02-03 21:25:44 +07:00
Remita Amine df0588a31f Merge branch 'fstirlitz-filmon' 2017-02-03 10:15:52 +01:00
Remita Amine 4ce3407d08 [filmon] improve extraction 2017-02-03 10:15:03 +01:00
Mattias Wadman 45024183ae [infoq] Add audio only format if available (#11565)
* [infoq] Add audio only format if available

Refactor cookie code into a function.
Renamed formats to http_video, http_audio, rtmp_video
Renamed extract functions to video instead of videos as they return
one or no video.

* [infoq] Rename to _extract_cookies as it more than one

* [infoq] Remove redundant determine_ext

* [infoq] Add comment about hardcoded URL

* [infoq] Use _hidden_inputs instead of messy regex

* [infoq] Probe if audio URL is valid

Make it possible to pass headers to _is_valid_url

* [infoq] Add audio only test
2017-02-03 12:10:13 +08:00
Justsoos 33da98f493
[douyutv] Improve room id regex
http://www.douyu.com/t/lpl  source get extra '\' with "room_id\" (from js coding)
2017-02-03 03:26:41 +07:00
Michal Čihař 0bbcc8a10a
[iprima] Fix extraction (closes #11920, closes #11896) 2017-02-03 03:04:33 +07:00
Yen Chi Hsuan a22b2fd19b
[youtube] Fix ytsearch* when cookies are provided
Closes #11924

The API with `page` is no longer used in browsers, and YouTube always
returns {'reload': 'now'} when cookies are provided.

See http://youtube.github.io/spfjs/documentation/start/ for how SPF
works. Basically appending static link with a `spf` parameter yields the
corresponding dynamic link.
2017-02-03 01:28:24 +08:00
Sergey M․ c54c01f82d
[go] Relax video id regex (closes #11937) 2017-02-02 23:04:46 +07:00
Sergey M․ 5a116e1302
[facebook] Fix title extraction (closes #11941) 2017-02-02 22:45:18 +07:00
Sergey M․ a685751051
[youtube:playlist] Recognize TL playlists (closes #11945) 2017-02-02 22:01:11 +07:00
Yen Chi Hsuan bd8f48c78b
[bilibili] Support new Bangumi URLs (closes #11845)
To reduce complexity, I don't support old Bangumi URLs directly via
_VALID_URL. Instead, I choose to let it go to generic redirection. An
example can be found in #10190:

http://bangumi.bilibili.com/anime/v/40062
2017-02-02 21:51:31 +08:00
Remita Amine 81aeafeb44 [cbc:watch] extract audio codec for audion only formats(fixes #11893) 2017-02-02 08:07:28 +01:00
Jaime Marquínez Ferrándiz 020c5df52d [elpais] Fix extraction for some URLs (closes #11765) 2017-02-01 23:48:34 +01:00
Sergey M․ b83ef507b4
[facebook] Fix extraction (closes #11926) 2017-02-01 23:19:20 +07:00
Yen Chi Hsuan fe5aa197b5
[prosiebensat1] PEP8 and update _TESTS 2017-02-01 23:13:45 +08:00
Thomas Christlieb 7882f1115e Added new Regex for prosiebensat1 Extractor Description. Fixes #11810 (#11929)
* Added new Regex for prosiebensat1 Extractor Description. Fixes #11810

* Using _og_search_description() as a Fallback for Description-Regex

* Using _og_search_description() as a Fallback for Description-Regex - Second try

* Also added fallback regex

* Using _og_search_description() as a Fallback for Description-Regex - Third try

* removed fatal=False from search for description regex. default=None should be preferred only

* Using fatal=false for _og_search_description

* Revert "Using fatal=false for _og_search_description"

This reverts commit 2b7e123f9d0f2bd6ada54fa8e4e6035fece5dbf4.

* Deleted default=None Parameter for _og_search_property
2017-02-01 23:00:41 +08:00
Yen Chi Hsuan 2b2d5d319b
[crunchyroll] Remove ScaledBorderAndShadow settings
See https://github.com/rg3/youtube-dl/pull/9028, especially @lachs0r's
comments for the reason behind this change
2017-02-01 16:39:32 +08:00
Sergey M․ 26c0f09935
[vimeo] PEP 8 2017-02-01 02:15:52 +07:00
Sergey M․ c15cd29640
[vimeo] Extract upload timestamp 2017-02-01 00:58:02 +07:00
Sergey M․ c38a67bcd5
[vimeo] Extract license (closes #11880) 2017-02-01 00:49:28 +07:00
Sergey M․ 7c5329e6f4
[nrk] Improve extraction and update tests (closes #11571) 2017-02-01 00:29:29 +07:00
Odd Stråbø 8fd65faece
[NRKTV] Added NRKTVSeriesIE
[NRKTV] Added season and episode number to metadata.

[NRKTV] Added category to metadata.

[NRKTV] Added tests to NRKTVSeries.

[NRKTV] Fixed whitespace issues (flake8).
2017-01-31 23:10:40 +07:00
Sergey M․ 3c90cc8b6f
[youtube] Fix extraction for domainless player URLs
Closes #11890
Closes #11891
Closes #11892
Closes #11894
Closes #11895
Closes #11897
Closes #11900
Closes #11903
Closes #11904
Closes #11906
Closes #11907
Closes #11909
Closes #11913
Closes #11914
Closes #11915
Closes #11916
Closes #11917
Closes #11918
Closes #11919
2017-01-31 22:22:37 +07:00
Remita Amine ae9a173b64 [vimeo] extract both mixed and separated dash formats 2017-01-31 14:47:56 +01:00
Remita Amine dadb836139 [ruutu] extract dash formats 2017-01-30 09:32:31 +01:00
Remita Amine 4719419951 [itv] fix extraction in python 2.6 2017-01-29 16:04:15 +01:00
Alex Seiler f13da8af28
[azmedien:playlist] Add support for topic and themen playlists 2017-01-29 20:40:19 +07:00
Sergey M․ e228616c6e
[extractor/common] Fix initialization template (closes #11605, closes #11825) 2017-01-29 06:57:39 +07:00