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
pukkandan
7c37ff97d3
Allow alternate fields in outtmpl
...
Closes #899 , #1004
3 years ago
pukkandan
edf65256aa
[hls,aes] Fallback to native implementation for AES-CBC
...
and detect `Cryptodome` in addition to `Crypto`
Closes #935
Related: #938
3 years ago
pukkandan
f5aa5cfbff
Add format type `B` for outtmpl to treat the value as bytes
...
This is useful to limit the filename to a certain number of bytes rather than characters
Closes #1003
3 years ago
coletdjnz
a7e999beec
[pbs] Fix subtitle extraction ( #813 )
...
Original PR: https://github.com/ytdl-org/youtube-dl/pull/24430 , https://github.com/ytdl-org/youtube-dl/pull/17434
Closes : #836 , https://github.com/ytdl-org/youtube-dl/issues/18796 , https://github.com/ytdl-org/youtube-dl/issues/17273
Authored-by: coletdjnz, gesa, raphaeldore
3 years ago
Nil Admirari
7a340e0df3
Native SponsorBlock implementation and related improvements ( #360 )
...
SponsorBlock options:
* The fetched sponsor sections are written to infojson
* `--sponsorblock-remove` removes specified chapters from file
* `--sponsorblock-mark` marks the specified sponsor sections as chapters
* `--sponsorblock-chapter-title` to specify sponsor chapter template
* `--sponsorblock-api` to use a different API
Related improvements:
* Split `--embed-chapters` from `--embed-metadata`
* Add `--remove-chapters` to remove arbitrary chapters
* Add `--force-keyframes-at-cuts` for more accurate cuts when removing and splitting chapters
Deprecates all `--sponskrub` options
Authored by: nihil-admirari, pukkandan
3 years ago
animelover1984
abafce59a1
[Niconico] Add Search extractors ( #672 )
...
Authored by: animelover1984, pukkandan
3 years ago
coletdjnz
0bb1bc1b10
[youtube] Remove annotations and deprecate `--write-annotations` ( #765 )
...
Closes #692
Authored by: coletdjnz
3 years ago
pukkandan
4dfbf8696b
[utils] Add `parse_qs`
3 years ago
pukkandan
9e598870dd
Fix `playlist_index` not obeying `playlist_start`
...
and add tests
Closes #720
3 years ago
pukkandan
8f18aca871
Let `--match-filter` reject entries early
...
Makes redundant: `--match-title`, `--reject-title`, `--min-views`, `--max-views`
3 years ago
pukkandan
ad3dc496bb
Misc fixes - See desc
...
* Remove unnecessary uses of _list_from_options_callback
* Fix download tests - Bug from 6e84b21559
* Rename ExecAfterDownloadPP to ExecPP and refactor its tests
* Ensure _write_ytdl_file closes file handle on error - Potential fix for #517
3 years ago
pukkandan
e9f4ccd19e
Add option `--replace-in-metadata`
3 years ago
pukkandan
b868936cd6
[cleanup] Misc
3 years ago
pukkandan
243c57cfe8
[tests:download] Add batch testing for extractors
...
Use `test_YourExtractor_all` to invoke them
3 years ago
pukkandan
2b8a2973bd
Allow entire infodict to be printed using `%()s`
...
Makes `--dump-json` redundant
3 years ago
pukkandan
6e84b21559
Fix bugs related to `sanitize_info`
...
Related: 8012d892bd (r54555230)
3 years ago
pukkandan
a047eeb6d2
Add regex to `--match-filter`
...
This does not fully deprecate `--match-title`/`--reject-title`
since `--match-filter` is only checked after the extraction is complete,
while `--match-title` can often be checked from the flat playlist.
Fixes: https://github.com/ytdl-org/youtube-dl/issues/9092 , https://github.com/ytdl-org/youtube-dl/issues/23035
3 years ago
Max Teegen
77b87f0519
Add all format filtering operators also to `--match-filter`
...
PR: https://github.com/ytdl-org/youtube-dl/pull/27361
Authored by: max-te
3 years ago
pukkandan
0855702f3f
[test:download] Support testing with `ignore_no_formats_error`
3 years ago
pukkandan
e0f2b4b47d
[utils] Fix slicing of reversed `LazyList`
...
Closes #589
3 years ago
pukkandan
7d1eb38af1
Add format types `j`, `l`, `q` for outtmpl
...
Closes #345
3 years ago
pukkandan
901130bbcf
Expand and escape environment variables correctly in outtmpl
...
Fixes: https://www.reddit.com/r/youtubedl/comments/otfmq3/ytdlp_same_parameters_different_results
3 years ago
pukkandan
052e135029
[youtube] Simplify `_get_text` early
3 years ago
pukkandan
060ac76257
[test] Use `pytest` instead of `nosetests` ( #482 )
...
`nosetests` is no longer being maintained : https://github.com/nose-devs/nose/issues/1099
and will stop working in py 3.10 as can be seen in #480
3 years ago
Matt Broadway
982ee69a74
Add option `--cookies-from-browser` to load cookies from a browser ( #488 )
...
* also adds `--no-cookies-from-browser`
Original PR: https://github.com/ytdl-org/youtube-dl/pull/29201
Authored by: mbway
3 years ago
felix
c843e68588
[utils] Improve `js_to_json` comment regex
...
Capture the newline character as part of a single-line comment
From #497 , Authored by: fstirlitz
3 years ago
pukkandan
b5ac45b197
Fix selectors `all`, `mergeall` and add tests
...
Bug from: 981052c9c6
3 years ago
pukkandan
981052c9c6
Some minor fixes and refactoring (see desc)
...
* [utils] Fix issues with reversal
* check_formats should catch `DownloadError`, not `ExtractorError`
* Simplify format selectors with `LazyList` and `yield from`
3 years ago
pukkandan
9fea350f0d
Fix id sanitization in filenames
...
Closes #415
3 years ago
pukkandan
28419ca2c8
[utils] Improve `LazyList`
...
* Add `repr` and `str` that mimics `list`
* Add `reversed`. Unlike `[::-1]`, reversed does not exhaust the iterable and modifies the `LazyList` in-place
* Add tests
3 years ago
pukkandan
187986a857
Better error handling of syntax errors in `-f`
3 years ago
pukkandan
385a27fad1
Improve offset parsing in outtmpl
3 years ago
pukkandan
5c6542ce69
[test] More rigorous tests for `prepare_filename`
...
All tests of `prepare_outtmpl` is now also run on `prepare_filename`
3 years ago
pukkandan
639f1cea92
Fix `%d` and empty default in outtmpl
...
Closes #388
3 years ago
pukkandan
aa75e51f99
[build] Build Windows x86 version with py3.8
...
and remove redundant tests
:ci skip
Ao-authored by: pukkandan, shirt-dev
3 years ago
pukkandan
76a264ac9e
Make outtmpl more robust and catch errors early
3 years ago
pukkandan
87ea7dfc04
Fix filename sanitization
...
Bug from 752cda3880
3 years ago
pukkandan
752cda3880
Fix and refactor `prepare_outtmpl`
...
The following tests would have failed previously:
%(id)d %(id)r
%(ext)s-%(ext|def)d
%(width|)d
%(id)r %(height)r
%(formats.0)r
%s
3 years ago
pukkandan
9d83ad93d0
[cleanup] Mark unused files
3 years ago
felix
cc52de4356
[cleanup] Point all shebang to `python3` ( #372 )
...
Authored by: fstirlitz
3 years ago
pukkandan
bc6b9bcd65
[utils] Escape URLs in `sanitized_Request`, not `sanitize_url`
...
d2558234cf
added escaping of URLs while sanitizing. However, `sanitize_url` may not always receive an actual URL.
Eg: When using `yt-dlp "search query" --default-search ytsearch`, `search query` gets escaped to `search%20query` before being prefixed with `ytsearch:` which is not the intended behavior. So the escaping is moved to `sanitized_Request` instead.
3 years ago
pukkandan
337e0c62f8
[embedthumbnail] Correctly escape filename
...
Closes #352
The approach in [1] is faulty as can be seen in the test cases
1. bff857a8af
4 years ago
pukkandan
c77495e3a4
[cleanup] `_match_entry`
4 years ago
pukkandan
177877c544
[extractor] Always prefer native hls downloader by default
...
When the manifest is not downloadable by native downloader, it already is able to detect it and switch to `ffmpeg`. So there doesn't seem to be a reason anymore to use ffmpeg as the preferred downloader
4 years ago
Hubert Hirtz
5435dcf96e
Handle Basic Auth `user:pass` in URLs
...
Fixes https://github.com/ytdl-org/youtube-dl/issues/20258 , https://github.com/ytdl-org/youtube-dl/issues/26211
Authored by: hhirtz, pukkandan
4 years ago
pukkandan
af32f40bf5
[test] Fix `test_YoutubeDL.TestYoutubeDL`
...
Test `test_ignoreerrors_for_playlist_with_url_transparent_iterable_entries` was broken due to `__original_infodict` being added to the dict
4 years ago
pukkandan
da692b7920
[cleanup] youtube tests
4 years ago
pukkandan
6911e11edd
[test:download] Only extract enough videos for `playlist_mincount`
4 years ago
Felix S
5fbcebed8c
[test] Test SSTR manifest parsing
4 years ago
Felix S
becdc7f82c
[test] Test subtitle extraction from DASH manifests
4 years ago
Felix S
73b9088a1c
[test] Test subtitle extraction from HLS manifests
4 years ago
Felix S
a0c3b2d5cf
[extractor/common] Extract HLS subtitle tracks
...
_extract_m3u8_formats is renamed to _extract_m3u8_formats_and_subtitles
and extended to handle subtitle tracks instead of skipping them;
a wrapper with the old name is provided for compatibility.
_parse_m3u8_formats is likewise renamed and extended, but without adding
the compatibility wrapper; the test suite is adjusted to test the enhanced
method instead.
4 years ago
pukkandan
1bdae7d312
Update to ytdl-commit-7e8b3f9
...
[youtube] Remove unused code
7e8b3f9439
4 years ago
pukkandan
a439a3a45c
Improve output template (see desc)
...
* Objects can be traversed like `%(field.key1.key2)s`
* A number can be added to the field as `%(field+n)s`
* Deprecates `--autonumber-start`
4 years ago
pukkandan
a3faeb7de4
[MetadataFromField] Improve regex and add tests
4 years ago
pukkandan
c32b0aab8a
Improve --sub-langs (see desc)
...
* Treat `--sub-langs` entries as regex
* `all` can be used to refer to all the subtitles
* the language code can be prefixed with `-` to exclude it
* Deprecates `--all-subs`
Closes #253
4 years ago
pukkandan
a7191c6f57
Fix some linter and typos
4 years ago
colethedj
9e62f283ff
[utils] Add `datetime_from_str` to parse relative time ( #221 )
...
and `datetime_add_months` to accurately add/subtract months
Authored by: colethedj
4 years ago
pukkandan
84601bb72b
Ability to set a specific field in the file's metadata
...
Eg: `--parse-metadata "description:(?s)(?P<meta_comment>.+)"`
sets the "comment" field using `description`
4 years ago
pukkandan
cd7c66cf01
[youtube] Fix history, trending and mix playlists ( #136 )
...
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
Co-authored-by: Matthew <colethedj@protonmail.com>
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
shirt-dev
310c2ed2c6
Better support HLS media discontinuity and fully support media initialization ( #105 )
...
* Added options: `--hls-split-discontinuity` and `--no-hls-split-discontinuity`
Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>
4 years ago
pukkandan
bc2ca1bb75
Update to ytdl-commit-cf2dbec
...
cf2dbec630
Except: [kakao] improve info extraction and detect geo restriction
d8085580f6
4 years ago
pukkandan
cc2db87805
Update to ytdl-2021.02.10
...
Except: [archiveorg] Fix and improve extraction (5fc53690cbe6abb11941a3f4846b566a7472753e)
4 years ago
shirt-dev
3dd264bf42
#64 Implement self updater
...
Co-authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com> (shirt-dev)
Co-authored-by: pukkandan <pukkandan@gmail.com>
4 years ago
pukkandan
545cc85d11
[youtube] Update to ytdl-2021.02.04.1
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
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
Remita Amine
a820dc722e
Update to ytdl-2021.01.24.1
4 years ago
pukkandan
610d8e7692
[tests] Fix test_post_hooks
...
:skip ci all
4 years ago
alxnull
0c3d0f5177
Added `--force-overwrites` option ( https://github.com/ytdl-org/youtube-dl/pull/20405 )
...
Co-authored by alxnull
4 years ago
pukkandan
ebdd9275c3
Enable test_youtube_search_matching
...
I forgot to enable this when the search url extractor was reinstated
4 years ago
Alex Merkel
ab8e5e516f
Add post_hooks option to YoutubeDL.py ( https://github.com/ytdl-org/youtube-dl/pull/27573 )
...
Authored by: alexmerkel
4 years ago
pukkandan
00dd0cd573
Update to ytdl-2021.01.08
4 years ago
pukkandan
5d0c537141
Fix/disable tests
...
The disabled tests needs to be fixed later
Tests for FormatSort, Multistreams also needs be created
4 years ago
pukkandan
29f7c58aaf
Update to ytdl-2021.01.03
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
3d3dddc948
Update youtube extractor to 2020.11.24
4 years ago
pukkandan
a0566bbf5c
Updated to release 2020.11.21.1
4 years ago
pukkandan
3462ffa892
Implemented all Youtube Feeds (ytfav, ytwatchlater, ytsubs, ythistory, ytrec) and SearchURL
4 years ago
pukkandan
8bdd16b499
Merge 'ytdl-org/youtube-dl/master' release 2020.11.19
...
Old Extractors left behind:
VLivePlaylistIE
YoutubeSearchURLIE
YoutubeShowIE
YoutubeFavouritesIE
If removing old extractors, make corresponding changes in
docs/supportedsites.md
youtube_dlc/extractor/extractors.py
Not merged:
.github/ISSUE_TEMPLATE/1_broken_site.md
.github/ISSUE_TEMPLATE/2_site_support_request.md
.github/ISSUE_TEMPLATE/3_site_feature_request.md
.github/ISSUE_TEMPLATE/4_bug_report.md
.github/ISSUE_TEMPLATE/5_feature_request.md
test/test_all_urls.py
youtube_dlc/version.py
Changelog
4 years ago
Unknown
dd2d55f10d
COMPLAINFREE
4 years ago
Unknown
cdb7547e14
add pyinst to test exceptions
4 years ago
Unknown
39e7107d7f
Merge branch 'ytdl-org-master'
4 years ago
Tom-Oliver Heidel
9aa79d6460
Merge branch 'master' of https://github.com/zubearc/youtube-dl into zubearc
4 years ago
zubearc
8848f8083b
[test/youtube] update subtitle tests
4 years ago
Unknown
8ef153ee6f
rot47 capital letters.
4 years ago
Unknown
3867038a06
renaming issues resolved
4 years ago
Unknown
cefecac12c
[skip travis] renaming
...
to avoid using same folder when using pip install for example
4 years ago
Sergey M․
84213ea8d4
[youtube] Extract chapters from JSON ( closes #24819 )
4 years ago
Sergey M․
c380cc28c4
[utils] Improve cookie files support
...
+ Add support for UTF-8 in cookie files
* Skip malformed cookie file entries instead of crashing (invalid entry len, invalid expires at)
5 years ago
Sergey M․
e40c758c2a
[youtube] Improve player id extraction and add tests
5 years ago
Sergey M․
042b664933
Revert "[utils] Add support for cookies with spaces used instead of tabs"
...
According to [1] TABs must be used as separators between fields.
Files produces by some tools with spaces as separators are considered
malformed.
1. https://curl.haxx.se/docs/http-cookies.html
This reverts commit cff99c91d1
.
5 years ago
Sergey M․
cff99c91d1
[utils] Add support for cookies with spaces used instead of tabs
5 years ago
Sergey M․
ea17979d83
[test_subtitles] Remove obsolete test
5 years ago
Sergey M․
4e9e1e240d
[test_YoutubeDL] Add tests for #10591 ( closes #23873 )
5 years ago