pukkandan
9acf1ee25f
[jsinterp] Handle `Date` at epoch 0
...
Closes #6400
2 years ago
pukkandan
65f6e80780
[dependencies] Simplify `Cryptodome`
...
Closes #6292 , closes #6272 , closes #6338
2 years ago
pukkandan
45b2ee6f4f
Update to ytdl-commit-2dd6c6e
...
[YouTube] Avoid crash if uploader_id extraction fails
2dd6c6edd8
Except:
* 295736c9cba714fb5de7d1c3dd31d86e50091cf8 [jsinterp] Improve parsing
* 384f632e8a9b61e864a26678d85b2b39933b9bae [ITV] Overhaul ITV extractor
* 33db85c571304bbd6863e3407ad8d08764c9e53b [feat]: Add support to external downloader aria2p
2 years ago
Simon Sawicki
6839ae1f6d
[utils] `traverse_obj`: Fix more bugs
...
and cleanup uses of `default=[]`
Continued from b1bde57bef
2 years ago
Simon Sawicki
b1bde57bef
[utils] `traverse_obj`: Fix several behavioral problems
...
See #6180 for further info
Authored by: Grub4K
2 years ago
pukkandan
f6a765ceb5
[dependencies] Standardize `Cryptodome` imports
2 years ago
Simon Sawicki
776995bc10
[utils] `traverse_obj`: Various improvements
...
- Add `set` key for transformations/filters
- Add `re.Match` group names
- Fix behavior for `expected_type` with `dict` key
- Raise for filter function signature mismatch in debug
Authored by: Grub4K
2 years ago
pukkandan
8b008d6254
[jsinterp] Support `if` statements
...
Closes #6131
2 years ago
Simon Sawicki
773c272d66
Fix config locations ( #5933 )
...
Bug in 8e40b9d1ec
Closes #5953
Authored by: Grub4k, coletdjnz, pukkandan
2 years ago
Matthew
8e40b9d1ec
Improve plugin architecture ( #5553 )
...
to make plugins easier to develop and use:
* Plugins are now loaded as namespace packages.
* Plugins can be loaded in any distribution of yt-dlp (binary, pip, source, etc.).
* Plugin packages can be installed and managed via pip, or dropped into any of the documented locations.
* Users do not need to edit any code files to install plugins.
* Backwards-compatible with previous plugin architecture.
As a side-effect, yt-dlp will now search in a few more locations for config files.
Closes https://github.com/yt-dlp/yt-dlp/issues/1389
Authored by: flashdagger, coletdjnz, pukkandan, Grub4K
Co-authored-by: Marcel <flashdagger@googlemail.com>
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
Co-authored-by: Simon Sawicki <accounts@grub4k.xyz>
2 years ago
pukkandan
fbb7383306
Add `weba` to known extensions
2 years ago
ChillingPepper
d5f043d127
[utils] js_to_json: Fix bug in f55523c
( #5771 )
...
Authored by: ChillingPepper, pukkandan
2 years ago
pukkandan
9f14daf22b
[extractor] Deprecate `_sort_formats`
2 years ago
pukkandan
6368e2e639
[cleanup] Misc
...
Closes #5541
2 years ago
Robert Geislinger
7aaf4cd2a8
[cleanup] Misc
...
Closes #5471 , Closes #5312
Authored by: pukkandan, Alienmaster
2 years ago
pukkandan
495322b95b
[test] Allow `extract_flat` in download tests
...
Authored by: coletdjnz, pukkandan
2 years ago
Matthew
86973308cd
[extractor/youtube:tab] Update tab handling for redesign ( #5439 )
...
Closes #5432 , #5430 , #5419
Authored by: coletdjnz, pukkandan
2 years ago
pukkandan
46d09f8707
[cleanup] Lint and misc cleanup
2 years ago
pukkandan
db4678e448
Update to ytdl-commit-de39d128
...
[extractor/ceskatelevize] Back-port extractor from yt-dlp
de39d1281c
Closes #5361 , Closes #4634 , Closes #5210
2 years ago
Alex Karabanov
c9bd65185c
[extractor/zenyandex] Fix extractors ( #3750 , #5268 )
...
Closes #3736
Authored by: lksj, puc9, pukkandan
Co-authored-by: puc9 <51006296+puc9@users.noreply.github.com>
2 years ago
Ajay Ramachandran
63c547d71c
[SponsorBlock] Support `chapter` category ( #5260 )
...
Authored by: ajayyy, pukkandan
2 years ago
Simon Sawicki
a71b812f53
[utils] `js_to_json`: Improve escape handling ( #5217 )
...
Authored by: Grub4K
2 years ago
Simon Sawicki
36069409ec
[cookies] Improve `LenientSimpleCookie` ( #5195 )
...
Closes #5186
Authored by: Grub4K
2 years ago
pukkandan
0468a3b325
[jsinterp] Improve separating regex
...
Fixes https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1273974909
2 years ago
Matthew
4c9a1a3ba5
[extractor/wordpress:mb.miniAudioPlayer] Add embed extractor ( #5087 )
...
Closes https://github.com/yt-dlp/yt-dlp/issues/4994
Authored by: coletdjnz
2 years ago
Simon Sawicki
7b0127e1e1
[utils] `traverse_obj`: Allow `re.Match` objects ( #5174 )
...
Authored by: Grub4K
2 years ago
Simon Sawicki
f99bbfc983
[utils] `traverse_obj`: Always return list when branching ( #5170 )
...
Fixes #5162
Authored by: Grub4K
2 years ago
nixxo
81b6102d20
[downloader/ism] Support ec-3 codec ( #5004 )
...
Closes #296
Authored by: nixxo
2 years ago
Simon Sawicki
ab029d7e92
[utils] `traverse_obj`: Rewrite, document and add tests ( #5024 )
...
Authored by: Grub4K
2 years ago
Simon Sawicki
8817a80d3a
[cookies] Parse cookies leniently ( #4780 )
...
Closes #4776 , #3778
Authored by: Grub4K
2 years ago
Elyse
7657ec7ed6
[utils] `base_url`: URL paths can contain `&` ( #4841 )
...
Authored by: elyse0
Closes #4187
2 years ago
pukkandan
07a1250e0e
[outtmpl] Curly braces to filter keys
2 years ago
pukkandan
1a7c9fad9f
[jsinterp] Workaround operator associativity issue
...
https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1235384480
2 years ago
pukkandan
d2c8aadf79
[cleanup] Misc
...
Closes #4710 , Closes #4754 , Closes #4723
Authored by: pukkandan, MrRawes, DavidH-2022
2 years ago
pukkandan
1ac7f46184
Update to ytdl-commit-ed5c44e7
...
[compat] Replace deficient ChainMap class in Py3.3 and earlier
ed5c44e7b7
2 years ago
pukkandan
05deb747bb
[jsinterp] Fix escape in regex
2 years ago
Elyse
f26af78a8a
[jsinterp] Add `charcodeAt` and bitwise overflow ( #4706 )
...
Authored by: elyse0
2 years ago
pukkandan
d81ba7d491
[jsinterp, extractor/youtube] Minor fixes
2 years ago
pukkandan
c4b2df872d
[jsinterp] Fix `_separate`
...
Ref: https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1231126941
2 years ago
pukkandan
164b03c486
[jsinterp] Fix bug in operator precedence
...
Fixes https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1226659543
2 years ago
pukkandan
e5458d1d88
Fix lazy extractor bug in fe7866d0ed
...
and add test
Fixes https://github.com/yt-dlp/yt-dlp/pull/3234#issuecomment-1225347071
2 years ago
pukkandan
90a1df305b
[test] Fix test_youtube_signature
2 years ago
pukkandan
be13a6e525
[jsinterp] Bring on-par with youtube-dl
...
Code from: https://github.com/ytdl-org/youtube-dl/pull/31175 , https://github.com/ytdl-org/youtube-dl/pull/31182
Authored by pukkandan, dirkf
2 years ago
pukkandan
f6ca640b12
[jsinterp] Fix for youtube player 1f7d5369
...
Closes #4635 again
2 years ago
pukkandan
6d3e7424bf
[jsinterp] Fix for youtube player c81bbb4a
2 years ago
pukkandan
49b4ceaedf
[jsinterp] Bring or-par with youtube-dl
...
Partially cherry-picked from: d231b56717
Authored by pukkandan, dirkf
2 years ago
pukkandan
d711839760
Update to ytdl-commit-e6a836d
...
[core] Make `--max-downloads ...` stop immediately on reaching the limit
e6a836d54c
2 years ago
pukkandan
8f53dc44a0
[jsinterp] Handle new youtube signature functions
...
Closes #4635
2 years ago
pukkandan
97d9c79e92
Fix tests for 989a01c261
2 years ago
Lauren N. Liberda
fc61aff41b
Determine merge container better (See desc) ( #1482 )
...
* Determine the container early. Closes #4069
* Use codecs instead of just file extensions
* Obey `--prefer-free-formats`
* Allow fallbacks in `--merge-output`
Authored by: pukkandan, selfisekai
2 years ago
pukkandan
be5c1ae862
Standardize retry mechanism ( #1649 )
...
* [utils] Create `RetryManager`
* Migrate all retries to use the manager
* [extractor] Add wrapper methods for convenience
* Standardize console messages for retries
* Add `--retry-sleep` for extractors
2 years ago
pukkandan
f14a2d8382
[extractor/html5] Separate into own extractor ( #4307 )
...
Closes #4291
Authored by: coletdjnz, pukkandan
2 years ago
pukkandan
f2e8dbcc00
[extractor, test] Basic framework for embed tests ( #4307 )
...
and split download tests so they can be more easily run in CI
Authored by: coletdjnz
2 years ago
nixxo
47304e07dc
[extractor/rai] Add raisudtirol extractor ( #4524 )
...
Closes #4206
Authored by: nixxo
2 years ago
pukkandan
6929b41a21
Remove Python 3.6 support
...
Closes #3764
2 years ago
pukkandan
88f60feb32
Fix a904a7f8c6
2 years ago
Lesmiscore
a904a7f8c6
Allow users to specify encoding in each config files ( #4357 )
...
Authored by: Lesmiscore
2 years ago
Elyse
7a7eeb1005
[aes] Add multiple padding modes in CBC
...
Authored by: elyse0
2 years ago
pukkandan
f5ea47488a
[cleanup] Minor fixes
2 years ago
pukkandan
f2df407165
[cleanup] Misc cleanup
2 years ago
pukkandan
ae61d108dd
[cleanup] Misc cleanup
2 years ago
pukkandan
14f25df2b6
[compat] Remove deprecated functions from core code
2 years ago
pukkandan
54007a45f1
[cleanup] Consistent style for file heads
2 years ago
pukkandan
ac66811112
[compat] Remove more functions
...
Removing any more will require changes to a large number of extractors
2 years ago
pukkandan
3c5386cd71
[compat] Fix `compat.WINDOWS_VT_MODE`
2 years ago
pukkandan
f0500bd1e4
[test] Fix `FakeYDL` signatures
...
Authored by: coletdjnz
2 years ago
pukkandan
6d1b34896e
Update to ytdl-commit-8a158a9
...
[NHK] Use new API URL
6508688e88
Closes #2337 , Closes #4063
2 years ago
pukkandan
7e9a612585
Add option `--lazy-playlist` to process entries as they are received
2 years ago
pukkandan
7e88d7d78f
Add slicing notation to `--playlist-items`
...
* Adds support for negative indices and step
* Add `-I` as alias for `--playlist-index`
* Deprecates `--playlist-start`, `--playlist-end`, `--playlist-reverse`, `--no-playlist-reverse`
Closes #2951 , Closes #2853
2 years ago
Lesmiscore
222a230871
[extractor/common] Recognize `src` attribute from HTML5 media elements ( #3899 )
...
Authored by: Lesmiscore
2 years ago
pukkandan
2414649192
[cleanup] Misc cleanup
3 years ago
pukkandan
0f06bcd759
[cleanup] Minor fixes (See desc)
...
* [youtube] Fix `--youtube-skip-dash-manifest`
* [build] Use `$()` in `Makefile`. Closes #3684
* Fix bug in 385ffb467b
* Fix bug in 43d7f5a5d0
* [cleanup] Remove unnecessary `utf-8` from `str.encode`/`bytes.decode`
* [utils] LazyList: Expose unnecessarily "protected" attributes
and other minor cleanup
3 years ago
coletdev
bb58c9ed5c
Add support for SSL client certificate authentication ( #3435 )
...
Adds `--client-certificate`, `--client-certificate-key`, `--client-certificate-password`
Authored-by: coletdjnz
Co-authored-by: df <fieldhouse@gmx.net>
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
3 years ago
pukkandan
0a5a191a2a
Improve `--clean-infojson`
...
It should not removes fields that may be needed for `--load-infojson`.
Eg: `_ffmpeg_args`, `_has_drm`
3 years ago
pukkandan
9196cbfe8b
[compat] Ensure submodules are correctly wrapped
3 years ago
pukkandan
9b8ee23b99
[dependencies] Create module with all dependency imports
3 years ago
felix
77f9033095
[compat] Split into sub-modules ( #2173 )
...
Authored by: fstirlitz, pukkandan
3 years ago
pukkandan
19a0394044
[cleanup] Misc cleanup and refactor ( #2173 )
3 years ago
pukkandan
b6dc37fe2a
[test] Convert warnings into errors
...
* And fix some existing warnings
Authored by: fstirlitz
3 years ago
pukkandan
e5a998f368
[cleanup] Misc cleanup ( #2173 )
...
Authored by: fstirlitz, pukkandan
3 years ago
pukkandan
f82711587c
[cleanup] Sort imports
...
Using https://github.com/PyCQA/isort
isort -m VERTICAL_HANGING_INDENT --py 36 -l 80 --rr -n --tc .
3 years ago
pukkandan
86e5f3ed2e
[cleanup] Upgrade syntax
...
Using https://github.com/asottile/pyupgrade
1. `__future__` imports and `coding: utf-8` were removed
2. Files were rewritten with `pyupgrade --py36-plus --keep-percent-format`
3. f-strings were cherry-picked from `pyupgrade --py36-plus`
Extractors are left untouched (except removing header) to avoid unnecessary merge conflicts
3 years ago
pukkandan
f9934b9614
[cleanup] Mark some compat variables for removal ( #2173 )
...
Authored by fstirlitz, pukkandan
3 years ago
felix
cfb0511d82
[cleanup] Remove unused code paths ( #2173 )
...
Notes:
* `_windows_write_string`: Fixed in 3.6
* https://bugs.python.org/issue1602
* PEP: https://www.python.org/dev/peps/pep-0528
* Windows UTF-8 fix: Fixed in 3.3
* https://bugs.python.org/issue13216
* `__loader__`: is always present in 3.3+
* https://bugs.python.org/issue14646
* `workaround_optparse_bug9161`: Fixed in 2.7
* https://bugs.python.org/issue9161
Authored by: fstirlitz
3 years ago
felix
ab96d1ad1b
[cleanup] Remove unused scripts/tests ( #2173 )
...
Authored by fstirlitz, pukkandan
3 years ago
pukkandan
b506289fe2
[test] Add `test_locked_file`
3 years ago
coletdev
1c1b2f96ae
[youtube:tab] Fix duration extraction for shorts ( #3171 )
...
Related: https://github.com/TeamNewPipe/NewPipe/issues/8034
Authored-by: coletdjnz
3 years ago
pukkandan
5c3895fff1
[outtmpl] Limit changes during sanitization
...
Closes #2761
3 years ago
pukkandan
34baa9fdf0
[outtmpl] Fix replacement/default when used with alternate
3 years ago
pukkandan
6db9c4d57d
Ignore format-specific fields in initial pass of `--match-filter`
...
Closes #3074
3 years ago
s0u1h
eeb2a770f3
[utils] `format_decimal_suffix`: Fix for very large numbers ( #3109 )
...
Authored by: s0u1h
3 years ago
pukkandan
52efa4b312
[extractor] Add `_perform_login` function ( #2943 )
...
* Adds new functions `_initialize_pre_login` and `_perform_login` as part of the extractor API
* Adds `ie.supports_login` to the public API
3 years ago
pukkandan
09b49e1f68
Add pre-processor stage `after_filter`
...
* Move `_match_entry` and `post_extract` to `process_video_result`. It is also left in `process_info` for API compat
* `--list-...` options and `--force-write-archive` now obey filtering options
* Move `SponsorBlockPP` to `after_filter`. Closes https://github.com/yt-dlp/yt-dlp/issues/2536
* Reverts 4ec82a72bb
since this commit addresses the issue it was solving
3 years ago
MinePlayersPE
c571b3a6ab
[youtube] Fix n-sig extraction for phone player JS ( #2816 )
...
Authored by: MinePlayersPE
3 years ago
pukkandan
28469edd7d
Release 2022.02.03
3 years ago
pukkandan
d5a398988b
Update to ytdl-commit-78ce962
...
[youtube] Support channel search
78ce962f4f
3 years ago
pukkandan
48416bc4a8
[youtube] Fix n-sig for player e06dea74
3 years ago
pukkandan
88f23a18e0
[docs,cleanup] Fix linter and misc cleanup
...
Closes #2419
3 years ago
pukkandan
6970b6005e
[cleanup] Minor fixes
...
Closes #2334
3 years ago
trasssh
4259402c56
[Ted] Rewrite extractor ( #2359 )
...
Closes #2343
Authored by: pukkandan, trassshhub
3 years ago
pukkandan
8bd1c00bf3
[utils] Handle `ss:xxx` in `parse_duration`
...
Closes #2388
3 years ago
pukkandan
f95a7b93e6
[test] Fix TestVerboseOutput
...
Closes #2269
3 years ago
Zenon Mousmoulas
0254f16274
[utils] Improve `get_elements_text_and_html_by_attribute` regex ( #2280 )
...
Authored by: zmousm, pukkandan
3 years ago
pukkandan
976ae3eabb
[youtube] Update tests
3 years ago
Zenon Mousmoulas
6f32a0b5b7
[utils] Improve parsing for nested HTML elements ( #2129 )
...
and add functions to return the HTML of elements
Authored by: zmousm
3 years ago
pukkandan
9e907ebddf
[cleanup] Misc cleanup
3 years ago
pukkandan
06e57990f7
Allow multiple and nested configuration files
3 years ago
pukkandan
f46e2f9d92
Add key `requested_downloads` in the root `info_dict`
3 years ago
chris
f522573787
[extractor] Extract chapters from JSON-LD ( #2031 )
...
Authored by: iw0nderhow, pukkandan
3 years ago
nixxo
7592749cbe
[extractor] Extract thumbnails from JSON-LD ( #2195 )
...
Authored by: nixxo
3 years ago
Ashish Gupta
497d77e1aa
[KelbyOne] Add extractor ( #2181 )
...
Closes #2170
Authored by: Ashish0804
3 years ago
pukkandan
abbeeebc4c
[outtmpl] Alternate form for `D` and fix suffix's case
...
Fixes: https://github.com/yt-dlp/yt-dlp/issues/2085#issuecomment-1002247689 , https://github.com/yt-dlp/yt-dlp/pull/2132/files#r775729811
3 years ago
Pierre Mdawar
f02d24d8d2
[utils] Fix `format_bytes` output for Bytes ( #2132 )
...
Authored by: pukkandan, mdawar
3 years ago
Matt Broadway
f59f5ef8b6
[cookies] Support other keyrings ( #2032 )
...
Authored by: mbway
3 years ago
pukkandan
352d5da812
[utils] Improve `parse_count`
3 years ago
pukkandan
37893bb0c9
[outtmpl] Change filename sanitization type to `S`
...
`F` is already used for float!
Bug in e0fd95737d
3 years ago
pukkandan
b69fd25c25
[cleanup] Misc cleanup
...
Closes #1942 #1976 #2020 #2058 #1984
3 years ago
pukkandan
e0fd95737d
[outtmpl] Add alternate forms `F`, `D`
...
and improve `id` detection
F = sanitize as filename (# = restricted)
D = add Decimal suffixes
Closes #2085 , 2081
3 years ago
pukkandan
75ad33572b
[test/download] Split `sanitize_got_info_dict` into a separate function
...
so that it can be used by third party scripts
3 years ago
PilzAdam
e978789f0f
[outtmpl] Add operator `&` for replacement text ( #2012 )
...
Authored by: PilzAdam
3 years ago
Zenon Mousmoulas
d5c3254889
[extractor] Support default implicit graph in JSON-LD ( #1983 )
...
Original PR: https://github.com/ytdl-org/youtube-dl/pull/30229
Per W3C JSON-LD v1.1 §4.9 (non-normative ref):
When a JSON-LD document's top-level structure is a map that contains
no other keys than @graph and optionally @context (properties that
are not mapped to an IRI or a keyword are ignored), @graph is
considered to express the otherwise implicit default graph.
Authored by: zmousm
3 years ago
std-move
fed1309651
[test/download] Ignore field `webpage_url_domain` ( #2014 )
...
Authored by: std-move
3 years ago
pukkandan
ff9f925b63
[test/download] Add more fields
3 years ago
Nil Admirari
8157a09d22
[SponsorBlock] Add Filler and Highlight categories ( #1664 )
...
Authored by: nihil-admirari, pukkandan
3 years ago
pukkandan
57dbe8077f
[jsinterp] Fix splice to handle float
...
Needed for new youtube js player f1ca6900
Closes #1767
3 years ago
pukkandan
282f570918
[utils] Fix error when copying `LazyList`
3 years ago
pukkandan
c5e3f84972
[utils] Allow alignment in `render_table`
...
and add tests
3 years ago
The Hatsune Daishi
a04e005521
[AES] Add ECB mode ( #1686 )
...
Needed for #1688
Authored by: nao20010128nao
3 years ago
pukkandan
dd2a987d3f
[tests] Fix tests
3 years ago
pukkandan
9222c38182
[cleanup] Minor cleanup
...
Closes #1696 , Closes #1673
3 years ago
pukkandan
4476d2c764
[outtmpl] Add alternate forms for `q` and `j`
3 years ago
pukkandan
582fad70f5
[outtmpl] Do not traverse `None`
...
Closes #1585
3 years ago
pukkandan
a331949df3
[test/download] Fallback test to `bv`
3 years ago
pukkandan
a1fc7ca074
[jsinterp] Handle default in switch better
3 years ago
pukkandan
404f611f1c
[youtube] Fix throttling by decrypting n-sig ( #1437 )
3 years ago
Damiano Amatruda
17ec8bcfa9
[microsoftstream] Add extractor ( #1201 )
...
Based on: https://github.com/ytdl-org/youtube-dl/pull/24649
Fixes: https://github.com/ytdl-org/youtube-dl/issues/24440
Authored by: damianoamatruda, nixklai
3 years ago
pukkandan
aa7785f860
[utils] Standardize timestamp formatting code
...
Closes #1285
3 years ago
pukkandan
176f1866cb
Add HDR information to formats
3 years ago
pukkandan
17bddf3e95
Reduce default `--socket-timeout`
3 years ago
pukkandan
18f96d129b
[utils] Allow duration strings in filter
...
Closes #1309
3 years ago
pukkandan
b836dc94f2
[outtmpl] Fix bug in expanding environment variables
3 years ago
pukkandan
b5ae35ee6d
[cleanup] Misc cleanup
3 years ago
pukkandan
819e05319b
Improved progress reporting (See desc) ( #1125 )
...
* Separate `--console-title` and `--no-progress`
* Add option `--progress` to show progress-bar even in quiet mode
* Fix and refactor `minicurses`
* Use `minicurses` for all progress reporting
* Standardize use of terminal sequences and enable color support for windows 10
* Add option `--progress-template` to customize progress-bar and console-title
* Add postprocessor hooks and progress reporting
Closes : #906 , #901 , #1085 , #1170
3 years ago
pukkandan
e6f21b3d92
[docs,cleanup] Some minor refactoring and improve docs
3 years ago
pukkandan
91dd88b90f
[outtmpl] Alternate form of format type `l` for `\n` delimited list
3 years ago
pukkandan
524e2e4fda
[outtmpl] Format type `U` for unicode normalization
3 years ago
pukkandan
ff1c7fc9d3
Allow `0` in `--playlist-items`
3 years ago
pukkandan
1b629e1b4c
[test/cookies] Improve logging
3 years ago
Ákos Sülyi
09906f554d
[aes] Add `aes_gcm_decrypt_and_verify` ( #1020 )
...
Authored by: sulyi, pukkandan
3 years ago
Nil Admirari
c6af2dd8e5
[SponsorBlock] Improve merge algorithm ( #999 )
...
Authored by: nihil-admirari
3 years ago