Commit Graph

555 Commits

Author SHA1 Message Date
simon 6a7a84792e
better feedback when skipping not yet existing index backup 2022-11-20 12:21:25 +07:00
simon 8f5311ff04
delete comments when deleting channel 2022-11-18 11:33:06 +07:00
simon e590d456a1
delete comments when deleting video 2022-11-18 10:47:48 +07:00
simon a5be5a719b
reindex comments 2022-11-18 10:31:09 +07:00
simon 31c967cc11
fix linter 2022-11-18 09:46:33 +07:00
simon 2818bd5d52
add comments to video template if available 2022-11-18 09:44:20 +07:00
simon 939cd7fb62
index comments as a DownloadPostProcess 2022-11-18 09:22:58 +07:00
simon 172ced7129
configure comments extraction 2022-11-18 08:59:04 +07:00
simon 79d134cea8
clean format comments date string 2022-11-14 11:59:59 +07:00
simon f6b6185fb2
rename ta_comment index, implement get comments from es 2022-11-12 12:40:14 +07:00
simon 5b7e3e877b
implement basic comment archive 2022-11-12 11:48:48 +07:00
simon 0f191d8a3e
configure fuzziness in search 2022-11-02 11:59:31 +07:00
simon dcf317e471
form validate channel pagesize greater than 0, #334 2022-11-02 10:30:21 +07:00
simon 749261c146
take snapshot at 12 localtime 2022-11-02 10:17:27 +07:00
simon 74aa134971
fix next_exec epoch time builder 2022-10-29 17:43:14 +07:00
simon 24b02150a7
handle delete, restore snapshot return values 2022-10-29 17:27:04 +07:00
simon f717c71c66
implement _parse_single_snapshot, slug compatible naming 2022-10-29 16:54:16 +07:00
simon 1fbd603374
frontend implementation for snapshot integration 2022-10-29 15:49:47 +07:00
simon 749f61aba6
fix empty policy building 2022-10-29 15:32:08 +07:00
simon 59f347c135
implement snapshot startup check 2022-10-28 16:47:50 +07:00
simon 904f449d37
combine snapshot_stats for frontend 2022-10-27 18:40:27 +07:00
simon e7f960bf46
implement basics snapshot management 2022-10-26 23:17:55 +07:00
simon 725f17bcd2
fix playlist missing channel metadata 2022-10-25 11:13:14 +07:00
simon f0874b2d02
add timeout for sponsorblock api requests, handle 503 2022-10-23 12:46:10 +07:00
simon baacd3ee39
better message for running and indexing queue 2022-10-23 12:21:27 +07:00
simon 9cd23c3666
error handeling for playlist_thumbnail extraction 2022-10-23 11:50:26 +07:00
simon 0bba36cbc3
add watched_date for _update_by_query mark as watched, #309 2022-10-22 22:00:35 +07:00
simon dea2688b49
handle UnidentifiedImageError in ThumbManager, #325 2022-10-17 19:26:01 +07:00
simon bd7cdb3942
append query parameters to pagination 2022-10-17 18:40:20 +07:00
simon 6eee762d3a
add status for sub refresh 2022-10-14 11:27:27 +07:00
simon a8c5773f81
fix is_live status check before adding to queue 2022-10-05 16:12:58 +02:00
simon f28c47323f
cleanup channel info.json file after import 2022-09-19 15:10:41 +07:00
simon b25818dbc3
extend timeout, add retry to YtWrap 2022-09-17 10:31:51 +07:00
simon f2a8b070f2
add log output for add to queue 2022-09-17 10:30:27 +07:00
simon dfacc3039a
fix reindex task, skip inactive in _get_unrated_vids 2022-09-14 16:43:48 +07:00
simon 1c3febc49d
force create thumb folder for manual import 2022-09-06 23:13:29 +07:00
simon a6dd927860
fix channel extraction to catch all alerts, #312 2022-09-06 23:12:49 +07:00
simon 3c92de8e24
improved logging for manual import 2022-09-06 22:42:55 +07:00
simon e51a662da9
fix manual import splitext matching invalid extensions, #311 2022-09-06 22:27:18 +07:00
simon e467beb1c7
fix manual import cleanup metadata, #331 2022-08-26 17:07:55 +07:00
simon 1b22e61384
New search API endpoint, #build
Changed:
- Switched search form to API
- Additional validations for RYD
- Additional log output for curl ES startup check
2022-08-19 18:00:35 +07:00
PrivateGER 57a9fff82b
Add API endpoint for searching (#303)
* Add API endpoint for searching + use it in frontend

* Fix linting warnings

* Remove multisearch API call

* Avoid 301 and fix up multiline comment
2022-08-19 17:52:37 +07:00
simon 1896e982b9
codespell lint fixes 2022-08-18 18:51:11 +07:00
simon 0e7e0a0560
fail open on ryd error 2022-08-18 18:45:46 +07:00
simon 0210a97b48
archive vtt files for offline import 2022-08-16 15:42:54 +07:00
simon 0b41d288db
fix mkv cover stream extractor 2022-08-16 12:19:27 +07:00
simon 21f3ee88b9
extract vtt from mkv and mp4 for import 2022-08-15 15:18:38 +07:00
simon 7727f533ee
move subtitle to separate module 2022-08-15 13:55:24 +07:00
simon bd4710ebdc
improved wording for download form, subscription size, #300 2022-08-13 15:43:23 +07:00
simon 6afe25a4af
fix empty subtitle download and index, #288 2022-08-12 15:53:20 +07:00
simon cc40f46325
improved ryd error handeling, #283 2022-08-12 14:39:22 +07:00
simon 7c3bfa94f3
handle thumbnail download base exception, #281 2022-08-12 12:58:39 +07:00
simon 474ab22792
handle channel name redirect in UrlListParser, #276 2022-08-12 11:53:31 +07:00
simon 0891c49620
implement offline channel import 2022-08-11 19:57:00 +07:00
simon c26ef012c1
raise ValueError when not matching media files 2022-08-11 11:10:58 +07:00
simon 31061c0eb0
handle offline import without info.json fail 2022-08-10 22:38:17 +07:00
simon 994f7c2443
use user provided thumb for offline import 2022-08-10 22:31:15 +07:00
simon 7029441f89
use fallback thumb when no url passed 2022-08-10 22:24:02 +07:00
simon 35f1084cc2
download thumbnail for manual import 2022-08-10 21:47:26 +07:00
simon 44473a364f
fix double download of playlist art 2022-08-10 21:20:58 +07:00
simon fb4d6b7be3
major refactor ThumbManager 2022-08-10 21:03:54 +07:00
simon b76fa69396
WIP: rewrite ManualImport, identify and archive 2022-08-08 19:18:27 +07:00
simon 8f711d359b
implement youtube_meta and media_path overwritein YoutubeVideo 2022-08-08 18:28:32 +07:00
simon 9fd6f9c58b
use absolute paths for manual import 2022-08-08 15:57:42 +07:00
simon b70cbfa0a8
convert thumbnail to jpg for manual import 2022-08-08 14:52:33 +07:00
simon 195acd3246
WPI: dump thumbnails from mp4 and mkv 2022-07-31 00:02:09 +07:00
simon 61da0c8af3 WIP: extract thumb from mkv 2022-07-30 21:07:31 +07:00
simon 26cc7846c6
WIP: new import folder parser for offline import 2022-07-26 19:51:47 +07:00
simon 4b1ebf44c9
handle filenotfounderror for manual cookie import 2022-07-21 23:01:32 +07:00
simon eb229440d4
load config into redis on fresh install at startup 2022-07-21 23:01:01 +07:00
simon 0ec6558282
jump to timestamp from full search 2022-07-21 17:15:36 +07:00
simon 55a73995c8
implement source and lang keywords for full text search 2022-07-21 15:39:27 +07:00
simon e4dd47aed0
implement fulltext search keyword 2022-07-20 21:49:32 +07:00
simon eb5a7338ab
search with and operator, increase result size 2022-07-20 18:25:39 +07:00
simon b520a9bfb0
boost title result scores in multi_match 2022-07-20 16:20:23 +07:00
simon 242ca19586
return query_type from SearchParser 2022-07-20 16:10:57 +07:00
simon 6a6665bdf9
implement simple, aka none keyword query 2022-07-20 15:04:10 +07:00
simon 8e8c00af40
implement playlist keyword search, fix channel subscribed keyword 2022-07-20 14:58:04 +07:00
simon ae3cf7eb80
add channel keyword search 2022-07-20 14:48:41 +07:00
simon 0a2b6ee90a
add keyword search framework, implement video search 2022-07-19 19:23:59 +07:00
simon cc2fff8bef
use info_dict for message, simplify cache template, #271 2022-07-18 11:37:43 +07:00
simon b406250ae2
use shutil.copyfile for shutil.move calls 2022-07-17 07:47:27 +07:00
simon 393e00866b
Desc preview, nginx fix, #build
Changed:
- Requires new env var: TA_HOST, hostname of your application
- Showing preview for description text, by @p0358
- Fix nginx user permission, by @p0358
- Refactor IndexPaginate to take loop callback
- Fix backup for large index using loop callback
- Fix deactivating missing channels on reindex
2022-07-16 22:11:29 +07:00
p0358 79996f6838
Fix permission/mount issues from #268 (#270)
* make nginx run as root within the container (#268)

* move file to videos path with fallback to regular copy with no metadata copying (#268)

* use `copy_function=shutil.copy` everywhere with `shutil.move`
2022-07-16 21:54:39 +07:00
simon 6bb7f80ea2
Refactor IndexPaginate
- add callback function
- implement callback for ElasticBackup
2022-07-16 17:55:18 +07:00
simon 91bccfd057
deactivate non existing channels on reindex 2022-07-12 11:41:03 +07:00
simon 8cca09e0ac
remove ta_json backup file, keep only es_ndjson 2022-07-07 12:34:57 +07:00
simon 8c07932071
delete cookie:valid key when revoking 2022-06-23 19:21:13 +07:00
simon 74d74d95a1
store validation result, return in API 2022-06-23 06:48:55 +07:00
simon 499c47c7a1
move set_cookie to separate method for reusabliity 2022-06-21 08:01:33 +07:00
simon 2cf30e1127
refactor: default set_message in RedisArchivist to True 2022-06-16 10:37:46 +07:00
simon 30abbe9be7
rewrite cookie into redis from io stream, auto validate 2022-06-15 17:54:05 +07:00
simon 2ceb1b701a
consolidate config of cookie revoke 2022-06-15 15:39:24 +07:00
simon 2ad093a9a8
handle cookiejar.LoadError dont import invalid cookie 2022-06-15 10:39:48 +07:00
simon 09a94d0df5
set relative values directly with path arg 2022-06-15 10:27:29 +07:00
lamusmaser bbb16bb3c2
Update TaskAPIView with GET - #257 PR (#258)
* Initial commit for GET response for TaskAPIView.

* Update for missing space - linting issue.

* Additional linting fixes.

* add is_locked method to check if lock is set

* Update to use `.is_locked` method and add decorator.

* Fix linting issue.

* Fix doubled "rescan" call for locked file.
Removed call to ".owned()" under "is_locked".

* Commenting out GET call in TaskAPI view to revert change for testing.

* Commenting is_locked function to see if Server Response 500 is stopped.

* Reassert is_locked function within RedisArchivist class.

* Create test GET responder.

* Reverting simple GET response change.

* Reapplying simple GET response for `/api/task/`.

* Reapplying change with modification to lock key.

* Documentation update for new GET calls.

* README: fix returned value as `bool` instead of `str`.

* Updating the `is_locked` key reference to "rescan" and "downloading" to fix which key is being retrieved.

* Use dictionary keys, rather than line-by-line statements.

* Fix typo in README for Task View.

Co-authored-by: simon <simobilleter@gmail.com>
2022-06-15 09:15:59 +07:00
simon c41f0a7cc4
try to LOAD_TRUNCATED_IMAGES, #256 2022-06-01 09:04:55 +07:00
simon 5d262d7d48
skip cookie if no config added to YtWrap 2022-05-30 18:22:17 +07:00
simon 231ac1e012
make channel matching optional for reusability 2022-05-30 17:59:52 +07:00
simon bbb0c26498
fix subtitle delete overwrite, change filename to .lang.vtt, #195 2022-05-29 11:43:25 +07:00
simon 9f92bf95b4
mark video as downloaded false when deleting video 2022-05-28 21:23:56 +07:00
simon e638f8b487
skip subtitle segment without segs key, #249 2022-05-28 17:47:21 +07:00
simon caaed252f9
specify videos page for get_last_youtube_videos of channel 2022-05-28 14:34:01 +07:00
simon 5982932457
implement variable grid row size 2022-05-28 13:57:29 +07:00
simon 9a31243b1c
log message when skipping video 2022-05-28 11:11:09 +07:00
simon 88e526f5e5
refactor new YtWrap class for yt-dlp calls, #build
Changed:
- new yt-dlp base class
- new cookie class using io_stream
- MetadataFromField postprocessors
2022-05-25 16:15:38 +07:00
Clark 730ac15349
Fix #241 Use title/uploader for embedded metadata not Content ID (#252) 2022-05-25 16:13:25 +07:00
simon 0ac9243389
remove unused monitor_cache_dir method 2022-05-24 15:54:41 +07:00
simon c39f8a9cb8
refactor use cookie io_stream 2022-05-24 15:51:58 +07:00
simon 9dd1e9a29f
extract playlists with new YtBase class 2022-05-24 10:44:18 +07:00
simon 3f5104d6d8
integrate new YtWrap class in download queue and subscriptions classes 2022-05-24 10:36:39 +07:00
simon 4b00f454b7
integrate new YtWrap class in yt_dlp handler 2022-05-24 10:19:02 +07:00
simon 33f27f018f
handle download error 2022-05-24 10:18:33 +07:00
simon a7d9b4584b
implement new YtBase class for index classes 2022-05-24 10:01:30 +07:00
simon 4e699621a0
obs base and handle extract error 2022-05-24 10:00:40 +07:00
simon 37e6f8656a
yt-dlp base class 2022-05-24 08:53:05 +07:00
simon 3722f11a65
cleanup cookie file after task 2022-05-07 09:34:51 +07:00
simon 087043811f
avoid unneeded cookie open 2022-05-07 09:34:33 +07:00
simon 94fa191fb8
skip premium videos, clean exit for empty bulk_list, #237 2022-05-05 23:38:10 +07:00
simon 9a2b29c2ae
implement channle name change in reindex, #211 2022-05-05 22:59:56 +07:00
simon 7a51368955
fix skip deleting none existing subtitles, add update_media_url 2022-05-05 22:56:22 +07:00
simon 7fa0d0f331
untangle delete subtitles from delete media file, #195 2022-05-05 09:11:37 +07:00
simon 1613b71942
hide cookie after rescan and download process 2022-05-03 17:32:32 +07:00
simon 83beb53860
simplify _add_single to call update_status in PendingInteract directly 2022-05-02 21:38:03 +07:00
simon 8a4c50779a
standardize prints for PostData mapper 2022-05-02 18:39:54 +07:00
simon ca5b00a373
refresh for PendingInteract delete to avoid race condition, #217 2022-05-02 18:20:56 +07:00
simon 34a1fe9e8e
fix thumb re-embed task, #231 2022-05-02 17:38:20 +07:00
simon 34c18e75f5
add LL and WL as valid playlists with cookie 2022-05-02 11:30:38 +07:00
simon 6fbac12314
fix channel_validate in PlaylistSubscription, #223 2022-05-02 11:27:50 +07:00
simon ca3ea20283
add socket_timeout when passing check_formats to yt-dlp 2022-05-02 09:48:52 +07:00
simon bc7d90f1f4
raise FileNotFoundError when trying to use unavailable cookie 2022-04-30 19:09:19 +07:00
simon 3a21690309
implement post_process_updated for settings, import cookie 2022-04-30 18:35:04 +07:00
simon 487c81d50b
fix FileNotFoundError in cookie hide 2022-04-30 18:34:28 +07:00
simon 088e87bccf
add cookiefile to PendingList and VideoDownloader 2022-04-30 17:27:57 +07:00
simon 6cc5fd8890
add cookiefile to yt_obs in YouTubeItem baseclass 2022-04-30 16:40:36 +07:00
simon 4e3d71e0e3
simplify, un-userspaced 2022-04-30 16:38:23 +07:00
simon 9b107b9940
implement cookie validator 2022-04-30 13:05:01 +07:00
simon 43eec5aac0
move CookieHandler to separate module 2022-04-30 12:05:41 +07:00
simon 430fdb6f1c
add cookie import to frontend 2022-04-29 18:38:43 +07:00
simon 1fa26cdc44
added basic cookie import functionality 2022-04-23 21:59:59 +07:00
simon 04fc6ed26a
API: add pagination 2022-04-20 22:43:07 +07:00
simon 3147df20da
skip subtitle segments without duration, take 2 2022-04-18 11:52:13 +07:00
simon 50f4e0e5b7
skip base64 generator, hotfix 2022-04-16 13:08:32 +07:00
simon 59f1c111aa
extend timeout for sleep interval 2022-04-16 08:58:35 +07:00
simon fe610fdaca
add log output for backup progress 2022-04-15 20:41:38 +07:00
simon c84fbdfb9c
fix _check_get_sb for per channel deactivate 2022-04-15 20:04:01 +07:00
simon 7231b5d245
implement unset of sb per channel overwrite 2022-04-15 20:03:15 +07:00
Ainsey11 dc29c6718c
Fix: #210 - Download UI Box being removed when file is still processing (#219)
* Fix: https://github.com/bbilly1/tubearchivist/issues/210 - Download UI element is removed when the file has finished downloading, but is still being moved on disk to the storage destination. This means the user is presented with nothing in the UI yet the file is still being processed.

* FIX: Resolving linting issue

* FIX: Set moving message to never expire and then a second message after the move with a 4 second expiry timer.

Co-authored-by: Rob Ainsworth <roba@immjsystems.com>
2022-04-15 15:21:24 +07:00
simon d4b1d97f5c
add mappings for sponsorblock segments 2022-04-15 15:16:31 +07:00
simon f71644c8bc
guarantee stats in mapping for sort 2022-04-15 15:03:43 +07:00
simon 4853a8b12b
limit video_daily to below 10k in daily refresh 2022-04-14 16:18:08 +07:00
simon fd00369859
fix last page pagination link building error, #221 2022-04-14 16:04:21 +07:00
simon a8a7edb93e
skip subtilte events without duration, #196 2022-04-14 15:53:10 +07:00
simon 3007e02fe5
fix per channel sb integration 2022-04-13 15:53:00 +07:00
simon 8edde732b6
improved sponsorblock key with additional metadata 2022-04-12 17:47:13 +07:00
simon 3df1df8b5a
set explicit mappings for sponsorblock key 2022-04-12 17:45:06 +07:00
simon 31378ac756
better generic schedule validator for impossible input, #209 2022-04-10 15:58:11 +07:00
simon 9d73dbc45a
implement video overwrites index for sponsorblock 2022-04-08 17:19:25 +07:00
simon 365ebf53a5
implement per channel sponsorblock 2022-04-08 17:17:39 +07:00
simon fe3e3cfacc
fix filenotfounderror for missing subtitles when deleting video 2022-04-08 15:56:34 +07:00
simon a07d789e66
add base64 blur video thumb 2022-04-08 00:29:09 +07:00
simon 6a1cb15114
validate hours to not be greater than 23, #209 2022-04-07 23:02:07 +07:00
simon b1a7a6a148
use cleaned_data for config form parser 2022-04-07 22:30:20 +07:00
simon 03dd25cff4
implement vote on sponsorblock segments api 2022-04-05 22:25:40 +07:00
simon bace7d41af
add random string generator helper function 2022-04-05 21:51:10 +07:00
simon 738b083a7f
create dedicated SponsorBlock class to handle integration 2022-04-05 21:50:40 +07:00
simon a8b62e5cdc better error message on sponsorblock fail 2022-04-04 23:28:32 +07:00
simon 730d12212f implement basic sponsblock indexing, #119 2022-04-04 23:28:32 +07:00
simon cdc617c382
add datestr generator 2022-03-29 16:47:21 +07:00
simon f15bb50cfe
fix playlist reindex after PendingList refactor 2022-03-26 18:31:00 +07:00
simon fcadb5ead8
add random headers for requests outside of yt-dlp 2022-03-26 11:49:53 +07:00
simon a0ed88580f
fix index validate_mappings for new nested object 2022-03-26 10:52:57 +07:00
simon 8d1d09e698
extend IndexPaginate to optionally return _source key 2022-03-23 17:17:42 +07:00
simon fb4c11bd38
refactor ElasticIndex and ElasticBackup to use ElasticWrap and IndexPaginate 2022-03-23 17:17:17 +07:00
simon bfcc538ed1
fix concurrency issue with subtitle indexing 2022-03-23 16:20:33 +07:00
simon 912c19f6cf
use ElasticWrap in FilesystemScanner 2022-03-23 15:56:53 +07:00
simon fda520ad44
refactor and consolidate Reindex class 2022-03-23 15:48:38 +07:00
simon 1f7d6871cf
use ElasticWrap to delete item from pending 2022-03-23 11:09:21 +07:00
simon 5b1c9c64de
cleanup, use ElasticWrap 2022-03-23 09:44:31 +07:00
simon 9f5c9b17a5
refactor redis connection, fix sync_redis_state task setup issue 2022-03-22 17:50:54 +07:00
simon 75cd9d382d
fix duration builder on reindex by ignoring vtt files 2022-03-22 12:59:39 +07:00
simon 1f1dfcb54f
better playlist scan message, private methods in YoutubeChannel class 2022-03-22 10:07:33 +07:00
simon 3d451e47e5
full playlist refresh and index for channel overwrites 2022-03-22 09:42:41 +07:00
simon 91a9477bba
refactor index_channel_playlists task, move to YoutubeChannel class 2022-03-21 17:59:21 +07:00
simon fc311a7b7e
refactor validate_playlists and move into DownloadPostProcess class 2022-03-21 11:14:44 +07:00
simon f803c5298b
fix missing update_status method call in ignore video 2022-03-21 11:09:16 +07:00
simon 7c6041d686
refactor VideoDownloader and implement per channel delete older than 2022-03-19 17:37:28 +07:00
simon 1411262793
remember channel overwrites on rescan, remove unused rescape_all_channels method 2022-03-19 15:12:29 +07:00
simon 9fd7e2b11a
rename channel_overwrites attribute 2022-03-19 15:03:38 +07:00
simon 3ba6e0478d
fix filesysem rescan function 2022-03-19 14:36:46 +07:00
simon b68a00073f
fix thumbnail validation with new PendingList class 2022-03-19 14:27:37 +07:00
simon 89428297c9
add download format channel overwrite per video 2022-03-18 22:22:41 +07:00
simon ac9df4e082
map channel overwrite to video id for later efficient mapping 2022-03-18 21:39:33 +07:00
simon a6937db5fd
use the refactored PendingList class 2022-03-18 18:27:25 +07:00
simon 05b8dbc02f
refacor PendingList class into subclasses 2022-03-18 17:19:21 +07:00
simon 1498fadf27
implement channel playlist index overwrite 2022-03-16 12:32:42 +07:00
simon f0e82caebb
add bool true to channel overwrite form parser 2022-03-16 12:32:02 +07:00
simon 2ef8823c2d
better channel overwrite update form 2022-03-16 12:09:50 +07:00
simon 544d842a4a
rename channel format overwrite field 2022-03-15 17:45:15 +07:00
simon 774220ab1f
add channel overwrite form to frontend, store in es 2022-03-15 12:00:48 +07:00