youtube-dl
2 years ago[YouTube] Handle player c5a4daa1 with indirect n-function definition
dirkf [Tue, 24 May 2022 14:33:00 +0000 (15:33 +0100)]
[YouTube] Handle player c5a4daa1 with indirect n-function definition

* resolves #30976

2 years agoUpdate options.py
Jacob Chapman [Wed, 13 Apr 2022 12:21:23 +0000 (07:21 -0500)]
Update options.py

2 years ago[wat.tv] Add version `pver` to metadata API call
dirkf [Thu, 19 May 2022 17:41:48 +0000 (17:41 +0000)]
[wat.tv] Add version `pver` to metadata API call

Resolves #30959.

2 years ago[NHK] Support alphabetic characters in 7-char NhkVod IDs (#29682)
dirkf [Mon, 9 May 2022 17:54:41 +0000 (18:54 +0100)]
[NHK] Support alphabetic characters in 7-char NhkVod IDs (#29682)

2 years ago[doc] Clarify test naming
dirkf [Thu, 28 Apr 2022 14:25:49 +0000 (15:25 +0100)]
[doc] Clarify test naming

2 years ago[streamcz] Remove empty `'{}'.format()` for Py2.6
dirkf [Fri, 29 Apr 2022 12:36:02 +0000 (13:36 +0100)]
[streamcz] Remove empty `'{}'.format()` for Py2.6

Use `'-join()'` here, or `{0}`, ..., in general.

2 years ago[KTH] Add new extractor for KTH play (#30885)
Árni Dagur [Thu, 28 Apr 2022 09:18:10 +0000 (11:18 +0200)]
[KTH] Add new extractor for KTH play (#30885)

* Implement extractor for KTH play
* Make KTH Play url regex more relaxed

2 years ago[Youtube] Fix "n" descrambling for player fae06c11
dirkf [Fri, 15 Apr 2022 15:07:09 +0000 (16:07 +0100)]
[Youtube] Fix "n" descrambling for player fae06c11

Resolves #30856.

2 years agoDisable blank issues
dirkf [Sun, 10 Apr 2022 04:49:09 +0000 (05:49 +0100)]
Disable blank issues

2 years ago[RAI] Fix extraction of http formats
nixxo [Sat, 2 Apr 2022 05:57:56 +0000 (07:57 +0200)]
[RAI] Fix extraction of http formats

From https://github.com/yt-dlp/yt-dlp/pull/3272
Closes https://github.com/yt-dlp/yt-dlp/issues/3270
Authored by: nixxo

2 years ago[RAI] Extend formats with direct http mp4 link (PR #27990)
nixxo [Wed, 27 Jan 2021 11:24:50 +0000 (12:24 +0100)]
[RAI] Extend formats with direct http mp4 link (PR #27990)

* initial support for creating direct mp4 link
* improved regexes and info extraction
* added "connection: close" to request headers
* updated to https://github.com/yt-dlp/yt-dlp/pull/208

2 years ago[RAI] Added checks for DRM protected content (PR #27657)
nixxo [Mon, 4 Jan 2021 14:11:47 +0000 (15:11 +0100)]
[RAI] Added checks for DRM protected content (PR #27657)

reviewed by pukkandan (https://github.com/yt-dlp/yt-dlp/pull/150)

2 years ago[extractor/bilibili] Fix path "/audio/auxxxxx" download return 403
lihan7 [Fri, 25 Mar 2022 07:46:28 +0000 (15:46 +0800)]
[extractor/bilibili] Fix path "/audio/auxxxxx" download return 403

2 years agoIgnore --external-downloader-args if --external-downloader was rejected
dirkf [Tue, 22 Feb 2022 11:24:06 +0000 (11:24 +0000)]
Ignore --external-downloader-args if --external-downloader was rejected

... and generate warning

2 years agoMake default upload_/release_date a compat_str
df [Sun, 1 Aug 2021 08:42:57 +0000 (09:42 +0100)]
Make default upload_/release_date a compat_str

Ensures download tests pass in Python 2 as well as 3; also
add YoutubeDL tests for timestamp -> upload_date etc.

2 years agoAvoid skipping ID when unlisted_hash is numeric
dirkf [Fri, 30 Jul 2021 11:58:19 +0000 (12:58 +0100)]
Avoid skipping ID when unlisted_hash is numeric

Pattern needed a non-greedy match; also replaced a redundant test with one for this, issue 29690

2 years ago[Alsace20TV] Add new extractors Alsace20TVIE, Alsace20TVEmbedIE
dirkf [Mon, 7 Feb 2022 20:06:27 +0000 (20:06 +0000)]
[Alsace20TV] Add new extractors Alsace20TVIE, Alsace20TVEmbedIE

2 years ago[CPAC] Add extractor for Canadian Parliament
dirkf [Thu, 24 Feb 2022 09:16:16 +0000 (09:16 +0000)]
[CPAC] Add extractor for Canadian Parliament

CPACIE: single episode
CPACPlaylistIE: playlists and searches

2 years agoFixed groups() call on potentially empty regex search object (#30676)
dirkf [Thu, 24 Feb 2022 18:26:58 +0000 (18:26 +0000)]
Fixed groups() call on potentially empty regex search object (#30676)

* Fixed groups() call on potentially empty regex search object.
- https://github.com/ytdl-org/youtube-dl/issues/30521

* minimising lines changed

Co-authored-by: yayorbitgum <50963144+yayorbitgum@users.noreply.github.com>
2 years ago[aliexpress] Fix test case
marieell [Thu, 10 Feb 2022 09:36:24 +0000 (10:36 +0100)]
[aliexpress] Fix test case

2 years ago[bigo] add support for bigo.tv (#30635)
Lesmiscore (Naoya Ozaki) [Thu, 24 Feb 2022 13:34:32 +0000 (22:34 +0900)]
[bigo] add support for bigo.tv (#30635)

* [bigo] add support for bigo.tv

* [bigo] prepend "Bigo says"

* title fallback

* add error for invalid json data

2 years ago[rutv] fix vbr for empty string value (#30623)
Vladimir Stavrinov [Mon, 14 Feb 2022 17:54:31 +0000 (20:54 +0300)]
[rutv] fix vbr for empty string value (#30623)

* [rutv] use str_to_int() (thx dirkf)

2 years agoadd missing __future__ import unicode_literals
Petr Vaněk [Sat, 12 Feb 2022 14:27:10 +0000 (15:27 +0100)]
add missing __future__ import unicode_literals

2 years agoresolve problem with unpacking operator for <py3.5
Petr Vaněk [Sat, 12 Feb 2022 14:02:08 +0000 (15:02 +0100)]
resolve problem with unpacking operator for <py3.5

2 years ago[streamcz] test fixes and one additional test
Petr Vaněk [Sat, 12 Feb 2022 12:13:20 +0000 (13:13 +0100)]
[streamcz] test fixes and one additional test

2 years agodo not use f-strings
Petr Vaněk [Sat, 12 Feb 2022 11:30:29 +0000 (12:30 +0100)]
do not use f-strings

2 years agoavoid traverse_obj function
Petr Vaněk [Sat, 12 Feb 2022 11:28:30 +0000 (12:28 +0100)]
avoid traverse_obj function

2 years agorevert: use _match_valid_url function
Petr Vaněk [Sat, 12 Feb 2022 10:55:13 +0000 (11:55 +0100)]
revert: use _match_valid_url function

2 years ago[streamcz] cherry-pick from yt-dlp
Petr Vaněk [Tue, 11 Jan 2022 16:56:18 +0000 (17:56 +0100)]
[streamcz] cherry-pick from yt-dlp

Cherry-picked-from: 7d449fff5346 ("[streamcz] Fix extractor (#1616)")

2 years ago[extractor/videa] Back-port from yt-dlp PRs 463+1028
dirkf [Wed, 9 Feb 2022 04:37:28 +0000 (04:37 +0000)]
[extractor/videa] Back-port from yt-dlp PRs 463+1028

Authored by: nyuszika7h

2 years ago[extractor/videa] fix extraction in Py2
kikuyan [Thu, 23 Dec 2021 02:40:45 +0000 (11:40 +0900)]
[extractor/videa] fix extraction in Py2

Fixes #30416

2 years ago[BBC] Also allow PID with leading 'l' (live?)
dirkf [Wed, 9 Feb 2022 21:21:59 +0000 (21:21 +0000)]
[BBC] Also allow PID with leading 'l' (live?)

2 years ago[Nuvid] Use site JSON for video details (#29332)
dirkf [Wed, 9 Feb 2022 02:40:34 +0000 (02:40 +0000)]
[Nuvid] Use site JSON for video details (#29332)

Back-port yt-dlp PR 1022 onto PR #17890 and update

Video details aren't in the original HTML now but populated by async JS

Co-authored by: u-spec-png
Co-authored by: vidaritos

2 years ago[ARD] Back-port subtitle extraction from yt-dlp PR 2409
dirkf [Mon, 7 Feb 2022 13:28:21 +0000 (13:28 +0000)]
[ARD] Back-port subtitle extraction from yt-dlp PR 2409

Authored by: fstirlitz
Fixes #30543
Closes #17766 (thanks ngdio)

2 years agoRemove redundant assigning `format_id`
Seonghyeon Cho [Wed, 13 Oct 2021 11:27:40 +0000 (20:27 +0900)]
Remove redundant assigning `format_id`

2 years agoAdd ArteTVCategoryIE to support category playlists
df [Mon, 18 Oct 2021 14:54:26 +0000 (15:54 +0100)]
Add ArteTVCategoryIE to support category playlists

2 years agoUpdated Album URL regex
Abdullah Ibn Fulan [Tue, 17 Aug 2021 19:56:39 +0000 (19:56 +0000)]
Updated Album URL regex

Mistakenly forgot to edit a line in last commit.

Co-authored-by: dirkf <fieldhouse@gmx.net>
2 years ago[extractor/audiomack] Updated URL regex, corrected invalid testcases, fixed bug
Abdullah Ibn Fulan [Tue, 17 Aug 2021 12:22:07 +0000 (18:22 +0600)]
[extractor/audiomack] Updated URL regex, corrected invalid testcases, fixed bug

Co-authored-by: dirkf <fieldhouse@gmx.net>
2 years agoSupport __INITIAL_DATA__ with stringified JSON
dirkf [Tue, 30 Nov 2021 05:15:33 +0000 (05:15 +0000)]
Support __INITIAL_DATA__ with stringified JSON

Add test and fix test for bbcthreeConfig

2 years agoTry for timestamp, description from window.__INITIAL_DATA__ pages
df [Sun, 18 Apr 2021 00:46:40 +0000 (01:46 +0100)]
Try for timestamp, description from window.__INITIAL_DATA__ pages

2 years ago[niconico] Implement heartbeat for download
dirkf [Tue, 7 Dec 2021 23:30:30 +0000 (23:30 +0000)]
[niconico] Implement heartbeat for download

2 years ago[niconico] Back-port extractor from yt-dlp
dirkf [Mon, 6 Dec 2021 20:52:21 +0000 (20:52 +0000)]
[niconico] Back-port extractor from yt-dlp

Add Nico search extractors, fix extraction

2 years ago[test:download] Only extract enough videos for playlist_mincount
dirkf [Mon, 6 Dec 2021 19:26:33 +0000 (19:26 +0000)]
[test:download] Only extract enough videos for playlist_mincount

2 years ago[applepodcasts] Extract default thumbnail image
dirkf [Thu, 9 Dec 2021 01:35:35 +0000 (01:35 +0000)]
[applepodcasts] Extract default thumbnail image

2 years ago[applepodcasts] Improve format extraction
dirkf [Thu, 9 Dec 2021 00:55:04 +0000 (00:55 +0000)]
[applepodcasts] Improve format extraction

Set acodec and vcodec, etc, to avoid breaking, eg, bestaudio

2 years ago[applepodcasts] Support new AMP-ish page structure
dirkf [Wed, 8 Dec 2021 23:37:54 +0000 (23:37 +0000)]
[applepodcasts] Support new AMP-ish page structure

2 years agoxvideos: Fix for #30271
Chris Rose [Fri, 26 Nov 2021 16:08:17 +0000 (08:08 -0800)]
xvideos: Fix for #30271

2 years agoFix tests for working IEs; disable obsolete WDRMobile
dirkf [Tue, 25 Jan 2022 13:04:04 +0000 (13:04 +0000)]
Fix tests for working IEs; disable obsolete WDRMobile

2 years agoFix WDRMaus; extend URL matching for other Maus pages; improve ID extraction
dirkf [Tue, 25 Jan 2022 12:59:31 +0000 (12:59 +0000)]
Fix WDRMaus; extend URL matching for other Maus pages; improve ID extraction

2 years agoUpdate URPlayIE extractor for Next.js page format, with subtitles
dirkf [Thu, 13 Jan 2022 19:38:08 +0000 (19:38 +0000)]
Update URPlayIE extractor for Next.js page format, with subtitles

2 years agoSupport more deeply nested ptmd_path with test, update tests
dirkf [Fri, 14 Jan 2022 20:14:14 +0000 (20:14 +0000)]
Support more deeply nested ptmd_path with test, update tests

2 years agoAdditional tweaks: allow any .ndr.de, simplify quote match
dirkf [Wed, 19 Jan 2022 13:24:33 +0000 (13:24 +0000)]
Additional tweaks: allow any .ndr.de, simplify quote match

2 years agoFix NDR, NJoy tests
dirkf [Mon, 17 Jan 2022 03:29:43 +0000 (03:29 +0000)]
Fix NDR, NJoy tests

2 years agoNJoy: improve extraction of NDR id, description, etc with current page formats
dirkf [Mon, 17 Jan 2022 03:22:32 +0000 (03:22 +0000)]
NJoy: improve extraction of NDR id, description, etc with current page formats

2 years agoNDR: improve extraction of NDR id, description, etc with current page formats
dirkf [Mon, 17 Jan 2022 03:13:37 +0000 (03:13 +0000)]
NDR: improve extraction of NDR id, description, etc with current page formats

2 years agoSupport Tele5 pages with Discovery Networks format instead of JWPlatform
dirkf [Mon, 17 Jan 2022 13:11:11 +0000 (13:11 +0000)]
Support Tele5 pages with Discovery Networks format instead of JWPlatform

2 years agoBack-port yt-dlp Viki extractor
dirkf [Fri, 4 Feb 2022 11:29:41 +0000 (11:29 +0000)]
Back-port yt-dlp Viki extractor

From https://github.com/yt-dlp/yt-dlp/pull/2540

2 years agoReturn the item itself if playlist has one entry
dirkf [Fri, 4 Feb 2022 11:38:44 +0000 (11:38 +0000)]
Return the item itself if playlist has one entry

Removes playlist spam from log

2 years agoFind TV2DK Kaltura ID in Nuxt.js page format
dirkf [Fri, 4 Feb 2022 11:24:03 +0000 (11:24 +0000)]
Find TV2DK Kaltura ID in Nuxt.js page format

2 years ago[youtube:search] Add tests
pukkandan [Thu, 3 Feb 2022 02:14:37 +0000 (07:44 +0530)]
[youtube:search] Add tests

2 years agoRework 2c2c2bd with an actual Mix page and realistic playlist size
dirkf [Fri, 4 Feb 2022 04:09:23 +0000 (04:09 +0000)]
Rework 2c2c2bd with an actual Mix page and realistic playlist size

From https://github.com/ytdl-org/youtube-dl/commit/2c2c2bd348b7dce0aad55a6fc37a18c6f9a000e3#commitcomment-65953545

2 years agoMerge branch 'pukkandan-yt-searchurl' into yt-dl-master
dirkf [Fri, 4 Feb 2022 03:50:32 +0000 (03:50 +0000)]
Merge branch 'pukkandan-yt-searchurl' into yt-dl-master

Closes #27749

2 years ago[youtube] Support channel search
pukkandan [Sat, 29 Jan 2022 19:54:09 +0000 (01:24 +0530)]
[youtube] Support channel search

Code from https://github.com/yt-dlp/yt-dlp/commit/cd684175adbe663bbdf6a6c72d8b99b617b6ff2e

2 years agoAvoid crashing if n-sig decode fails
dirkf [Tue, 1 Feb 2022 23:22:57 +0000 (23:22 +0000)]
Avoid crashing if n-sig decode fails

2 years agoSupport Youtube Shorts URL format
dirkf [Mon, 31 Jan 2022 00:02:56 +0000 (00:02 +0000)]
Support Youtube Shorts URL format

2 years ago[YouTube] Fix n-sig for player e06dea74 (#30582)
dirkf [Tue, 1 Feb 2022 14:39:03 +0000 (14:39 +0000)]
[YouTube] Fix n-sig for player e06dea74 (#30582)

From yt-dl commit 48416bc

2 years agoImplement n-param descrambling using JSInterp
df [Mon, 1 Nov 2021 04:45:42 +0000 (04:45 +0000)]
Implement n-param descrambling using JSInterp

Fixes #29326, closes #29790, closes #30004, closes #30024, closes #30052,
closes #30088, closes #30097, closes #30102, closes #30109, closes #30119,
closes #30125, closes #30128, closes #30162, closes #30173, closes #30186,
closes #30192, closes #30221, closes #30239, closes #30539, closes #30552.

2 years agoRefactor JSInterpreter._separate
dirkf [Fri, 10 Dec 2021 19:14:54 +0000 (19:14 +0000)]
Refactor JSInterpreter._separate

yt-dlp/yt-dlp/@06dfe0a, improve _MATCHING_PARENS

2 years agoBack-port test_youtube_signature.py from yt-dlp and fix JSInterp accordingly
dirkf [Sat, 27 Nov 2021 03:18:29 +0000 (03:18 +0000)]
Back-port test_youtube_signature.py from yt-dlp and fix JSInterp accordingly

2 years agoFix splice to handle float
dirkf [Sat, 27 Nov 2021 02:06:13 +0000 (02:06 +0000)]
Fix splice to handle float

Needed for new youtube js player f1ca6900
Add https://github.com/yt-dlp/yt-dlp/commit/57dbe8077f8d00e0fffac53669f40cd7d584474f#diff-729b57caa8d006426f6a8960c061f519a8b6658682284015e069745af52ffb07

2 years agoHandle default in switch better
df [Thu, 4 Nov 2021 12:48:06 +0000 (12:48 +0000)]
Handle default in switch better

Add https://github.com/yt-dlp/yt-dlp/commit/a1fc7ca0743c8df06416e68ee74b64e07dfe7135
Thanks coletdjnz

2 years agoBack-port JS interpreter upgrade from yt-dlp PR #1437
df [Tue, 2 Nov 2021 11:18:39 +0000 (11:18 +0000)]
Back-port JS interpreter upgrade from yt-dlp PR #1437

2 years agoAdd compat_map/filter and use the former
df [Mon, 1 Nov 2021 13:34:29 +0000 (13:34 +0000)]
Add compat_map/filter and use the former

2 years agoFix test_youtube_flat_playlist_extraction
df [Mon, 1 Nov 2021 04:44:57 +0000 (04:44 +0000)]
Fix test_youtube_flat_playlist_extraction

2 years agoRemove obsolete non-working test_youtube_toptracks
df [Fri, 29 Oct 2021 02:10:35 +0000 (03:10 +0100)]
Remove obsolete non-working test_youtube_toptracks

2 years agoFix test_youtube_mix
df [Fri, 29 Oct 2021 02:03:00 +0000 (03:03 +0100)]
Fix test_youtube_mix

2 years agoRemove obsolete test_youtube_course
df [Thu, 28 Oct 2021 14:57:10 +0000 (15:57 +0100)]
Remove obsolete test_youtube_course

2 years agoFix test_youtube_playlist_noplaylist
df [Thu, 28 Oct 2021 14:55:38 +0000 (15:55 +0100)]
Fix test_youtube_playlist_noplaylist

2 years agoMerge branch 'UP/youtube-dl' into dl/YoutubeSearchURLIE
pukkandan [Sat, 29 Jan 2022 19:37:28 +0000 (01:07 +0530)]
Merge branch 'UP/youtube-dl' into dl/YoutubeSearchURLIE

2 years agoFix max_results
pukkandan [Sat, 29 Jan 2022 19:24:22 +0000 (00:54 +0530)]
Fix max_results

2 years agoUse `itertools.islice`
pukkandan [Sat, 29 Jan 2022 19:19:55 +0000 (00:49 +0530)]
Use `itertools.islice`

2 years agoAdd back `YoutubeSearchURLIE`
pukkandan [Sat, 29 Jan 2022 19:11:47 +0000 (00:41 +0530)]
Add back `YoutubeSearchURLIE`

2 years agorelease 2021.12.17
Sergey M․ [Thu, 16 Dec 2021 18:49:07 +0000 (01:49 +0700)]
release 2021.12.17

2 years ago[ChangeLog] Actualize
Sergey M․ [Thu, 16 Dec 2021 18:43:16 +0000 (01:43 +0700)]
[ChangeLog] Actualize
[ci skip]

2 years ago[youtube] Update signature function patterns (closes #30363) (#30366)
lanegramling [Thu, 16 Dec 2021 18:42:17 +0000 (11:42 -0700)]
[youtube] Update signature function patterns (closes #30363) (#30366)

3 years ago[peertube] only call description endpoint if necessary (#29383)
bopol [Thu, 1 Jul 2021 06:53:22 +0000 (08:53 +0200)]
[peertube] only call description endpoint if necessary (#29383)

3 years ago[periscope] pass referer to HLS requests(closes #29419)
Remita Amine [Mon, 28 Jun 2021 19:06:33 +0000 (20:06 +0100)]
[periscope] pass referer to HLS requests(closes #29419)

3 years ago[liveleak] Remove extractor (closes #17625, closes #24222) (#29331)
Aleri Kaisattera [Sun, 20 Jun 2021 21:23:50 +0000 (03:23 +0600)]
[liveleak] Remove extractor (closes #17625, closes #24222) (#29331)

3 years ago[pornhub] Add support for pornhubthbh7ap3u.onion
Sergey M․ [Sun, 20 Jun 2021 21:08:15 +0000 (04:08 +0700)]
[pornhub] Add support for pornhubthbh7ap3u.onion

3 years ago[pornhub] Detect geo restriction
Sergey M․ [Sun, 20 Jun 2021 20:33:43 +0000 (03:33 +0700)]
[pornhub] Detect geo restriction

3 years ago[pornhub] Dismiss tbr extracted from download URLs (closes #28927)
Sergey M․ [Sun, 20 Jun 2021 20:22:37 +0000 (03:22 +0700)]
[pornhub] Dismiss tbr extracted from download URLs (closes #28927)

No longer reliable

3 years ago[curiositystream:collection] Extend _VALID_URL (closes #26326, closes #29117)
Sergey M․ [Sun, 20 Jun 2021 18:54:52 +0000 (01:54 +0700)]
[curiositystream:collection] Extend _VALID_URL (closes #26326, closes #29117)

3 years ago[youtube] Make get_video_info processing more robust (closes #29333)
Sergey M․ [Sun, 20 Jun 2021 18:35:21 +0000 (01:35 +0700)]
[youtube] Make get_video_info processing more robust (closes #29333)

3 years ago[youtube] Workaround for get_video_info request (refs #29333)
Sergey M․ [Sun, 20 Jun 2021 18:34:27 +0000 (01:34 +0700)]
[youtube] Workaround for get_video_info request (refs #29333)

See https://github.com/ytdl-org/youtube-dl/issues/29333#issuecomment-864049544

3 years ago[bilibili] Strip uploader name (#29202)
Tianyi Shi [Sun, 20 Jun 2021 18:03:21 +0000 (19:03 +0100)]
[bilibili] Strip uploader name (#29202)

3 years ago[youtube] Update invidious instance list (#29281)
bopol [Sun, 20 Jun 2021 17:42:09 +0000 (19:42 +0200)]
[youtube] Update invidious instance list (#29281)

3 years ago[umg:de] Update GraphQL API URL (#29304)
Logan B [Sun, 20 Jun 2021 17:41:14 +0000 (05:41 +1200)]
[umg:de] Update GraphQL API URL (#29304)

Previous one no longer resolves

Co-authored-by: Sergey M. <dstftw@gmail.com>
3 years ago[nrk] Switch psapi URL to https (closes #29344)
Sergey M․ [Sun, 20 Jun 2021 17:36:28 +0000 (00:36 +0700)]
[nrk] Switch psapi URL to https (closes #29344)

Catalog calls no longer work via http

3 years ago[postprocessor/ffmpeg] Show ffmpeg output on error (refs #22680) (#29336)
kikuyan [Sun, 20 Jun 2021 16:58:19 +0000 (01:58 +0900)]
[postprocessor/ffmpeg] Show ffmpeg output on error (refs #22680) (#29336)

3 years ago[egghead] Add support for app.egghead.io (closes #28404) (#29303)
kikuyan [Thu, 17 Jun 2021 03:34:33 +0000 (12:34 +0900)]
[egghead] Add support for app.egghead.io (closes #28404) (#29303)

Co-authored-by: Sergey M. <dstftw@gmail.com>