forked from Outils-PeerTube/peertube-plugin-auto-import-ytb
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			testing
			...
			florent-pa
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| dea719e67c | 
| @@ -1 +0,0 @@ | ||||
| {} | ||||
							
								
								
									
										1
									
								
								.prettierts.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.prettierts.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| {} | ||||
							
								
								
									
										5
									
								
								.rsyncignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.rsyncignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| .* | ||||
| node_modules/ | ||||
| src/ | ||||
| package-lock.json | ||||
| tsconfig.json | ||||
| @@ -1,125 +0,0 @@ | ||||
| // import { ImplementableApi } from './implementableApi'; | ||||
| // Api request lib | ||||
| import fetch, { FetchError, Headers } from "node-fetch"; | ||||
| import { URL, URLSearchParams } from "url"; | ||||
| import FormData from "form-data"; | ||||
| // import dedent from "ts-dedent"; | ||||
|  | ||||
| namespace PeerTubeRequester { | ||||
|   export type Config = { | ||||
|     domain_name: string | URL; | ||||
|     username: string; | ||||
|     password: string; | ||||
|   }; | ||||
| } | ||||
|  | ||||
| type UploadInstruction = { | ||||
|   [key: string]: string; | ||||
|   channelId: string; | ||||
|   targetUrl: string; | ||||
| }; | ||||
|  | ||||
| type ClientToken = { | ||||
|   client_id: string; | ||||
|   client_secret: string; | ||||
|   grant_type: "password"; | ||||
|   response_type: "code"; | ||||
|   username: string; | ||||
|   password: string; | ||||
| }; | ||||
|  | ||||
| type UserToken = { | ||||
|   access_token: string; | ||||
|   token_type: string; | ||||
|   expires_in: string; | ||||
|   refresh_token: string; | ||||
| }; | ||||
|  | ||||
| class PeerTubeRequester { | ||||
|   readonly domain_name: URL; | ||||
|   readonly username: string; | ||||
|   readonly password: string; | ||||
|  | ||||
|   constructor(readonly config: PeerTubeRequester.Config) { | ||||
|     this.domain_name = new URL("/", config.domain_name); | ||||
|     this.username = config.username; | ||||
|     this.password = config.password; | ||||
|   } | ||||
|  | ||||
|   async apiRequest(message: UploadInstruction): Promise<void> { | ||||
|     let response = await fetch( | ||||
|       new URL(`/api/v1/oauth-clients/local`, this.domain_name) | ||||
|     ); | ||||
|     if (!response.ok) { | ||||
|       throw new Error(response.statusText); // CRASH | ||||
|     } | ||||
|     const { client_id, client_secret } = await response.json(); | ||||
|  | ||||
|     const client_info: { [key: string]: string } = { | ||||
|       client_id, | ||||
|       client_secret, | ||||
|       grant_type: "password", | ||||
|       response_type: "code", | ||||
|       username: this.username, | ||||
|       password: this.password, | ||||
|     }; | ||||
|  | ||||
|     let myParams = new URLSearchParams(); | ||||
|     for (const key in client_info) myParams.append(key, client_info[key]); | ||||
|  | ||||
|     response = await fetch(new URL(`/api/v1/users/token`, this.domain_name), { | ||||
|       method: "post", | ||||
|       body: myParams, | ||||
|     }); | ||||
|     if (!response.ok) { | ||||
|       throw new Error(response.statusText); // CRASH | ||||
|     } | ||||
|     const { access_token } = await response.json(); | ||||
|  | ||||
|     // Upload | ||||
|     const myUploadForm = new URLSearchParams(); | ||||
|     const myHeader = new Headers(); | ||||
|     myHeader.append("Authorization", `Bearer ${access_token}`); | ||||
|     for (const key in message) myUploadForm.append(key, message[key]); | ||||
|  | ||||
|     response = await fetch( | ||||
|       new URL(`/api/v1/videos/imports`, this.domain_name), | ||||
|       { | ||||
|         method: "post", | ||||
|         headers: myHeader, | ||||
|         body: myUploadForm, | ||||
|       } | ||||
|     ); | ||||
|  | ||||
|     if (!response.ok) { | ||||
|       switch (response.status) { | ||||
|         case 400: | ||||
|           throw new Error( | ||||
|             `Your target URL was not accepted by the API.\ | ||||
|                         Actualy it's : ${message.targetUrl} | ||||
|                         ${response.statusText}` | ||||
|           ); | ||||
|           break; | ||||
|         case 403: | ||||
|           throw new Error(response.statusText); | ||||
|           break; | ||||
|         case 409: | ||||
|           throw new Error( | ||||
|             `Oops, your instance had not allowed the HTTPS import.\ | ||||
|                         Contact your administrator. | ||||
|                         ${response.statusText}` | ||||
|           ); | ||||
|           break; | ||||
|         default: | ||||
|           throw new Error( | ||||
|             `Oh, you resolved an undocumented issues.\ | ||||
|                         Please report this on the git if you have the time. | ||||
|                         ERROR: ${response.statusText}` | ||||
|           ); | ||||
|           break; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| export { PeerTubeRequester }; | ||||
							
								
								
									
										472
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										472
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -7,14 +7,10 @@ | ||||
|     "": { | ||||
|       "version": "0.0.2", | ||||
|       "dependencies": { | ||||
|         "@types/node-fetch": "^2.5.11", | ||||
|         "form-data": "^4.0.0", | ||||
|         "listener-rss-agregator": "git+https://zeteo.me/gitea/Outils-PeerTube/listener-rss-agregators#1b36afbb34", | ||||
|         "node-fetch": "^2.6.1" | ||||
|         "listener-rss-agregator": "0.0.2" | ||||
|       }, | ||||
|       "devDependencies": { | ||||
|         "ts-node": "^10.0.0", | ||||
|         "typescript": "^4.3.4" | ||||
|         "tsc": "^2.0.3" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@databases/escape-identifier": { | ||||
| @@ -47,56 +43,10 @@ | ||||
|       "resolved": "https://registry.npmjs.org/@databases/validate-unicode/-/validate-unicode-1.0.0.tgz", | ||||
|       "integrity": "sha512-dLKqxGcymeVwEb/6c44KjOnzaAafFf0Wxa8xcfEjx/qOl3rdijsKYBAtIGhtVtOlpPf/PFKfgTuFurSPn/3B/g==" | ||||
|     }, | ||||
|     "node_modules/@tsconfig/node10": { | ||||
|       "version": "1.0.8", | ||||
|       "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", | ||||
|       "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/@tsconfig/node12": { | ||||
|       "version": "1.0.9", | ||||
|       "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", | ||||
|       "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/@tsconfig/node14": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", | ||||
|       "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/@tsconfig/node16": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.1.tgz", | ||||
|       "integrity": "sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/@types/node": { | ||||
|       "version": "16.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.1.tgz", | ||||
|       "integrity": "sha512-N87VuQi7HEeRJkhzovao/JviiqKjDKMVKxKMfUvSKw+MbkbW8R0nA3fi/MQhhlxV2fQ+2ReM+/Nt4efdrJx3zA==" | ||||
|     }, | ||||
|     "node_modules/@types/node-fetch": { | ||||
|       "version": "2.5.11", | ||||
|       "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.11.tgz", | ||||
|       "integrity": "sha512-2upCKaqVZETDRb8A2VTaRymqFBEgH8u6yr96b/u3+1uQEPDRo3mJLEiPk7vdXBHRtjwkjqzFYMJXrt0Z9QsYjQ==", | ||||
|       "dependencies": { | ||||
|         "@types/node": "*", | ||||
|         "form-data": "^3.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@types/node-fetch/node_modules/form-data": { | ||||
|       "version": "3.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", | ||||
|       "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", | ||||
|       "dependencies": { | ||||
|         "asynckit": "^0.4.0", | ||||
|         "combined-stream": "^1.0.8", | ||||
|         "mime-types": "^2.1.12" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 6" | ||||
|       } | ||||
|       "version": "15.12.4", | ||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.4.tgz", | ||||
|       "integrity": "sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA==" | ||||
|     }, | ||||
|     "node_modules/@types/sqlite3": { | ||||
|       "version": "3.1.7", | ||||
| @@ -133,22 +83,11 @@ | ||||
|         "readable-stream": "^2.0.6" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/arg": { | ||||
|       "version": "4.1.3", | ||||
|       "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", | ||||
|       "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/asap": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz", | ||||
|       "integrity": "sha1-sqRdpf36ILBJb8N2jMJ8EvqRan0=" | ||||
|     }, | ||||
|     "node_modules/asynckit": { | ||||
|       "version": "0.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", | ||||
|       "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" | ||||
|     }, | ||||
|     "node_modules/balanced-match": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | ||||
| @@ -163,12 +102,6 @@ | ||||
|         "concat-map": "0.0.1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/buffer-from": { | ||||
|       "version": "1.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", | ||||
|       "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/chownr": { | ||||
|       "version": "1.1.4", | ||||
|       "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", | ||||
| @@ -182,17 +115,6 @@ | ||||
|         "node": ">=0.10.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/combined-stream": { | ||||
|       "version": "1.0.8", | ||||
|       "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", | ||||
|       "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", | ||||
|       "dependencies": { | ||||
|         "delayed-stream": "~1.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/concat-map": { | ||||
|       "version": "0.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||||
| @@ -208,12 +130,6 @@ | ||||
|       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | ||||
|       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" | ||||
|     }, | ||||
|     "node_modules/create-require": { | ||||
|       "version": "1.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", | ||||
|       "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/debug": { | ||||
|       "version": "3.2.7", | ||||
|       "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", | ||||
| @@ -230,14 +146,6 @@ | ||||
|         "node": ">=4.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/delayed-stream": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | ||||
|       "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", | ||||
|       "engines": { | ||||
|         "node": ">=0.4.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/delegates": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", | ||||
| @@ -254,15 +162,6 @@ | ||||
|         "node": ">=0.10" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/diff": { | ||||
|       "version": "4.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", | ||||
|       "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", | ||||
|       "dev": true, | ||||
|       "engines": { | ||||
|         "node": ">=0.3.1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/entities": { | ||||
|       "version": "2.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", | ||||
| @@ -271,19 +170,6 @@ | ||||
|         "url": "https://github.com/fb55/entities?sponsor=1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/form-data": { | ||||
|       "version": "4.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", | ||||
|       "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", | ||||
|       "dependencies": { | ||||
|         "asynckit": "^0.4.0", | ||||
|         "combined-stream": "^1.0.8", | ||||
|         "mime-types": "^2.1.12" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 6" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/fs-minipass": { | ||||
|       "version": "1.2.7", | ||||
|       "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", | ||||
| @@ -391,46 +277,20 @@ | ||||
|       "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" | ||||
|     }, | ||||
|     "node_modules/listener-rss": { | ||||
|       "version": "0.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/listener-rss/-/listener-rss-0.0.3.tgz", | ||||
|       "integrity": "sha512-rccetOTwyyww/KDuaMX0EMjaGi+Jx+bojp18Ucxra6OeCfz2hC9FEasVNeENR096+ndOCS/rkKTJl+RD9rlAAQ==", | ||||
|       "version": "0.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/listener-rss/-/listener-rss-0.0.1.tgz", | ||||
|       "integrity": "sha512-ljH6FD4NMypkrZ9ZIMdW2YdAlm/Jer++zPI+1HTWK7BbhPJmUF3sSymqUqAjBcfH3xjt+fpYPqYgNYNM1fEYpA==", | ||||
|       "dependencies": { | ||||
|         "rss-parser": "^3.11.0" | ||||
|         "rss-parser": "3.11.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/listener-rss-agregator": { | ||||
|       "version": "0.0.3", | ||||
|       "resolved": "git+https://zeteo.me/gitea/Outils-PeerTube/listener-rss-agregators#1b36afbb344112c3827b5bcea92e1cc60bd8cf6a", | ||||
|       "hasInstallScript": true, | ||||
|       "license": "MIT", | ||||
|       "version": "0.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/listener-rss-agregator/-/listener-rss-agregator-0.0.2.tgz", | ||||
|       "integrity": "sha512-ATj4esXtHLThe1/wkJ/ukA9+pC9FwBCNZCbVv7Ywr1eIbxBR+AHR5090lzCQt3WJsBblpTTZMni+vHxmGjRR7Q==", | ||||
|       "dependencies": { | ||||
|         "@databases/sqlite": "^3.0.0", | ||||
|         "listener-rss": "^0.0.3" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/make-error": { | ||||
|       "version": "1.3.6", | ||||
|       "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", | ||||
|       "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/mime-db": { | ||||
|       "version": "1.48.0", | ||||
|       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", | ||||
|       "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", | ||||
|       "engines": { | ||||
|         "node": ">= 0.6" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/mime-types": { | ||||
|       "version": "2.1.31", | ||||
|       "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", | ||||
|       "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", | ||||
|       "dependencies": { | ||||
|         "mime-db": "1.48.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.6" | ||||
|         "listener-rss": "^0.0.1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/minimatch": { | ||||
| @@ -488,9 +348,9 @@ | ||||
|       "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==" | ||||
|     }, | ||||
|     "node_modules/needle": { | ||||
|       "version": "2.8.0", | ||||
|       "resolved": "https://registry.npmjs.org/needle/-/needle-2.8.0.tgz", | ||||
|       "integrity": "sha512-ZTq6WYkN/3782H1393me3utVYdq2XyqNUFBsprEE3VMAT0+hP/cItpnITpqsY6ep2yeFE4Tqtqwc74VqUlUYtw==", | ||||
|       "version": "2.6.0", | ||||
|       "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", | ||||
|       "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", | ||||
|       "dependencies": { | ||||
|         "debug": "^3.2.6", | ||||
|         "iconv-lite": "^0.4.4", | ||||
| @@ -503,14 +363,6 @@ | ||||
|         "node": ">= 4.4.x" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/node-fetch": { | ||||
|       "version": "2.6.1", | ||||
|       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", | ||||
|       "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", | ||||
|       "engines": { | ||||
|         "node": "4.x || >=6.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/node-pre-gyp": { | ||||
|       "version": "0.11.0", | ||||
|       "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", | ||||
| @@ -688,9 +540,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/rss-parser": { | ||||
|       "version": "3.12.0", | ||||
|       "resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.12.0.tgz", | ||||
|       "integrity": "sha512-aqD3E8iavcCdkhVxNDIdg1nkBI17jgqF+9OqPS1orwNaOgySdpvq6B+DoONLhzjzwV8mWg37sb60e4bmLK117A==", | ||||
|       "version": "3.11.0", | ||||
|       "resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.11.0.tgz", | ||||
|       "integrity": "sha512-oTLoYW+bNqNwkz8OpGinBU9s3As0sdczQjETIZFgyAdi7AopyhoVFGPIyFMYXXEY8hayKzD5CH+4CtmiPtJ89g==", | ||||
|       "dependencies": { | ||||
|         "entities": "^2.0.3", | ||||
|         "xml2js": "^0.4.19" | ||||
| @@ -729,25 +581,6 @@ | ||||
|       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", | ||||
|       "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" | ||||
|     }, | ||||
|     "node_modules/source-map": { | ||||
|       "version": "0.6.1", | ||||
|       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", | ||||
|       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", | ||||
|       "dev": true, | ||||
|       "engines": { | ||||
|         "node": ">=0.10.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/source-map-support": { | ||||
|       "version": "0.5.19", | ||||
|       "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", | ||||
|       "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "buffer-from": "^1.0.0", | ||||
|         "source-map": "^0.6.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/sqlite3": { | ||||
|       "version": "4.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-4.2.0.tgz", | ||||
| @@ -823,59 +656,13 @@ | ||||
|         "promise": "^6.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/ts-node": { | ||||
|       "version": "10.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.1.0.tgz", | ||||
|       "integrity": "sha512-6szn3+J9WyG2hE+5W8e0ruZrzyk1uFLYye6IGMBadnOzDh8aP7t8CbFpsfCiEx2+wMixAhjFt7lOZC4+l+WbEA==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "@tsconfig/node10": "^1.0.7", | ||||
|         "@tsconfig/node12": "^1.0.7", | ||||
|         "@tsconfig/node14": "^1.0.0", | ||||
|         "@tsconfig/node16": "^1.0.1", | ||||
|         "arg": "^4.1.0", | ||||
|         "create-require": "^1.1.0", | ||||
|         "diff": "^4.0.1", | ||||
|         "make-error": "^1.1.1", | ||||
|         "source-map-support": "^0.5.17", | ||||
|         "yn": "3.1.1" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "ts-node": "dist/bin.js", | ||||
|         "ts-node-cwd": "dist/bin-cwd.js", | ||||
|         "ts-node-script": "dist/bin-script.js", | ||||
|         "ts-node-transpile-only": "dist/bin-transpile.js", | ||||
|         "ts-script": "dist/bin-script-deprecated.js" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=12.0.0" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "@swc/core": ">=1.2.50", | ||||
|         "@swc/wasm": ">=1.2.50", | ||||
|         "@types/node": "*", | ||||
|         "typescript": ">=2.7" | ||||
|       }, | ||||
|       "peerDependenciesMeta": { | ||||
|         "@swc/core": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "@swc/wasm": { | ||||
|           "optional": true | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/typescript": { | ||||
|       "version": "4.3.5", | ||||
|       "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", | ||||
|       "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", | ||||
|     "node_modules/tsc": { | ||||
|       "version": "2.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/tsc/-/tsc-2.0.3.tgz", | ||||
|       "integrity": "sha512-SN+9zBUtrpUcOpaUO7GjkEHgWtf22c7FKbKCA4e858eEM7Qz86rRDpgOU2lBIDf0fLCsEg65ms899UMUIB2+Ow==", | ||||
|       "dev": true, | ||||
|       "bin": { | ||||
|         "tsc": "bin/tsc", | ||||
|         "tsserver": "bin/tsserver" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=4.2.0" | ||||
|         "tsc": "bin/tsc" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/util-deprecate": { | ||||
| @@ -920,15 +707,6 @@ | ||||
|       "version": "3.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", | ||||
|       "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" | ||||
|     }, | ||||
|     "node_modules/yn": { | ||||
|       "version": "3.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", | ||||
|       "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", | ||||
|       "dev": true, | ||||
|       "engines": { | ||||
|         "node": ">=6" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "dependencies": { | ||||
| @@ -962,55 +740,10 @@ | ||||
|       "resolved": "https://registry.npmjs.org/@databases/validate-unicode/-/validate-unicode-1.0.0.tgz", | ||||
|       "integrity": "sha512-dLKqxGcymeVwEb/6c44KjOnzaAafFf0Wxa8xcfEjx/qOl3rdijsKYBAtIGhtVtOlpPf/PFKfgTuFurSPn/3B/g==" | ||||
|     }, | ||||
|     "@tsconfig/node10": { | ||||
|       "version": "1.0.8", | ||||
|       "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", | ||||
|       "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "@tsconfig/node12": { | ||||
|       "version": "1.0.9", | ||||
|       "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", | ||||
|       "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "@tsconfig/node14": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", | ||||
|       "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "@tsconfig/node16": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.1.tgz", | ||||
|       "integrity": "sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "@types/node": { | ||||
|       "version": "16.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.1.tgz", | ||||
|       "integrity": "sha512-N87VuQi7HEeRJkhzovao/JviiqKjDKMVKxKMfUvSKw+MbkbW8R0nA3fi/MQhhlxV2fQ+2ReM+/Nt4efdrJx3zA==" | ||||
|     }, | ||||
|     "@types/node-fetch": { | ||||
|       "version": "2.5.11", | ||||
|       "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.11.tgz", | ||||
|       "integrity": "sha512-2upCKaqVZETDRb8A2VTaRymqFBEgH8u6yr96b/u3+1uQEPDRo3mJLEiPk7vdXBHRtjwkjqzFYMJXrt0Z9QsYjQ==", | ||||
|       "requires": { | ||||
|         "@types/node": "*", | ||||
|         "form-data": "^3.0.0" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "form-data": { | ||||
|           "version": "3.0.1", | ||||
|           "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", | ||||
|           "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", | ||||
|           "requires": { | ||||
|             "asynckit": "^0.4.0", | ||||
|             "combined-stream": "^1.0.8", | ||||
|             "mime-types": "^2.1.12" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|       "version": "15.12.4", | ||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.4.tgz", | ||||
|       "integrity": "sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA==" | ||||
|     }, | ||||
|     "@types/sqlite3": { | ||||
|       "version": "3.1.7", | ||||
| @@ -1044,22 +777,11 @@ | ||||
|         "readable-stream": "^2.0.6" | ||||
|       } | ||||
|     }, | ||||
|     "arg": { | ||||
|       "version": "4.1.3", | ||||
|       "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", | ||||
|       "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "asap": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz", | ||||
|       "integrity": "sha1-sqRdpf36ILBJb8N2jMJ8EvqRan0=" | ||||
|     }, | ||||
|     "asynckit": { | ||||
|       "version": "0.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", | ||||
|       "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" | ||||
|     }, | ||||
|     "balanced-match": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | ||||
| @@ -1074,12 +796,6 @@ | ||||
|         "concat-map": "0.0.1" | ||||
|       } | ||||
|     }, | ||||
|     "buffer-from": { | ||||
|       "version": "1.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", | ||||
|       "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "chownr": { | ||||
|       "version": "1.1.4", | ||||
|       "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", | ||||
| @@ -1090,14 +806,6 @@ | ||||
|       "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", | ||||
|       "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" | ||||
|     }, | ||||
|     "combined-stream": { | ||||
|       "version": "1.0.8", | ||||
|       "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", | ||||
|       "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", | ||||
|       "requires": { | ||||
|         "delayed-stream": "~1.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "concat-map": { | ||||
|       "version": "0.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||||
| @@ -1113,12 +821,6 @@ | ||||
|       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | ||||
|       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" | ||||
|     }, | ||||
|     "create-require": { | ||||
|       "version": "1.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", | ||||
|       "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "debug": { | ||||
|       "version": "3.2.7", | ||||
|       "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", | ||||
| @@ -1132,11 +834,6 @@ | ||||
|       "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", | ||||
|       "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" | ||||
|     }, | ||||
|     "delayed-stream": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | ||||
|       "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" | ||||
|     }, | ||||
|     "delegates": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", | ||||
| @@ -1147,27 +844,11 @@ | ||||
|       "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", | ||||
|       "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" | ||||
|     }, | ||||
|     "diff": { | ||||
|       "version": "4.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", | ||||
|       "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "entities": { | ||||
|       "version": "2.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", | ||||
|       "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" | ||||
|     }, | ||||
|     "form-data": { | ||||
|       "version": "4.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", | ||||
|       "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", | ||||
|       "requires": { | ||||
|         "asynckit": "^0.4.0", | ||||
|         "combined-stream": "^1.0.8", | ||||
|         "mime-types": "^2.1.12" | ||||
|       } | ||||
|     }, | ||||
|     "fs-minipass": { | ||||
|       "version": "1.2.7", | ||||
|       "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", | ||||
| @@ -1263,38 +944,20 @@ | ||||
|       "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" | ||||
|     }, | ||||
|     "listener-rss": { | ||||
|       "version": "0.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/listener-rss/-/listener-rss-0.0.3.tgz", | ||||
|       "integrity": "sha512-rccetOTwyyww/KDuaMX0EMjaGi+Jx+bojp18Ucxra6OeCfz2hC9FEasVNeENR096+ndOCS/rkKTJl+RD9rlAAQ==", | ||||
|       "version": "0.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/listener-rss/-/listener-rss-0.0.1.tgz", | ||||
|       "integrity": "sha512-ljH6FD4NMypkrZ9ZIMdW2YdAlm/Jer++zPI+1HTWK7BbhPJmUF3sSymqUqAjBcfH3xjt+fpYPqYgNYNM1fEYpA==", | ||||
|       "requires": { | ||||
|         "rss-parser": "^3.11.0" | ||||
|         "rss-parser": "3.11.0" | ||||
|       } | ||||
|     }, | ||||
|     "listener-rss-agregator": { | ||||
|       "version": "git+https://zeteo.me/gitea/Outils-PeerTube/listener-rss-agregators#1b36afbb344112c3827b5bcea92e1cc60bd8cf6a", | ||||
|       "from": "listener-rss-agregator@git+https://zeteo.me/gitea/Outils-PeerTube/listener-rss-agregators#1b36afbb34", | ||||
|       "version": "0.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/listener-rss-agregator/-/listener-rss-agregator-0.0.2.tgz", | ||||
|       "integrity": "sha512-ATj4esXtHLThe1/wkJ/ukA9+pC9FwBCNZCbVv7Ywr1eIbxBR+AHR5090lzCQt3WJsBblpTTZMni+vHxmGjRR7Q==", | ||||
|       "requires": { | ||||
|         "@databases/sqlite": "^3.0.0", | ||||
|         "listener-rss": "^0.0.3" | ||||
|       } | ||||
|     }, | ||||
|     "make-error": { | ||||
|       "version": "1.3.6", | ||||
|       "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", | ||||
|       "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "mime-db": { | ||||
|       "version": "1.48.0", | ||||
|       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", | ||||
|       "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==" | ||||
|     }, | ||||
|     "mime-types": { | ||||
|       "version": "2.1.31", | ||||
|       "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", | ||||
|       "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", | ||||
|       "requires": { | ||||
|         "mime-db": "1.48.0" | ||||
|         "listener-rss": "^0.0.1" | ||||
|       } | ||||
|     }, | ||||
|     "minimatch": { | ||||
| @@ -1346,20 +1009,15 @@ | ||||
|       "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==" | ||||
|     }, | ||||
|     "needle": { | ||||
|       "version": "2.8.0", | ||||
|       "resolved": "https://registry.npmjs.org/needle/-/needle-2.8.0.tgz", | ||||
|       "integrity": "sha512-ZTq6WYkN/3782H1393me3utVYdq2XyqNUFBsprEE3VMAT0+hP/cItpnITpqsY6ep2yeFE4Tqtqwc74VqUlUYtw==", | ||||
|       "version": "2.6.0", | ||||
|       "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", | ||||
|       "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", | ||||
|       "requires": { | ||||
|         "debug": "^3.2.6", | ||||
|         "iconv-lite": "^0.4.4", | ||||
|         "sax": "^1.2.4" | ||||
|       } | ||||
|     }, | ||||
|     "node-fetch": { | ||||
|       "version": "2.6.1", | ||||
|       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", | ||||
|       "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" | ||||
|     }, | ||||
|     "node-pre-gyp": { | ||||
|       "version": "0.11.0", | ||||
|       "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", | ||||
| @@ -1509,9 +1167,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "rss-parser": { | ||||
|       "version": "3.12.0", | ||||
|       "resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.12.0.tgz", | ||||
|       "integrity": "sha512-aqD3E8iavcCdkhVxNDIdg1nkBI17jgqF+9OqPS1orwNaOgySdpvq6B+DoONLhzjzwV8mWg37sb60e4bmLK117A==", | ||||
|       "version": "3.11.0", | ||||
|       "resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.11.0.tgz", | ||||
|       "integrity": "sha512-oTLoYW+bNqNwkz8OpGinBU9s3As0sdczQjETIZFgyAdi7AopyhoVFGPIyFMYXXEY8hayKzD5CH+4CtmiPtJ89g==", | ||||
|       "requires": { | ||||
|         "entities": "^2.0.3", | ||||
|         "xml2js": "^0.4.19" | ||||
| @@ -1547,22 +1205,6 @@ | ||||
|       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", | ||||
|       "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" | ||||
|     }, | ||||
|     "source-map": { | ||||
|       "version": "0.6.1", | ||||
|       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", | ||||
|       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "source-map-support": { | ||||
|       "version": "0.5.19", | ||||
|       "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", | ||||
|       "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "buffer-from": "^1.0.0", | ||||
|         "source-map": "^0.6.0" | ||||
|       } | ||||
|     }, | ||||
|     "sqlite3": { | ||||
|       "version": "4.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-4.2.0.tgz", | ||||
| @@ -1625,28 +1267,10 @@ | ||||
|         "promise": "^6.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "ts-node": { | ||||
|       "version": "10.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.1.0.tgz", | ||||
|       "integrity": "sha512-6szn3+J9WyG2hE+5W8e0ruZrzyk1uFLYye6IGMBadnOzDh8aP7t8CbFpsfCiEx2+wMixAhjFt7lOZC4+l+WbEA==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "@tsconfig/node10": "^1.0.7", | ||||
|         "@tsconfig/node12": "^1.0.7", | ||||
|         "@tsconfig/node14": "^1.0.0", | ||||
|         "@tsconfig/node16": "^1.0.1", | ||||
|         "arg": "^4.1.0", | ||||
|         "create-require": "^1.1.0", | ||||
|         "diff": "^4.0.1", | ||||
|         "make-error": "^1.1.1", | ||||
|         "source-map-support": "^0.5.17", | ||||
|         "yn": "3.1.1" | ||||
|       } | ||||
|     }, | ||||
|     "typescript": { | ||||
|       "version": "4.3.5", | ||||
|       "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", | ||||
|       "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", | ||||
|     "tsc": { | ||||
|       "version": "2.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/tsc/-/tsc-2.0.3.tgz", | ||||
|       "integrity": "sha512-SN+9zBUtrpUcOpaUO7GjkEHgWtf22c7FKbKCA4e858eEM7Qz86rRDpgOU2lBIDf0fLCsEg65ms899UMUIB2+Ow==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "util-deprecate": { | ||||
| @@ -1685,12 +1309,6 @@ | ||||
|       "version": "3.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", | ||||
|       "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" | ||||
|     }, | ||||
|     "yn": { | ||||
|       "version": "3.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", | ||||
|       "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", | ||||
|       "dev": true | ||||
|     } | ||||
|   } | ||||
| } | ||||
|   | ||||
							
								
								
									
										18
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								package.json
									
									
									
									
									
								
							| @@ -7,34 +7,30 @@ | ||||
|   "clientScripts": [], | ||||
|   "css": [], | ||||
|   "devDependencies": { | ||||
|     "ts-node": "^10.0.0", | ||||
|     "typescript": "^4.3.4" | ||||
|     "tsc": "^2.0.3" | ||||
|   }, | ||||
|   "engine": { | ||||
|     "peertube": ">=3.2.0" | ||||
|     "peertube": ">=1.3.0" | ||||
|   }, | ||||
|   "homepage": "https://framagit.org/framasoft/peertube/peertube-plugin-quickstart", | ||||
|   "keywords": [ | ||||
|     "peertube", | ||||
|     "plugin" | ||||
|   ], | ||||
|   "library": "./dist/src/main.js", | ||||
|   "library": "./dist/main.js", | ||||
|   "files": [ | ||||
|     "dist/", | ||||
|     "README.md" | ||||
|   ], | ||||
|   "scripts": { | ||||
|     "prepack": "npm i && npm run build", | ||||
|     "predeploy": "npm run build", | ||||
|     "buildAndDeploy": "npm run build && npm run deploy", | ||||
|     "deploy": "bash ./scripts/deploy.sh", | ||||
|     "build": "tsc" | ||||
|   }, | ||||
|   "staticDirs": {}, | ||||
|   "translations": {}, | ||||
|   "translations": { | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "@types/node-fetch": "^2.5.11", | ||||
|     "form-data": "^4.0.0", | ||||
|     "listener-rss-agregator": "git+https://zeteo.me/gitea/Outils-PeerTube/listener-rss-agregators#1b36afbb34", | ||||
|     "node-fetch": "^2.6.1" | ||||
|     "listener-rss-agregator": "0.0.2" | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,13 +1,18 @@ | ||||
| #/bin/bash | ||||
| tmp_dir=$(mktemp -d)/peertube-plugin-auto-import-ytb | ||||
| #!/bin/bash | ||||
| tmp_dir=$(mktemp -d)/peertube-plugin-auto-import-ytb/ | ||||
| work_dir=$(pwd) | ||||
| # echo "${work_dir}" | ||||
| peertube_dir=${1} | ||||
| if [ ! -d "${peertube_dir}" ]; then | ||||
|   echo "Expected to be passed a directory (or ${peertube_dir} is not accessible)" > /dev/stderr | ||||
|   exit 1 | ||||
| fi | ||||
| # echo $work_dir | ||||
|  | ||||
| mkdir "${tmp_dir}" | ||||
| mkdir "$tmp_dir" | ||||
| # echo "directory created" | ||||
| cp "${work_dir}/dist" "${work_dir}/package.json" "${work_dir}/LICENSE" $tmp_dir -r | ||||
| rsync --exclude-from="${work_dir}/.rsyncignore" "${work_dir}" "${tmp_dir}" -ar | ||||
| # echo "rsync --exclude-from=$work_dir.rsyncignore $work_dir $tmp_dir" | ||||
| # echo "rsync done" | ||||
| cd "../PeerTube-cli" | ||||
| node "./dist/server/tools/peertube.js" plugins install --path "${tmp_dir}" | ||||
| cd ../PeerTube | ||||
| node ./dist/server/tools/peertube.js plugins install --path "${tmp_dir}" | ||||
| # echo $tmp_dir | ||||
							
								
								
									
										116
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										116
									
								
								src/main.ts
									
									
									
									
									
								
							| @@ -1,113 +1,63 @@ | ||||
| import { ListenerRssAggregator } from "listener-rss-agregator"; | ||||
| import { ListenerRss } from "listener-rss"; | ||||
| import { PeerTubeRequester } from "../lib/peertubeRequester"; | ||||
| import { ManageListener } from 'listener-rss-agregator'; | ||||
|  | ||||
| type ListenerData = ListenerRss.Config & { | ||||
|   address: string; | ||||
|   channelId: string; | ||||
| }; | ||||
| let myManager : ManageListener; | ||||
| let bindistenerChannelId: {[key: string] : string} = {}; | ||||
|  | ||||
| let myManager: ListenerRssAggregator; | ||||
| let listenersDataBinding = new Map<string, ListenerData>(); | ||||
| let logger: any; | ||||
| let peertube: PeerTubeRequester; | ||||
|  | ||||
| import * as path from "path"; | ||||
| import fs from "fs"; | ||||
| import * as path from 'path'; | ||||
|  | ||||
| async function register({ | ||||
|     registerSetting, | ||||
|     settingsManager, | ||||
|   peertubeHelpers, | ||||
| }: any) { | ||||
|   const basePath = peertubeHelpers.plugin.getDataDirectoryPath(); | ||||
|   logger = peertubeHelpers.logger; | ||||
|  | ||||
|   registerSetting({ | ||||
|     name: "ytb-urls", | ||||
|     label: "liste des urls youtube a auto-importer", | ||||
|     type: "input-textarea", | ||||
|   }); | ||||
|     name: 'ytb-urls', | ||||
|     label: 'liste des urls youtube a auto-importer', | ||||
|     type: 'input-textarea' | ||||
|   }) | ||||
|  | ||||
|   logger.warn("setting register"); | ||||
|   fs.appendFileSync(path.join(basePath, "/storage.bd"), ""); | ||||
|   const basePath = peertubeHelpers.plugin.getDataDirectoryPath(); | ||||
|   myManager = new ManageListener(path.join(basePath, '/data/storage.bd')); | ||||
|  | ||||
|   const configAggregator = await ListenerRssAggregator.instantiateAggregator( | ||||
|     path.join(basePath, "/storage.bd") | ||||
|   ); | ||||
|   myManager = new ListenerRssAggregator(configAggregator); | ||||
|   const inputs = await settingsManager.getSetting('ytb-urls'); | ||||
|  | ||||
|   peertube = new PeerTubeRequester({ | ||||
|     domain_name: "http://localhost:9000", | ||||
|     username: "root", | ||||
|     password: "test", | ||||
|   }); | ||||
|   addListeners(inputs); | ||||
|  | ||||
|   logger.warn("Aggregator created"); | ||||
|   settingsManager.onSettingsChange((settings: any) => { | ||||
|     myManager.stopAll(); | ||||
|     myManager.save(); | ||||
|  | ||||
|   const inputs = await settingsManager.getSetting("ytb-urls"); | ||||
|   if (inputs) await addListeners(inputs); | ||||
|     addListeners(settings['ytb-urls']); | ||||
|   }) | ||||
|  | ||||
|   logger.warn("Config loaded"); | ||||
|   myManager.on('update', (entries: any) => { | ||||
|     // for (const item in entries.items) | ||||
|     //   console.info(item.) | ||||
|        | ||||
|   settingsManager.onSettingsChange(async (settings: any) => { | ||||
|     await addListeners(settings["ytb-urls"]); | ||||
|   }); | ||||
|   }) | ||||
|    | ||||
|   myManager.on("newEntries", (entries: any) => { | ||||
|     const datas = listenersDataBinding.get(entries.addressListener); | ||||
|     if (!datas) return; | ||||
|  | ||||
|     logger.warn( | ||||
|       "Nouvelles entrées détéctées: " + | ||||
|         JSON.stringify(entries) + | ||||
|         " de " + | ||||
|         datas.channelId | ||||
|     ); | ||||
|     for (const item of entries.items) | ||||
|       peertube.apiRequest({ | ||||
|         channelId: datas.channelId, | ||||
|         targetUrl: item.link, | ||||
|       }); | ||||
|   }); | ||||
| } | ||||
|  | ||||
| async function addListeners(listenerInput: string) { | ||||
|   let listeners: ListenerData[]; | ||||
|   try { | ||||
|     listeners = JSON.parse(listenerInput); | ||||
|   } catch { | ||||
|     logger.warn("Erreur: malformé"); | ||||
|     return; | ||||
|   } | ||||
|   let newListeners = listeners.filter( | ||||
|     (item) => !listenersDataBinding.has(item.address) | ||||
|   ); | ||||
|   let removedUrls = Array.from(listenersDataBinding.keys()).filter( | ||||
|     (url) => !listeners.some((listener) => listener.address === url) | ||||
|   ); | ||||
|  | ||||
|   for (const newItem of newListeners) { | ||||
|     listenersDataBinding.set(newItem.address, newItem); | ||||
|   } | ||||
|   for (const removedUrl of removedUrls) { | ||||
|     listenersDataBinding.delete(removedUrl); | ||||
| function addListeners(listenerInput: any) { | ||||
|   for (const line in listenerInput.split('\n')) | ||||
|     if (!myManager.listenerArray.map((it: any) => it.address).includes(line)) // si ligne non présente | ||||
|     { | ||||
|       let splitted = line.split(':'); | ||||
|       bindistenerChannelId[splitted[1]] = splitted[0]; | ||||
|       myManager.registerListener({ address: splitted[0] }); | ||||
|     } | ||||
|  | ||||
|   myManager.stopAll(); | ||||
|   await myManager.saveOverride(listeners); | ||||
|  | ||||
|   if (logger) logger.warn("Configuration modifiée: " + listenerInput); | ||||
|  | ||||
|   myManager.save(); | ||||
|   myManager.startAll(); | ||||
| } | ||||
|  | ||||
| async function unregister() { | ||||
|   myManager.stopAll(); | ||||
|   return; | ||||
|   myManager.save(); | ||||
|   return | ||||
| } | ||||
|  | ||||
| module.exports = { | ||||
|   register, | ||||
|   unregister, | ||||
| }; | ||||
|   unregister | ||||
| } | ||||
|   | ||||
| @@ -4,18 +4,18 @@ | ||||
|  | ||||
|     /* Basic Options */ | ||||
|     // "incremental": true,                         /* Enable incremental compilation */ | ||||
|     "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */, | ||||
|     "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, | ||||
|     "target": "es5",                                /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */ | ||||
|     "module": "commonjs",                           /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ | ||||
|     // "lib": [],                                   /* Specify library files to be included in the compilation. */ | ||||
|     // "allowJs": true,                             /* Allow javascript files to be compiled. */ | ||||
|     // "checkJs": true,                             /* Report errors in .js files. */ | ||||
|     // "jsx": "preserve",                           /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ | ||||
|     // "declaration": true,                         /* Generates corresponding '.d.ts' file. */ | ||||
|     // "declarationMap": true,                      /* Generates a sourcemap for each corresponding '.d.ts' file. */ | ||||
|     "declaration": true,                         /* Generates corresponding '.d.ts' file. */ | ||||
|     "declarationMap": true,                      /* Generates a sourcemap for each corresponding '.d.ts' file. */ | ||||
|     // "sourceMap": true,                           /* Generates corresponding '.map' file. */ | ||||
|     // "outFile": "./",                             /* Concatenate and emit output to single file. */ | ||||
|     "outDir": "./dist/" /* Redirect output structure to the directory. */, | ||||
|     // "rootDir": "./src/",                             /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ | ||||
|     "outDir": "./dist/",                              /* Redirect output structure to the directory. */ | ||||
|     "rootDir": "./src/",                             /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ | ||||
|     // "composite": true,                           /* Enable project compilation */ | ||||
|     // "tsBuildInfoFile": "./",                     /* Specify file to store incremental compilation information */ | ||||
|     // "removeComments": true,                      /* Do not emit comments to output. */ | ||||
| @@ -25,7 +25,7 @@ | ||||
|     // "isolatedModules": true,                     /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ | ||||
|  | ||||
|     /* Strict Type-Checking Options */ | ||||
|     "strict": true /* Enable all strict type-checking options. */, | ||||
|     "strict": true,                                 /* Enable all strict type-checking options. */ | ||||
|     // "noImplicitAny": true,                       /* Raise error on expressions and declarations with an implied 'any' type. */ | ||||
|     // "strictNullChecks": true,                    /* Enable strict null checks. */ | ||||
|     // "strictFunctionTypes": true,                 /* Enable strict checking of function types. */ | ||||
| @@ -47,14 +47,11 @@ | ||||
|     // "moduleResolution": "node",                  /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ | ||||
|     // "baseUrl": "./",                             /* Base directory to resolve non-absolute module names. */ | ||||
|     // "paths": {},                                 /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ | ||||
|     "rootDirs": [ | ||||
|       "./src/", | ||||
|       "./lib/" | ||||
|     ] /* List of root folders whose combined content represents the structure of the project at runtime. */, | ||||
|     // "rootDirs": [],                              /* List of root folders whose combined content represents the structure of the project at runtime. */ | ||||
|     // "typeRoots": [],                             /* List of folders to include type definitions from. */ | ||||
|     // "types": [],                                 /* Type declaration files to be included in compilation. */ | ||||
|     // "allowSyntheticDefaultImports": true,        /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ | ||||
|     "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, | ||||
|     "esModuleInterop": true,                        /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ | ||||
|     // "preserveSymlinks": true,                    /* Do not resolve the real path of symlinks. */ | ||||
|     // "allowUmdGlobalAccess": true,                /* Allow accessing UMD globals from modules. */ | ||||
|  | ||||
| @@ -69,7 +66,7 @@ | ||||
|     // "emitDecoratorMetadata": true,               /* Enables experimental support for emitting type metadata for decorators. */ | ||||
|  | ||||
|     /* Advanced Options */ | ||||
|     "skipLibCheck": true /* Skip type checking of declaration files. */, | ||||
|     "skipLibCheck": true,                           /* Skip type checking of declaration files. */ | ||||
|     "forceConsistentCasingInFileNames": true        /* Disallow inconsistently-cased references to the same file. */ | ||||
|   } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user