kay.one
3520b56bb6
Update logs are now in the UI
13 years ago
Mark McDowall
cc40b7d2f3
UpdateInfo and DiskScan jobs will process in Alphabetical order (ignoring articles).
13 years ago
kay.one
54e5874770
Update client is now moved rather than copied.
13 years ago
kay.one
ceda9312c7
Added one last update notification
13 years ago
kay.one
0a70c836df
Cleaned up progress notification.
13 years ago
kay.one
508be34ebc
Update fixes.
13 years ago
kay.one
6778a6ed99
Moved duplicated NormalizePath method to PathExtentions
13 years ago
Mark McDowall
b36dc4ab86
Refactored SearchProvider and corresponding unit tests.
13 years ago
Mark McDowall
be423663d7
Merge branch 'kay.one' of github.com:NzbDrone/NzbDrone into markus
13 years ago
Mark McDowall
30e21ecd16
Searching will be more picky now to ensure the proper series and season (and episode if relevant)
13 years ago
kay.one
04d40575da
Cleaned up JobProviderFixture, should save ~20 seconds in build time.
13 years ago
Mark McDowall
067d735448
Set Newznab searching limit to 100 items, RSS queries will use the default (set per site, I think).
13 years ago
Mark McDowall
5ad11ba728
Fixed adding of Newznab provider.
13 years ago
Mark McDowall
d5a602c4eb
Merge branch 'kay.one' of github.com:NzbDrone/NzbDrone into markus
13 years ago
kay.one
fbf7d20c5d
Fixed update client path issue
13 years ago
kay.one
6369d4f817
Update updates ;)
13 years ago
kay.one
88f4d15fa9
Added some update tests
13 years ago
kay.one
56a6e1372d
Update client is now included in the build package
13 years ago
Mark McDowall
639480e3ef
Merge branch 'kay.one' of github.com:NzbDrone/NzbDrone into markus
13 years ago
Mark McDowall
6c86f1dfdd
Newznab providers can be configured by the end user.
13 years ago
kay.one
72d0fc50ed
Alot of refactoring.
13 years ago
kay.one
2e94e322f4
Path calculations are now done using extension methods.
13 years ago
kay.one
1270e464b3
More autoupdate code.
13 years ago
Mark McDowall
95cdc4b78c
Moved FreeDiskSpace to DiskProvider.
13 years ago
Mark McDowall
80d7d38c7b
Merge branch 'kay.one' of github.com:NzbDrone/NzbDrone into markus
...
Conflicts:
NzbDrone.Core/Providers/ExternalNotification/Prowl.cs
NzbDrone.Core/Providers/ProwlProvider.cs
13 years ago
kay.one
12c2f7193f
Better fix for Prowl logging issues.
13 years ago
Mark McDowall
1cf17cfc11
Fixed Prowl ExternalNotifcation.
13 years ago
Mark McDowall
bbd5cba272
Merge branch 'kay.one' of github.com:NzbDrone/NzbDrone into markus
...
Fixed CentalDispatch Conflicts.
13 years ago
kay.one
ca7deedfb9
CentralDispatch is no longer static.
13 years ago
kay.one
390dfbdee8
Fixed startup issue.
13 years ago
kay.one
07458529f6
JobProvider can reset itself.
...
cleaned up unit test logging
13 years ago
kay.one
82b6ec5ed4
Some test cleanup
13 years ago
kay.one
633f0b6197
PathProvider. visit us for all of your pathing needs.
13 years ago
Mark McDowall
277b873b39
Added Prowl notifications.
13 years ago
Mark McDowall
be64822f08
Added Growl Settings to GUI.
13 years ago
Mark McDowall
3fe1e80ccb
Added Growl (Not yet visible on the GUI).
13 years ago
Mark McDowall
dd7dcf4db8
Merge branch 'kay.one' of github.com:NzbDrone/NzbDrone into markus
13 years ago
kay.one
cd32a70179
Starting path clean up. (All paths should go through EnvironmentProvider)
13 years ago
Mark McDowall
d9bef59ec2
Twitter notifications working from end-to-end.
13 years ago
Mark McDowall
a2735d7716
Twatter has been added, Notifications cannot be saved (yet), nor will they send, but the framework for a user to setup Twitter (Authorize NzbDrone) is in place.
13 years ago
Mark McDowall
2c93a27962
Added SMTP settings editing to the UI.
...
Added testing of SMTP settings to the settings page.
Cleaned up some extraneous lines of JS and HTML.
13 years ago
Mark McDowall
9957aef811
Added SMTP as an ExternalNotifcation method.
13 years ago
kay.one
b3e4485d71
Post processor now deletes folders that are less than 40MB.
13 years ago
kay.one
3dd7b3d768
This should fix the bug where a folder was tried to be retagged with the same error.
13 years ago
kay.one
4ae268b8e5
lots of different things ;)
13 years ago
kay.one
6828f099bc
Removed all static state tracking from job provider.
13 years ago
kay.one
c23e736cc6
Cleaned up ConfigProvider. Added reflection based test for all properties in ConfigProvider.
13 years ago
kay.one
7563527eac
Reformated PostDownloadProvider.cs
13 years ago
kay.one
ec08436587
Refactored the shit out of PostDownloadProvider
13 years ago
kay.one
35e44284c0
Fixed broken test, drop folder prefix uses regex instead of prefix now.
13 years ago
Mark McDowall
bb5febaade
DiskScanProvider.Scan() will log a warning if the path doesn't exist.
13 years ago
Mark McDowall
0cce31cbc8
Merge branch 'kay.one' of github.com:NzbDrone/NzbDrone into markus
13 years ago
Mark McDowall
11e1deb5f7
PostDownloadProvider was treating successful downloads as ones with an error and incorrectly trying to rename them before processing.
13 years ago
kay.one
e4d90e2f92
Merge branch 'markus' into kay.one
13 years ago
Mark McDowall
72c555f250
Local series search will now search anywhere in the title, not just the beginning.
13 years ago
kay.one
651a63edea
Merge branch 'markus' into kay.one
...
Conflicts:
NzbDrone.Core.Test/ProviderTests/LogProviderTest.cs
13 years ago
kay.one
8f9946eb63
Added some update APIs to check for updates and download and extract the update package.
...
Todo: apply updated, UI.
13 years ago
Mark McDowall
f6e14b51f6
Merge branch 'kay.one' of github.com:NzbDrone/NzbDrone into markus
13 years ago
Mark McDowall
745d9d9355
TopSlider added for local series searching!
...
Should be easy to add others (would want to have it close other open ones, I think).
13 years ago
Keivan Beigi
ae1a32b874
Fixed an issue where GetEpisodesByParseResult would throw object reference when episode list was null
13 years ago
Mark McDowall
a3e5c90319
Cleanup generating paths for error scenarios.
13 years ago
Mark McDowall
e87cdbde44
Removed SharedLiveTemplates.xml.
...
Cleaned up PostDownloadProvider, added more tests.
13 years ago
Mark McDowall
66b4b094f9
Merge branch 'kay.one' of github.com:NzbDrone/NzbDrone into markus
...
Conflicts:
NzbDrone.Core.Test/EpisodeProviderTest.cs
NzbDrone.Core/Providers/PostDownloadProvider.cs
13 years ago
Mark McDowall
642707e46d
Fixed some issues with PostDownloadProvider.
...
Added tests for PostDownloadProvider.
13 years ago
Keivan Beigi
6af98f9e96
more better exception handling.
13 years ago
Mark McDowall
b3abcb6096
RootDirProvider.GetMostFreeRootDir() will calculate the find the RootDir with the most free space and return its path.
13 years ago
Mark McDowall
117cebe655
Found and fixed a bug in EpisodeProvider.GetEpisodesByParseResults, where it would incorrectly return all episodes for a season when a file was detected as a Full Season release.
13 years ago
Mark McDowall
8cac84b4ad
PostDownloadProvider broken down further.
...
Will try to reprocess _NzbDrone_ directories each pass, but will mark with an error when possible.
Attempt to process _UNPACK_ and _FAILED_ directories 30 minutes after first detected by NzbDrone (to give SAB time to unpack properly before processing).
13 years ago
Mark McDowall
04ed22db55
Moved core of PostDownloadScanJob to PostDownloadProvider.
13 years ago
Mark McDowall
5098ea3249
Added two new Episode Statuses - Unpacking and Failed.
...
Tests added to support new Statuses.
PostDownloadScanJob will update PostDownloadStatus for failed or unpacking.
ImportFile will set the PostDownloadStatus to Processed when added to the database.
13 years ago
Mark McDowall
c534d47b0a
Added InheritFolderPermissions to DiskProvider.
...
DiskScanProvider.MoveEpisode will now set the moved file to inherit the parent folder permissions.
13 years ago
Mark McDowall
f973c74c87
ConfigFileProvider will now add missing config values automatically, with a default value.
...
Added Handbrake and AtomicParsley wrappers for iPod video conversion.
13 years ago
Mark McDowall
33930534c2
Ignore Episode Zero when adding a new episode to the database, either via GetEpisodesByParseResult
...
or RefreshEpisodeInfo. With tests.
13 years ago
Mark McDowall
2cafedb1aa
UpcomingEpisodes will not show ignored episodes.
13 years ago
Mark McDowall
7db08a10ec
Next airing will not show ignored episodes.
13 years ago
Mark McDowall
ec6a0e6b7f
App_Data added to .gitignore
...
Added SetValue to ConfigFileProvider.
Added creating of default config file in ConfigFileProvider.
Added more ConfigFileProvider tests.
Added UI for Settings/System
13 years ago
Mark McDowall
f0f706b32c
ConfigFile for NzbDrone.exe is now stored under App_Data for NzbDrone.Web. - This will be to provide the users a way to edit Port and set whether they want their default browser to open on startup, all form the WebUI (and not be overwritten on upgrades).
13 years ago
Mark McDowall
79472964ed
DeleteInvalidEpisodes Deletes by TvDbId only, skipping any manually added episodes (TvDbEpisodeId is 0 or null)
13 years ago
Mark McDowall
30ffe79442
DeleteInvalidEpisodes with tests added to delete episodes that TheTvDb no longer has (previously bad data).
13 years ago
Mark McDowall
7ca59b92aa
Replace '&' with its XML encoded equivalent, before parsing XML.
...
Added test to check for proper XML parsing with illegal characters.
13 years ago
Mark McDowall
6736afbeab
Added NextAiring to Series (ResultColumn), which is used for Series/Index. Added tests and fixed broken tests after adding new property.
13 years ago
Mark McDowall
5f0a95b2b1
Fixed XBMC JSON requests.
13 years ago
Mark McDowall
4eea6b8c6b
Added fix for HttpProvider.PostCommand so it uses a valid URL.
13 years ago
Mark McDowall
b239e28898
Added additional logging to XBMC Provider, to trace failure to update library.
13 years ago
Mark McDowall
4604bbd821
Mark invalid series downloads with NzbDrone prefix.
...
Fixed broken tests.
13 years ago
Mark McDowall
8c06dde28a
Quality size sliders are implemented. Limits are calculated based on MB/Minute.
13 years ago
Mark McDowall
4b2427ade7
Report size is now verified to ensure it is under the MaxSize for that quality type, with tests.
13 years ago
Mark McDowall
e4f01ae0d4
Size is now parsed for each item in the feed.
...
QualityType added to database to allow saving of size limits.
Fluent now uses longs for multiplication, to ensure it doesn't overflow.
13 years ago
Mark McDowall
dfd0720872
Added BannerDownloadJob, it will run every 30 days.
...
New series will have their banner downloaded on import.
13 years ago
Mark McDowall
a56213047f
EpisodeSearch now gets the proper QualityProfile (broken after removing AttachSeries), tests updated.
13 years ago
Mark McDowall
1f2a1e3206
Season searching fallback to individual episodes will done in order from 1 to n.
13 years ago
Mark McDowall
179de93a6e
Removed AttachSeries for IEnumerable and using join instead, speed difference is negligible or in some cases faster .
13 years ago
Mark McDowall
8592ae4c88
AttachSeries is no longer used for single episodes, PetaPoco will get the series in a single call for us.
13 years ago
Mark McDowall
9fd2f9ec72
Fixed notification messages for Season searches.
13 years ago
Mark McDowall
0a65e85e21
EpisodesWithFiles now returns the full series object, instead of just the SeriesTitle (So we don't need to add junk to the Episode class)
13 years ago
Mark McDowall
421ba466a8
Merge branch 'master' of git://github.com/kayone/NzbDrone
13 years ago
Mark McDowall
0b586de226
Added misnamed provider, PLINQ speeds it up, but still to slow for use, paging helps, but isn't consistent.
...
A bunch of files changed removing System.Linq, thanks Resharper :(
13 years ago
kay.one
bab358398a
potential fix for "Execution lock has fucked up"
13 years ago
Mark McDowall
35cad3d27e
Added partial season searching when a full season NZB is not available.
13 years ago
Mark McDowall
fbb4ced77c
Full season searching for Nzbs.org and NzbMatrix will also look for S01 in addition to Season.
13 years ago
Mark McDowall
f02e92b005
Fixed EpisodeSorting examples layout.
...
Added Missing to main UI.
Add links to series from History and Missing.
Image for search link on Missing.
13 years ago
kay.one
9244a4e6ef
Update episode info now uses UpdateMany, InsertMany
13 years ago
Mark McDowall
2980c91f19
GetSabName will return cleaner Season naming when it is a FullSeason release.
13 years ago
Mark McDowall
f604c35768
Backlog search added (disabled) - It will search for a full season if a full season is missing.
13 years ago
Mark McDowall
273530eda2
SeriesSearchJob uses SeasonSearchJob to try to download seasons first.
13 years ago
Mark McDowall
485f618e02
Full Season searching added (Single NZB). SearchProvider added to perform both Season and Episode searching, triggered via jobs.
...
Tests added for season searching.
13 years ago
Mark McDowall
ac3c3386fc
Added delete and redownload commands to History Grid (redownload will delete the existing item from history and then start an episode search)
13 years ago
Mark McDowall
1d983801e8
SABnzbd settings will now dynamically get the categories available from SABnzbd when the category drop-box gets focus, it will use values on the page so there is no need to save your settings first.
13 years ago
Mark McDowall
d554e9ec83
Delete existing files on import if equal or better quality otherwise skip importing. If the folder is not deleted after processing it is renamed so it will not be processed repeatedly.
13 years ago
Mark McDowall
667fc5d69b
Merge branch 'master' of git://github.com/kayone/NzbDrone
13 years ago
kay.one
6bab9a34dd
Improved job thread execution locking log
13 years ago
Mark McDowall
fb9c2b6d9e
Fixed SceneMappingProvider to resolve an issue with series with multiple clean names failing to return a Scene Name when being looked up via SeriesId.
13 years ago
Mark McDowall
f6c9fa4f95
Added SeriesSearch and RenameSeries jobs.
...
Add UI controls for new jobs.
Skip ignored episodes when doing series/season searches.
13 years ago
Mark McDowall
66522b8109
Merge branch 'master' of git://github.com/kayone/NzbDrone
13 years ago
kay.one
1e9b279a9b
Removed basic notification. client side notification should be used.
13 years ago
Mark McDowall
350e0388de
Updated JobProvider to allow jobs with two targets.
...
JobQueueItem class created instead of using Tuples.
Added Search for Season and Rename Season jobs , plus links for them on Series/Details.
Add GetSeasonFiles added to MediaFileProvider.
13 years ago
kay.one
eaaf464d38
Merge branch 'markus101'
13 years ago
kay.one
2601c7c1b9
minor changes
13 years ago
Mark McDowall
13d947d24d
Merge branch 'master' of git://github.com/kayone/NzbDrone
13 years ago
kay.one
79b2fad6e3
Removing items from job queue is now done while a lock is acquired.
13 years ago
Mark McDowall
d85a8bc15d
If an unsorted episode that had a series that was not being watched it would prevent additional episodes from being processed.
13 years ago
Mark McDowall
412a3fc476
EpisodesWithoutFiles now skips ignored episodes, Tests updated.
13 years ago
Mark McDowall
4f68d07c9a
Fixed issue with missing episodes incorrectly using include specials.
...
Added tests for missing episodes.
13 years ago
Mark McDowall
45b4bb4629
Merge branch 'master' of git://github.com/kayone/NzbDrone
13 years ago
Mark McDowall
c88ead0585
Wired in the season and episode ignore saving.
...
Converted setSeasonIgnore & setEpisodeIgnore to use inline SQL.
Added tests for setSeasonIgnore & setEpisodeIgnore.
13 years ago
kay.one
9cb33770a0
Added Readme
13 years ago
Mark McDowall
559011ba82
SeriesPathExists compares paths in lower-case now.
...
GitHub Issue #9
14 years ago
Mark McDowall
e29fee9686
Merge branch 'master' of git://github.com/kayone/NzbDrone
14 years ago
Mark McDowall
ee4b6c9442
ExternalNotifications enabled (Xbmc only right now).
...
- Grab, Download, Rename
Notification Settings for Xbmc uses definitions.
14 years ago
kay.one
28b840766e
Merge branch 'markus101'
14 years ago
kay.one
b4fb3002a4
Updated Add Series
14 years ago
Mark McDowall
0ed898b6db
IsIgnored will now be checked when adding new episodes to the DB, it will:
...
- ignore new episodes of a season if that season was already ignored
- ignore new seasons if the previous was ignored
- ignore specials (when a new series is added), if a user chooses to download specials, all new specials will not be ignored
Added tests for IsIgnored and AddEpisode changes.
14 years ago
kay.one
68321c98d0
increased delete folder limit size to 10MB
14 years ago
kay.one
b11a449f65
Updated PetaPoco
...
Upped IIS's priority
Added Byte multiplier to extention method.
14 years ago
kay.one
d640fa65e8
Fixed orphaned job issue in JobController
...
System/Jobs now shows items currently in queue.
14 years ago
kay.one
77c82df482
Priority/JobProvider tweaks
14 years ago
kay.one
291e2c399e
Merge branch 'markus101'
14 years ago
kay.one
8d12630856
Newzbin now parses the language out properly.
...
Fetch episode filters episodes from wrong series
14 years ago
Mark McDowall
67299f0d97
Merge branch 'master' of git://github.com/kayone/NzbDrone
...
Conflicts:
NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
14 years ago
Mark McDowall
7ec499acab
Series with Episode count now ignores shows that haven't aired (includes ones that air today).
14 years ago
Mark McDowall
348ff5a386
XbmcProvider updated to include new Json API methods.
...
EventClient is used for sending CleanLibrary and Notifications (With NzbDrone Logo - Internal Resource).
Support for Dharma's HTTP Server (Deprecated), since Dharma doesn't support Json as well.
14 years ago
kay.one
6393d0a3f9
Added Tests for CentralDispatch
14 years ago
kay.one
b086414d75
some cleanup
14 years ago
kay.one
edf9d1d2cc
Initial quality is only setup if no other quality profiles exists.
14 years ago
kay.one
452b5c8f84
Renamed sorting config keys
14 years ago
kay.one
15aedfc847
some db/migration cleanup
14 years ago
kay.one
f0735c0693
minor tweaks
14 years ago
kay.one
fc0d7fc72f
Logging notification tweaks
14 years ago
kay.one
3dd8e7240e
Added GetDirectorySize to DiskProvider
...
Removed search folder from disk provider
14 years ago
kay.one
8b0c8afb81
PostDownloadScanJob will not fail completely if a single folder fails.
14 years ago
kay.one
2a64014c96
Added version to page footer, minor tweaks.
14 years ago
kay.one
cfd42049e5
minor cleanup
14 years ago
kay.one
c37544d4ce
Episode is now marked as grabbed on download
14 years ago
kay.one
f2b091dcd2
Fixed issue with nzbs.org search where title contained brackets
14 years ago
kay.one
861026f743
Fixed some petapoco issue with insert.
14 years ago
kay.one
5a4e8330b2
Updated petapoco to 4.0.3
14 years ago
kay.one
b8b4e507b9
Added more video extensions
14 years ago
kay.one
cd96d546e8
limited newzbin search to English only.
14 years ago
kay.one
555e62fd17
fixed some notification issues
14 years ago
kay.one
a1caa789fe
Instant progress notifications. Now use comet instead of pooling.
14 years ago
kay.one
07312780f1
ParseEpisodeInfo is now separated into ParseTitle and ParsePath
14 years ago
Mark McDowall
87e9589761
Remove empty folders after importing new downloads.
...
Fixed American Dad test (new season added to TheTvDb).
Removed unneeded .ToList()
14 years ago
kay.one
a9df506ef2
Downgraded to MiniProfiler 1.2
...
ConfigProvider now logs in Trace level rather than debug level
14 years ago
kay.one
54e81035fc
Merge branch 'markus101'
14 years ago
kay.one
df0637d3d1
CDN Updates. packaging updates
14 years ago
Mark McDowall
342406784a
Fixed seriesGrid query and tests.
...
Fixed GetEpisodeModels that would fail due to a null AirDate.
14 years ago
Mark McDowall
938fa24a8e
Merge branch 'master' of git://github.com/kayone/NzbDrone
14 years ago
kay.one
69239bc371
Switched to SQLCE 4.0
14 years ago
Mark McDowall
9f5b461274
MediaFileProvider delete fixed to delete EpisodeFile with key of Int32 instead of object Int32. Added test to ensure File is deleted, but others remain.
14 years ago
Mark McDowall
1057c5941a
Merge branch 'master' of git://github.com/kayone/NzbDrone
14 years ago
Mark McDowall
3a065b86f1
Fixed series grid after save so it has proper counts.
14 years ago
kay.one
5a5d0852ee
Updated some log levels
14 years ago
kay.one
13732a3f2e
Updated some log levels
14 years ago
kay.one
56fdf1a040
Removed Episodes list from EpisodeFile object.
14 years ago
Mark McDowall
351f73b520
Merge branch 'master' of git://github.com/kayone/NzbDrone
14 years ago
Mark McDowall
584a96a4f2
CalculateFilePath will use configured season folder, with tests.
...
MoveFile creates folder before move.
14 years ago
kay.one
3bafd2237f
Merge branch 'markus101'
14 years ago
kay.one
5fb2c61c77
Fixed sab title issue
...
Added profiling to OpenSharedconnection
14 years ago
Mark McDowall
a31858bb4c
Merge with Kayone.
14 years ago
Mark McDowall
8d4f65b7dc
History Items are now added with series. Test makes sure seriesId is sent in.
14 years ago
kay.one
f6ccb5e17c
Fixed broken build
14 years ago
kay.one
31c16b9004
Merge branch 'markus101'
14 years ago
kay.one
01163a4f87
Cleanup and tests around ImportFile
14 years ago
Mark McDowall
ecd0fb50a8
Removed extra injects that weren't needed.
...
Wrapped find series in try/catch to prevent a case where the series is in SceneMapping, but isn't in the users database. -Missed in last commit apparently.
14 years ago
Mark McDowall
cdf77ad2df
Changed QualityProfile to a ResultColumn to make note that it will be used as a result only.
...
Wrapped find series in try/catch to prevent a case where the series is in SceneMapping, but isn't in the users database.
14 years ago
kay.one
1ba74e0eea
Drop folder is now wired. needs more tests.
14 years ago
kay.one
5c45515b00
Merge branch 'markus101'
14 years ago
kay.one
63adb6b566
Wired-up drop folder move
14 years ago
Mark McDowall
68b7ba9209
Added method to delete orphaned episodeFiles and also cleanup episodes that have invalid episodeFiles.
...
Cleanup will run aforementioned methods before doing cleanup.
14 years ago
Mark McDowall
208feb7d19
CleanFileName when getting new filename from MediaFileProvider.
14 years ago
Mark McDowall
244e0f04f4
Fixed UnitTests (set EpisodeFileId to zero where no episo.de file is expected back)
14 years ago
Mark McDowall
d416ec0147
Merge branch 'master' of git://github.com/kayone/NzbDrone
...
Conflicts:
NzbDrone.Core.Test/SeriesProviderTest.cs
14 years ago
Mark McDowall
431d850d32
SeriesProvider gets QualityProfile in single call to DB.
...
SeriesProvider.GetAllSeriesWithEpisodeCount gets seasonCount(with or without specials), total episode count & episodeWithFile count (excluding ignored episodes).
Added tests for SeriesWithEpisodeCount.
14 years ago
kay.one
ef9bbdc60e
Removed leftover code from old ages ;)
14 years ago
kay.one
907c508a70
PetaPoco now defaults to SQLite, requires WHERE on exists calls
14 years ago
kay.one
852b1e9bb5
Merge branch 'markus101'
14 years ago
kay.one
45549fa50b
Fixed attach series issue and null episodes.
14 years ago
kay.one
8b7c624d09
Reformated some files
14 years ago
Mark McDowall
86ab26e2d9
UpcomingProvider now gets Series in call for episodes.
14 years ago
kay.one
63bd972af9
Refactored MediaFileProvider
14 years ago