pukkandan
d9aa233295
Deprecate more options
...
* `--all-formats` = `-f all`
* `--include-ads` is not implemented
4 years ago
pukkandan
52a8a1e1b9
Option to choose different downloader for different protocols
...
* Renamed `--external-downloader-args` to `--downloader-args`
* Added `native` as an option for the downloader
* Use similar syntax to `--downloader-args` etc. Eg: `--downloader dash:native --downloader aria2c`
* Deprecated `--hls-prefer-native` and `--hls-prefer-ffmpeg` since the same can now be done with `--downloader "m3u8:native"` and `m3u8:ffmpeg` respectively
* Split `frag_urls` protocol into `m3u8_frag_urls` and `dash_frag_urls`
* Standardize shortening of protocol names with `downloader.shorten_protocol_name`
4 years ago
pukkandan
d818eb7473
Improve argument parsing for `-P`, `-o`, `-S`
...
* `-P "subtitle,thumbnail:PATH"` is now possible. Similarly for `-o`
* `-S "fps,br" -S "res,codec"` is now interpreted as `-S res,codec,fps,br`. Previously, `-S fps,br` was ignored in this case.
4 years ago
pukkandan
f8d4ad9ab0
Format selector `mergeall` to download and merge all formats
4 years ago
pukkandan
02aabd45d0
Release 2021.04.03
4 years ago
pukkandan
73cd218f5a
[documentation] Improve `--parse-metadata` documentation
4 years ago
pukkandan
eff635394a
Ability to select nth best format
...
Eg: -f `bv*.2`
* Also cleaned up the related format selection code
4 years ago
pukkandan
b050d210df
Fix some typos and linter
4 years ago
pukkandan
a3affbe6a0
Release 2021.03.24
4 years ago
pukkandan
143db31d48
Parse metadata from multiple fields
...
Closes #196
4 years ago
pukkandan
a7f347d9c9
Release 2021.03.21
4 years ago
Matthew
c224251aad
[youtube] Show if video is `private`, `unlisted` etc in new field `availability` ( #188 )
...
Closes : #185 , https://github.com/ytdl-org/youtube-dl/issues/25631
Authored by: colethedj, pukkandan
4 years ago
pukkandan
dd18a58cb1
[documentation] Add `SplitChapters` to `--ppa`
4 years ago
pukkandan
a515a78dd3
fix some typos and linter
4 years ago
pukkandan
e167860ce7
[documentation] Add deprecated options and aliases in readme
4 years ago
pukkandan
75d43ca080
Option to keep private keys in the infojson
...
Options: --clean-infojson, --no-clean-infojson
Related: https://github.com/yt-dlp/yt-dlp/issues/42#issuecomment-800778391
4 years ago
pukkandan
597c18665e
Release 2021.03.15
4 years ago
pukkandan
7275535116
Split video by chapters ( #158 )
...
* New options `--split-chapters` and `--no-split-chapters`
* The output/path of the split files can be given using the key `chapter`
* Additional keys `section_title`, `section_number`, `section_start`, `section_end` are available in the output template
* Alias `--split-tracks` for parity with animelover/youtube-dl
* `--sponskrub-cut` and `--split-chapter` cannot work together
Closes:
https://github.com/blackjack4494/yt-dlc/issues/277
https://github.com/ytdl-org/youtube-dl/issues/28438
https://github.com/ytdl-org/youtube-dl/issues/12907
https://github.com/ytdl-org/youtube-dl/issues/6480
https://github.com/ytdl-org/youtube-dl/pull/25005
Rewritten from the implementation by: femaref and Wattux
https://github.com/Wattux/youtube-dl/tree/split-at-timestamps
https://github.com/ytdl-org/youtube-dl/pull/25005
https://github.com/femaref/youtube-dl/tree/split-track
4 years ago
shirt
4cf1e5d2f9
Native concurrent downloading of fragments ( #166 )
...
* Option `--concurrent-fragments` (`-N`) to set the number of threads
Related: #165
Known issues:
* When receiving Ctrl+C, the process will exit only after finishing the currently downloading fragments
* The download progress shows the speed of only one thread
Authored by shirt-dev
4 years ago
Ashish
5ba4a0b69c
[Documentation] Inclusion of two-line install script for Unix ( #155 )
...
Closes #83
Authored-by: Ashish <ashish@pop-os.localdomain>
ci skip all
4 years ago
pukkandan
5f7514957f
Release 2021.03.03
4 years ago
pukkandan
d6e51845b7
Reduce default of `--extractor-retries` to 3
...
so that even those not using sleep won't get 429'd on youtube
4 years ago
pukkandan
5ef7d9bdd8
Release 2021.03.01
4 years ago
pukkandan
f0884c8b3f
Cleanup some code (see desc)
...
* `--get-comments` doesn't imply `--write-info-json` if `-J`, `-j` or `--print-json` are used
* Don't pass `config_location` to `YoutubeDL` (it is unused)
* [bilibiliaudio] Recognize the file as audio-only
* Update gitignore
* Fix typos
4 years ago
pukkandan
277d6ff5f2
Extract comments only when needed #95 ( Closes #94 )
4 years ago
pukkandan
1cf376f55a
Add option `--sleep-requests` to sleep b/w requests ( Closes #106 )
...
* Also fix documentation of `sleep_interval_subtitles`
Related issues:
https://github.com/blackjack4494/yt-dlc/issues/158
https://github.com/blackjack4494/youtube-dlc/issues/195
https://github.com/ytdl-org/youtube-dl/pull/28270
https://github.com/ytdl-org/youtube-dl/pull/28144
https://github.com/ytdl-org/youtube-dl/issues/27767
https://github.com/ytdl-org/youtube-dl/issues/23638
https://github.com/ytdl-org/youtube-dl/issues/26287
https://github.com/ytdl-org/youtube-dl/issues/26319
4 years ago
pukkandan
7f7de7f94d
Allow specifying path in `--external-downloader`
4 years ago
pukkandan
9bd2020476
[hls] Enable `--hls-use-mpegts` by default when downloading live-streams
...
* Also added option `--no-hls-use-mpegts` to disable this
Related: #96
4 years ago
shirt-dev
b965087396
Readthedocs improvements ( #115 )
...
Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>
:ci skip dl
4 years ago
pukkandan
127d075955
[documentation] Fix typos ( Closes #112 )
...
:ci skip all
4 years ago
pukkandan
c74d1aa340
Release 2021.02.24
4 years ago
pukkandan
0744a815b7
[documentation] Changes left behind from #85 and #107
4 years ago
Pccode66
7a5c1cfe93
Completely change project name to yt-dlp ( #85 )
...
* All modules and binary names are changed
* All documentation references changed
* yt-dlp no longer loads youtube-dlc config files
* All URLs changed to point to organization account
Co-authored-by: Pccode66
Co-authored-by: pukkandan
4 years ago
pukkandan
5b1ecbb327
[ffmpeg] Allow passing custom arguments before -i
...
:ci skip dl
4 years ago
pukkandan
e409895f13
[documentation] Fix documentation of "Extractor Options"
4 years ago
pukkandan
6cfda0582b
[documentaion] Document `playable_in_embed`
...
:ci skip all
4 years ago
pukkandan
f76ede8ee4
[youtube] Show if video was a live stream in info
4 years ago
pukkandan
e094cec18c
[documentation] Document `all` in format selection ( Closes #101 )
...
:ci skip all
4 years ago
pukkandan
a40258a259
[documentation] Remove `--flat-videos`
...
It does not work as documented
It was an experimental option that I forgot to remove when making the fork public
:ci skip all
4 years ago
pukkandan
dca3ff4a5e
[formatsort] Remove forced priority of `quality`
...
When making `FormatSort`, I misinterpreted the purpose `quality`
4 years ago
pukkandan
da9be05edf
[documentation] Better document `--prefer-free-formats`
...
Also added `--no-prefer-free-formats`
4 years ago
pukkandan
155d2b48c5
[formatsort] Prefer vp9.2 over other vp9 codecs
...
vp9.2 may contain HDR while vp9.0 doesn't
4 years ago
pukkandan
c2934512c2
Option `--windows-filenames` to force use of windows compatible filenames
...
* Also changed `--trim-file-name` to `--trim-filenames` to be similar to related options
Related: https://web.archive.org/web/20210217190806/https://old.reddit.com/r/youtubedl/comments/llc4o5/do_you_guys_also_have_this_error
:ci skip dl
4 years ago
pukkandan
aa837ddf06
Release 2021.02.15
4 years ago
shirt-dev
63ad4d43eb
#70 Allow downloading of unplayable video formats
...
Video postprocessors are also turned off when this option is used
Co-authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>
Co-authored-by: pukkandan <pukkandan@gmail.com>
4 years ago
shirt-dev
5d25607a3a
#75 Change optional dependency from `Crypto` to `pycryptodome` ( Closes #74 )
...
Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com> (shirt-dev)
pycryptodome is an in-place replacement for Crypto and is more actively developed
4 years ago
pukkandan
8d801631cf
[version] update
...
:ci skip all
4 years ago
pukkandan
ba9f36d732
Release 2021.02.09
4 years ago
pukkandan
b3943b2f33
[pyinst.py] Move back to root dir ( Closes #63 )
4 years ago
pukkandan
06ff212d64
[documentation] Crypto is an optional dependency
4 years ago
pukkandan
c25228e5da
Release 2021.02.04
4 years ago
pukkandan
de6000d913
Multiple output templates for different file types
...
Syntax: -o common_template -o type:type_template
Types supported: subtitle|thumbnail|description|annotation|infojson|pl_description|pl_infojson
4 years ago
pukkandan
ff88a05cff
[pyinst] Automatically detect python architecture and working directory
...
:ci skip all
4 years ago
pukkandan
e29663c644
#45 Allow date/time formatting in output template
...
Closes #43
4 years ago
pukkandan
cac96421d9
New option --no-write-playlist-metafiles to NOT write playlist metadata files
4 years ago
pukkandan
29b6000e35
Release 2021.01.29
4 years ago
pukkandan
e38df8f9fa
Refactor `update-version`, `pyinst.py` and related files
...
* Refactor update-version
* Moved pyinst, update-version and icon into devscripts
* pyinst doesn't bump version anymore
* Merge pyinst and pyinst32. Usage: `pyinst.py [32|64]`
* Add mutagen as requirement
* Remove make_win and related files
4 years ago
pukkandan
06167fbbd3
#31 Features from animelover1984/youtube-dl
...
* Add `--get-comments`
* [youtube] Extract comments
* [billibilli] Added BiliBiliSearchIE, BilibiliChannelIE
* [billibilli] Extract comments
* [billibilli] Better video extraction
* Write playlist data to infojson
* [FFmpegMetadata] Embed infojson inside the video
* [EmbedThumbnail] Try embedding in mp4 using ffprobe and `-disposition`
* [EmbedThumbnail] Treat mka like mkv and mov like mp4
* [EmbedThumbnail] Embed in ogg/opus
* [VideoRemuxer] Conditionally remux video
* [VideoRemuxer] Add `-movflags +faststart` when remuxing from mp4
* [ffmpeg] Print entire stderr in verbose when there is error
* [EmbedSubtitle] Warn when embedding ass in mp4
* [avanto] Use NFLTokenGenerator if possible
4 years ago
pukkandan
4ff5e98991
More badges
...
:ci skip all
4 years ago
pukkandan
e4172ac903
Deprecate avconv/avprobe
...
All current functionality is left untouched. But don't expect any new features to work with avconv
:ci skip all
4 years ago
pukkandan
5bfa486205
Add option `--parse-metadata`
...
* The fields extracted by this can be used in `--output`
* Deprecated `--metadata-from-title`
:ci skip dl
4 years ago
pukkandan
0bc0a32290
Release 2021.01.24
4 years ago
Remita Amine
a820dc722e
Update to ytdl-2021.01.24.1
4 years ago
pukkandan
f74980cbae
Plugin support
...
Extractor plugins are loaded from <root-dir>/ytdlp_plugins/extractor/__init__.py
Inspired by https://github.com/un-def/dl-plus
:ci skip dl
4 years ago
pukkandan
0202b52a0c
#29 New option `-P`/`--paths` to give different paths for different types of files
...
Syntax: `-P "type:path" -P "type:path"`
Types: home, temp, description, annotation, subtitle, infojson, thumbnail
4 years ago
pukkandan
3bcaa37b1b
[tests] Split core and download tests
4 years ago
pukkandan
46ee996e39
Allow passing different arguments to different external downloaders
...
* Now similar to --post-processor-args
* Also added `--downloader-args` as alias to `--external-downloader-args`
4 years ago
pukkandan
45016689fa
Standardized function for creating dict from repeated options
4 years ago
pukkandan
63be1aab2f
Deprecate unnecessary aliases in `formatSort`
...
(I should never have made so many aliases in the first-place)
The aliases remain functional for backward compatability, but will be left undocumented
4 years ago
pukkandan
c69911e4c1
Release 2021.01.20
4 years ago
pukkandan
43820c0370
Improved passing of multiple postprocessor-args
...
* Added `PP+exe:args` syntax
If `PP+exe:args` is specifically given, only it used.
Otherwise, `PP:args` and `exe:args` are combined.
If none of the `PP`, `exe` or `PP+exe` args are given, `default` is used
`Default` is purposely left undocumented since it exists only for backward compatibility
* Also added proper handling of args in `EmbedThumbnail`
Related: https://github.com/ytdl-org/youtube-dl/pull/27723
4 years ago
pukkandan
8a51f56439
[readme] Cleanup options
...
(Closes #23 ) :skip ci
4 years ago
pukkandan
298f597b4f
Release 2021.01.16
4 years ago
pukkandan
e2e43aea21
Portable Configuration file ( closes #19 )
...
Inspired by https://github.com/ytdl-org/youtube-dl/pull/27592
4 years ago
pukkandan
7bc877a20d
Add PyPI release
4 years ago
pukkandan
17fa3ee25f
Documentation fixes
...
* Change all links to point to new fork URL
* Changed sponskrub links to my fork of the same
* Other typos
4 years ago
pukkandan
8b0d7497d5
Added option `--break-on-reject`
...
and modified `--break-on-existing`
4 years ago
pukkandan
90505ff153
[readme] Change all links to point to new fork URL
4 years ago
pukkandan
9b45b9f51a
Release 2021.01.12
4 years ago
pukkandan
d9d045e2ef
Changed repo name to yt-dlp
4 years ago
pukkandan
f5546c0b3c
Fix typos ( Closes #14 )
...
:skip ci all
Co-authored by: FelixFrog
4 years ago
pukkandan
f20f5fe524
Add changelog for the unreleased changes in blackjack4494/yt-dlc
...
and made related changes in README
4 years ago
pukkandan
b2f70ae74e
Update version badge automatically in README
...
Uses: https://github.com/Schneegans/dynamic-badges-action
4 years ago
pukkandan
6fd35a1101
Release 2021.01.09
4 years ago
pukkandan
e5bc03a6fa
Release 2021.01.08
4 years ago
pukkandan
034b6215b4
Move changelog to seperate file
4 years ago
pukkandan
0c0ff18f7d
[CI] Created quick-test
4 years ago
pukkandan
a26c99ac13
Release 2021.01.07-1
4 years ago
pukkandan
1b77b347d4
Allow passing different arguments to different postprocessors
...
* Also deprecated --sponskrub-args
Closes: https://github.com/ytdl-org/youtube-dl/issues/27593
Eg: `--postprocessor-args "VideoConvertor:-c:v h264_nvenc -preset slow"`
Eg: `--postprocessor-args "SponsKrub:-include-selfpromo"`
For backward compatibility, `--postprocessor-args args` is equivalent to:
`--post-processor-args "sponskrub:" --post-processor-args "default:args"`
4 years ago
pukkandan
c76eb41bb9
Preparing for release
4 years ago
pukkandan
dbbbe555d7
Add `duration_string` to info_dict
4 years ago
pukkandan
7fd86ce1a9
Remove av01 priority
4 years ago
pukkandan
2af884ff22
v2021.01.05.02
4 years ago
pukkandan
91ebc64068
Change defaults
...
* Enabled --ignore by default
* Disabled --video-multistreams and --audio-multistreams by default
* Changed default format selection to 'bv*+ba/b' when --audio-multistreams is disabled
* Changed default format sort order to 'res,fps,codec,size,br,asr,proto,ext,has_audio,source,format_id'
* Changed default output template to '%(title)s [%(id)s].%(ext)s'
* Enabled `--list-formats-as-table` by default
4 years ago
pukkandan
50865ca803
v2021.01.05 - Make publicly available
4 years ago
pukkandan
29f7c58aaf
Update to ytdl-2021.01.03
4 years ago
pukkandan
c2b5f3114f
Readme changes
4 years ago
pukkandan
6623ac349b
Added negative switches for many existing options
...
* The idea is that it should be possible to negate any boolean option by adding a `no-` to the switch
New: `--no-ignore-dynamic-mpd`, `--no-allow-dynamic-mpd`, `--allow-dynamic-mpd`, `--youtube-include-hls-manifest`, `--no-youtube-include-hls-manifest`, `--no-youtube-skip-hls-manifest`, `--no-download`, `--no-download-archive`, `--resize-buffer`, `--part`, `--mtime`, `--no-keep-fragments`, `--no-cookies`, `--no-write-annotations`, `--no-write-info-json`, `--no-write-description`, `--no-write-thumbnail`, `--youtube-include-dash-manifest`, `--post-overwrites`, `--no-keep-video`, `--no-embed-subs`, `--no-embed-thumbnail`, `--no-add-metadata`, `--no-include-ads`, `--no-write-sub`, `--no-write-auto-sub`, `--no-playlist-reverse`, `--no-restrict-filenames`, `--youtube-include-dash-manifest`, `--no-format-sort-force`, `--flat-videos`, `--no-list-formats-as-table`, `--no-sponskrub`, `--no-sponskrub-cut`, `--no-sponskrub-force`
Renamed: `--write-subs`, --no-write-subs`, `--no-write-auto-subs, `--write-auto-subs`. Note that these can still be used without the ending "s"
4 years ago
pukkandan
a9e7f54670
Sponskrub integration
4 years ago
pukkandan
76d321f68f
Option to present -F output to a more tabular form
4 years ago
pukkandan
2d30509fc8
Add --force-download-archive by by h-h-h-h
...
Authored-by: h-h-h-h
4 years ago
pukkandan
732044afb2
Add --write-*-link by h-h-h-h
...
Authored-by: h-h-h-h
4 years ago
pukkandan
f96bff99cb
Relaxed validation for format filters so that any arbitrary field can be used
4 years ago
pukkandan
909d24dd6d
Better Format Selection
...
* Added options: --video-multistreams, --no-video-multistreams, --audio-multistreams, --no-audio-multistreams
* New format selectors: best*, worst*, bestvideo*, bestaudio*, worstvideo*, worstaudio*
* Added b,w,v,a as alias for best, worst, video and audio respectively in format selection
* Changed video format sorting to show video only files and video+audio files together.
4 years ago
pukkandan
eb8a44336c
Better Format Sorting (Squashed)
...
* Added --format-sort (-S height,filesize)
* Made fields reversible (-S +height)
* Added --format-sort-force, --no-format-sort-force
* Added limit (-S height:720)
* Added codec preference (-S vcodec,acodec)
* Correct handling of preference<-1000
* Rebased to yt-dlc
* Automatically determine missing bitrates
* aext, vext, protocol, acodec, vcodec can now takes priority as string, not number (-S vext:webm)
* Correct handling of None in codec, audio_codec (None means the codec is unknown while 'none' means it doesn't exist)
* Correctly parse filesize (-S filesize:200M)
* Generalized preference calculation
* Rewrote entire code into the class FormatSort
* Correctly handle user input errors
* Combined fields (-S +ext:webm:webm)
* Closest mode (-S filesize~50M)
* Aliases (framerate=fps, br=bitrate etc)
* Documentation
4 years ago
pukkandan
ea6e0c2b0d
Add --break-on-existing by @gergesh
...
Authored-by: Yoav Shai <gergesh@gmail.com>
4 years ago
Unknown
5db4014b23
[skip travis] readme and pypi update
4 years ago
Tom-Oliver Heidel
471115dbee
[skip travis] add option to use pip to use master
4 years ago
Tom-Oliver Heidel
167c108f70
[skip travis]
4 years ago
Tom-Oliver Heidel
cf553deceb
[skip travis] update travis badge
4 years ago
bopol
9754a441e3
use webarchive to fix a dead link in README
4 years ago
Tom-Oliver Heidel
6410992da9
[skip travis] updated readme
...
replaced download links
added 'how to update'
4 years ago
Tom-Oliver Heidel
bc30d1e09f
[skip travis] mention trim-file-name
4 years ago
Tom-Oliver Heidel
7e6790e232
[skip travis] update README.md - sleep-subtitles
4 years ago
Tom-Oliver Heidel
07892b3fcc
[skip travis] slight changes to badges in readme.
4 years ago
Unknown
b777004649
Merge branch 'ytdl-org-master'
4 years ago
Tom-Oliver Heidel
b96a939bbf
[skip travis] advice using pyinst.py for windows
4 years ago
Unknown
17cb02d0c6
bump version 2020.09.16
4 years ago
Unknown
78895bd3a1
[Core] hls manifests, dynamic mpd
4 years ago
Tom-Oliver Heidel
cd93279de8
Merge branch 'ext/remuxe-video' of https://github.com/Zocker1999NET/youtube-dl into Zocker1999NET-ext/remuxe-video
4 years ago
Jens Timmerman
8a92dee72c
Update README.md
...
cleanup + typo fix
4 years ago
Jens Timmerman
893afc2ca8
Update README.md
4 years ago
Tom-Oliver Heidel
1c547dc8b3
[skip travis] add gitter and license badge
4 years ago
Tom-Oliver Heidel
2028c6492a
[skip travis] quick fix readme
4 years ago
Tom-Oliver Heidel
424dc7be53
[skip travis] add pypi badge
4 years ago
Unknown
e367127957
[skip travis] minor fixes
4 years ago
Unknown
cefecac12c
[skip travis] renaming
...
to avoid using same folder when using pip install for example
4 years ago
Tom-Oliver Heidel
a90d4f7e10
[skip travis] added download stats badge for pypi
4 years ago
Tom-Oliver Heidel
5f326cf54b
[skip travis] added win/unix executable to readme
4 years ago
Tom-Oliver Heidel
9ab41610b4
[skip travis] update readme.
4 years ago
Tom-Oliver Heidel
c8598bbe26
change travis ci in readme
4 years ago
Felix Stupp
efe87a10ae
Added --remux-video option
...
Fixes #6996
- Supported formats declared: mp4, mkv
- Added FFmpegVideoRemuxerPP as postprocessor
- Added option to README and shell-completion scripts
5 years ago
TotalCaesar659
fae11394f0
[README.md] flake8 HTTPS URL ( #25230 )
5 years ago
Sergey M․
00a41ca4c3
release 2020.05.03
5 years ago
Sergey M․
ea782aca52
[README.md] Clarify 429 error
5 years ago
Manu Cornet
a6e6673e82
[README.md] Also read permission to the binary in how to update section ( #22903 )
5 years ago
Sergey M
d9d3a5a816
[README.md] Move code from #21939 to the right place
5 years ago
DaMightyZombie
11edb76610
[README.md] Rephrase usage example comment ( #20614 )
6 years ago
Martin Michlmayr
f412970164
[README.md] Fix lists formatting ( closes #20558 )
...
Lists have to be separated from the previous paragraph by a blank line
in certain variants of Markdown, otherwise they are not interpreted as
lists.
This change ensures that that the youtube-dl.1 man page, which is
generated from README.md with the help of pandoc, is formatted
correctly.
6 years ago
Sergey M․
067aa17edf
Start moving to ytdl-org
6 years ago
Sergey M
252abb1e8b
[README.md] Mention more convenience extraction functions
6 years ago
Sergey M
4e58d9fabb
[README.md] Fix formatting
6 years ago
Sergey M․
2cc779f497
[YoutubeDL] Add negation support for string comparisons in format selection expressions ( closes #18600 , closes #18805 )
6 years ago
Atlas Sullivan
60a899bb7e
[README.md] Fix typo
6 years ago
Sergey M
8437f5089f
[README.md] Add long lines policy to coding conventions
6 years ago
Sergey M
696f4e4114
[README.md] Add more guide lines for regular expressions
6 years ago
Elan Ruusamäe
904bb599be
[README.md] Add flake8 instructions
6 years ago
Sergey M
c984196cf1
[README.md] Bind info dict URLs to a fixed blob ( closes #18492 )
6 years ago
Sergey M․
22e07ce502
[README.md] Improve documentation on safe metadata extraction and add more examples
6 years ago
Sergey M․
60ce0c67fd
[README.md] Document channel meta fields for output template
6 years ago