Compare commits
	
		
			4 Commits
		
	
	
		
			13307e15a8
			...
			b6ff406005
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
									
								
								 | 
						b6ff406005 | |
| 
							
							
								
									
								
								 | 
						cc4d617be0 | |
| 
							
							
								
									
								
								 | 
						9822b82ee7 | |
| 
							
							
								
									
								
								 | 
						597acb4be5 | 
| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					stages:
 | 
				
			||||||
 | 
					  - build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					build:
 | 
				
			||||||
 | 
					  image: mcr.microsoft.com/dotnet/sdk:8.0
 | 
				
			||||||
 | 
					  stage: build
 | 
				
			||||||
 | 
					  only:
 | 
				
			||||||
 | 
					    - master
 | 
				
			||||||
 | 
					  artifacts:
 | 
				
			||||||
 | 
					    paths:
 | 
				
			||||||
 | 
					      - publish
 | 
				
			||||||
 | 
					  script:
 | 
				
			||||||
 | 
					    - apt update -y
 | 
				
			||||||
 | 
					    - apt install -y make zip tar
 | 
				
			||||||
 | 
					    - make all
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					steps:
 | 
				
			||||||
 | 
					  - name: build
 | 
				
			||||||
 | 
					    image: mcr.microsoft.com/dotnet/sdk:8.0
 | 
				
			||||||
 | 
					    commands:
 | 
				
			||||||
 | 
					      - apt update -y
 | 
				
			||||||
 | 
					      - apt install -y make zip tar
 | 
				
			||||||
 | 
					      - make all
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					steps:
 | 
				
			||||||
 | 
					  - name: deploy 
 | 
				
			||||||
 | 
					    image: woodpeckerci/plugin-release
 | 
				
			||||||
 | 
					    settings:
 | 
				
			||||||
 | 
					      files:
 | 
				
			||||||
 | 
					          - 'publish/*/*'
 | 
				
			||||||
 | 
					      api_key:
 | 
				
			||||||
 | 
					        from_secret: ACCESS_TOKEN
 | 
				
			||||||
 | 
					depends_on:
 | 
				
			||||||
 | 
					  - build
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@
 | 
				
			||||||
    <title>TYTD Lite</title>
 | 
					    <title>TYTD Lite</title>
 | 
				
			||||||
    <link rel="stylesheet" href="./beer.min.css">
 | 
					    <link rel="stylesheet" href="./beer.min.css">
 | 
				
			||||||
    <link rel="stylesheet" href="./theme.css">
 | 
					    <link rel="stylesheet" href="./theme.css">
 | 
				
			||||||
    <link rel="shortcut icon" href="./favicon.ico" type="image/x-icon">
 | 
					    <link rel="manifest" href="./site.webmanifest">
 | 
				
			||||||
</head>
 | 
					</head>
 | 
				
			||||||
<body>
 | 
					<body>
 | 
				
			||||||
      <header>
 | 
					      <header>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,11 @@
 | 
				
			||||||
{{if notavailable}}
 | 
					{{if notavailable}}
 | 
				
			||||||
<article class="error">
 | 
					<article class="error">
 | 
				
			||||||
    <p>This video is unavailable on YouTube</p>
 | 
					    <p>This video is unavailable on YouTube.</p>
 | 
				
			||||||
 | 
					</article>
 | 
				
			||||||
 | 
					{{end}}
 | 
				
			||||||
 | 
					{{if offline}}
 | 
				
			||||||
 | 
					<article class="error">
 | 
				
			||||||
 | 
					    <p>We can't access YouTube right now.</p>
 | 
				
			||||||
</article>
 | 
					</article>
 | 
				
			||||||
{{end}}
 | 
					{{end}}
 | 
				
			||||||
{{if invalidurl}}
 | 
					{{if invalidurl}}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -142,8 +142,8 @@ server.Server.StartServer(port);
 | 
				
			||||||
                var video=VideoId.TryParse(v);
 | 
					                var video=VideoId.TryParse(v);
 | 
				
			||||||
                if(video.HasValue)
 | 
					                if(video.HasValue)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var (_v,rfy)=await GetSavedVideoAsync(video.Value);
 | 
					                    var (_v,rfy,off)=await GetSavedVideoAsync(video.Value);
 | 
				
			||||||
                    await ctx.SendJsonAsync(new{Video=_v,RemovedFromYouTube=rfy});
 | 
					                    await ctx.SendJsonAsync(new{Video=_v,RemovedFromYouTube=rfy,Offline=off});
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                    await ctx.SendNotFoundAsync();
 | 
					                    await ctx.SendNotFoundAsync();
 | 
				
			||||||
| 
						 | 
					@ -220,7 +220,7 @@ server.Server.StartServer(port);
 | 
				
			||||||
                    await PreformTask(video.Value,res,new Progress<double>(e=>{
 | 
					                    await PreformTask(video.Value,res,new Progress<double>(e=>{
 | 
				
			||||||
                          
 | 
					                          
 | 
				
			||||||
                    }));
 | 
					                    }));
 | 
				
			||||||
                    var (svideo,_) = await GetSavedVideoAsync(video.Value);
 | 
					                    var (svideo,_,_) = await GetSavedVideoAsync(video.Value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    switch(res)
 | 
					                    switch(res)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
| 
						 | 
					@ -263,10 +263,11 @@ server.Server.StartServer(port);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private async Task<(SavedVideo video,bool removedByYt)> GetSavedVideoAsync(VideoId id)
 | 
					        private async Task<(SavedVideo video,bool removedByYt,bool offline)> GetSavedVideoAsync(VideoId id)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            string _id = id.Value;
 | 
					            string _id = id.Value;
 | 
				
			||||||
            bool removedByYt=false;
 | 
					            bool removedByYt=false;
 | 
				
			||||||
 | 
					            bool offline=false;
 | 
				
			||||||
            SavedVideo video=new SavedVideo();
 | 
					            SavedVideo video=new SavedVideo();
 | 
				
			||||||
            await LockAsync(async()=>{
 | 
					            await LockAsync(async()=>{
 | 
				
			||||||
                var _video=Videos.FindOne(e=>e.VideoId == _id);
 | 
					                var _video=Videos.FindOne(e=>e.VideoId == _id);
 | 
				
			||||||
| 
						 | 
					@ -299,6 +300,11 @@ server.Server.StartServer(port);
 | 
				
			||||||
                            _=ex;
 | 
					                            _=ex;
 | 
				
			||||||
                            removedByYt=true;
 | 
					                            removedByYt=true;
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					                        catch(Exception ex)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            _=ex;
 | 
				
			||||||
 | 
					                            offline=true;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
| 
						 | 
					@ -330,7 +336,7 @@ server.Server.StartServer(port);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
            return (video,removedByYt);
 | 
					            return (video,removedByYt,offline);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private async Task DownloadThumbnailsAsync(VideoId id)
 | 
					        private async Task DownloadThumbnailsAsync(VideoId id)
 | 
				
			||||||
| 
						 | 
					@ -647,7 +653,9 @@ server.Server.StartServer(port);
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            case "PreMuxed":
 | 
					                            case "PreMuxed":
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                var (video,removedByYT) = await GetSavedVideoAsync(id);
 | 
					                                var (video,removedByYT,off) = await GetSavedVideoAsync(id);
 | 
				
			||||||
 | 
					                                if(off && !Directory.Exists(Path.Combine(ServerPath,"PreMuxed")) && !File.Exists(Path.Combine(ServerPath,"PreMuxed",$"{video.VideoId}.{(video.PreMuxed != null ? video.PreMuxed.Container : "mp4")}")))
 | 
				
			||||||
 | 
					                                                                    throw new VideoUnavailableException("We don't have access to YouTube");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                if(removedByYT && !Directory.Exists(Path.Combine(ServerPath,"PreMuxed")) && !File.Exists(Path.Combine(ServerPath,"PreMuxed",$"{video.VideoId}.{(video.PreMuxed != null ? video.PreMuxed.Container : "mp4")}")))
 | 
					                                if(removedByYT && !Directory.Exists(Path.Combine(ServerPath,"PreMuxed")) && !File.Exists(Path.Combine(ServerPath,"PreMuxed",$"{video.VideoId}.{(video.PreMuxed != null ? video.PreMuxed.Container : "mp4")}")))
 | 
				
			||||||
                                    throw new VideoUnavailableException("We dont have the video either");
 | 
					                                    throw new VideoUnavailableException("We dont have the video either");
 | 
				
			||||||
| 
						 | 
					@ -657,8 +665,9 @@ server.Server.StartServer(port);
 | 
				
			||||||
                                break;
 | 
					                                break;
 | 
				
			||||||
                            case "AudioOnly":
 | 
					                            case "AudioOnly":
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                var (video,removedByYT) = await GetSavedVideoAsync(id);
 | 
					                                var (video,removedByYT,off) = await GetSavedVideoAsync(id);
 | 
				
			||||||
                                
 | 
					                                if(off && !Directory.Exists(Path.Combine(ServerPath,"AudioOnly")) && !File.Exists(Path.Combine(ServerPath,"AudioOnly",$"{video.VideoId}.{(video.AudioOnly != null ? video.AudioOnly.Container : "mp4")}")))
 | 
				
			||||||
 | 
					                                    throw new VideoUnavailableException("We don't have access to YouTube");
 | 
				
			||||||
                                if(removedByYT && !Directory.Exists(Path.Combine(ServerPath,"AudioOnly")) && !File.Exists(Path.Combine(ServerPath,"AudioOnly",$"{video.VideoId}.{(video.AudioOnly != null ? video.AudioOnly.Container : "mp4")}")))
 | 
					                                if(removedByYT && !Directory.Exists(Path.Combine(ServerPath,"AudioOnly")) && !File.Exists(Path.Combine(ServerPath,"AudioOnly",$"{video.VideoId}.{(video.AudioOnly != null ? video.AudioOnly.Container : "mp4")}")))
 | 
				
			||||||
                                    throw new VideoUnavailableException("We dont have the video either");
 | 
					                                    throw new VideoUnavailableException("We dont have the video either");
 | 
				
			||||||
                                
 | 
					                                
 | 
				
			||||||
| 
						 | 
					@ -667,8 +676,9 @@ server.Server.StartServer(port);
 | 
				
			||||||
                                break;
 | 
					                                break;
 | 
				
			||||||
                            case "VideoOnly":
 | 
					                            case "VideoOnly":
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                var (video,removedByYT) = await GetSavedVideoAsync(id);
 | 
					                                var (video,removedByYT,off) = await GetSavedVideoAsync(id);
 | 
				
			||||||
                                
 | 
					                                if(off && !Directory.Exists(Path.Combine(ServerPath,"VideoOnly")) && !File.Exists(Path.Combine(ServerPath,"VideoOnly",$"{video.VideoId}.{(video.VideoOnly != null ? video.VideoOnly.Container : "mp4")}")))
 | 
				
			||||||
 | 
					                                    throw new VideoUnavailableException("We don't have access to YouTube");
 | 
				
			||||||
                                if(removedByYT && !Directory.Exists(Path.Combine(ServerPath,"VideoOnly")) && !File.Exists(Path.Combine(ServerPath,"VideoOnly",$"{video.VideoId}.{(video.VideoOnly != null ? video.VideoOnly.Container : "mp4")}")))
 | 
					                                if(removedByYT && !Directory.Exists(Path.Combine(ServerPath,"VideoOnly")) && !File.Exists(Path.Combine(ServerPath,"VideoOnly",$"{video.VideoId}.{(video.VideoOnly != null ? video.VideoOnly.Container : "mp4")}")))
 | 
				
			||||||
                                    throw new VideoUnavailableException("We dont have the video either");
 | 
					                                    throw new VideoUnavailableException("We dont have the video either");
 | 
				
			||||||
                                
 | 
					                                
 | 
				
			||||||
| 
						 | 
					@ -677,7 +687,7 @@ server.Server.StartServer(port);
 | 
				
			||||||
                                break;
 | 
					                                break;
 | 
				
			||||||
                            case "MP3":
 | 
					                            case "MP3":
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                var (video,removedByYT) = await GetSavedVideoAsync(id);
 | 
					                                var (video,removedByYT,off) = await GetSavedVideoAsync(id);
 | 
				
			||||||
                                
 | 
					                                
 | 
				
			||||||
                                 if(!HasConverter && !Directory.Exists(Path.Combine(ServerPath,"MP3")) && !File.Exists(Path.Combine(ServerPath,"MP3",$"{id}.mp3")))
 | 
					                                 if(!HasConverter && !Directory.Exists(Path.Combine(ServerPath,"MP3")) && !File.Exists(Path.Combine(ServerPath,"MP3",$"{id}.mp3")))
 | 
				
			||||||
                                    throw new OperationCanceledException("We don't have the converter.");
 | 
					                                    throw new OperationCanceledException("We don't have the converter.");
 | 
				
			||||||
| 
						 | 
					@ -687,7 +697,7 @@ server.Server.StartServer(port);
 | 
				
			||||||
                                break;
 | 
					                                break;
 | 
				
			||||||
                            case "MP4":
 | 
					                            case "MP4":
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                var (video,removedByYT) = await GetSavedVideoAsync(id);
 | 
					                                var (video,removedByYT,off) = await GetSavedVideoAsync(id);
 | 
				
			||||||
                                
 | 
					                                
 | 
				
			||||||
                                 if(!HasConverter && !Directory.Exists(Path.Combine(ServerPath,"MP4")) && !File.Exists(Path.Combine(ServerPath,"MP4",$"{id}.mp4")))
 | 
					                                 if(!HasConverter && !Directory.Exists(Path.Combine(ServerPath,"MP4")) && !File.Exists(Path.Combine(ServerPath,"MP4",$"{id}.mp4")))
 | 
				
			||||||
                                    throw new OperationCanceledException("We don't have the converter.");
 | 
					                                    throw new OperationCanceledException("We don't have the converter.");
 | 
				
			||||||
| 
						 | 
					@ -697,7 +707,7 @@ server.Server.StartServer(port);
 | 
				
			||||||
                                break;
 | 
					                                break;
 | 
				
			||||||
                            case "MKV":
 | 
					                            case "MKV":
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                var (video,removedByYT) = await GetSavedVideoAsync(id);
 | 
					                                var (video,removedByYT,off) = await GetSavedVideoAsync(id);
 | 
				
			||||||
                                
 | 
					                                
 | 
				
			||||||
                                 if(!HasConverter && !Directory.Exists(Path.Combine(ServerPath,"MKV")) && !File.Exists(Path.Combine(ServerPath,"MKV",$"{id}.mkv")))
 | 
					                                 if(!HasConverter && !Directory.Exists(Path.Combine(ServerPath,"MKV")) && !File.Exists(Path.Combine(ServerPath,"MKV",$"{id}.mkv")))
 | 
				
			||||||
                                    throw new OperationCanceledException("We don't have the converter.");
 | 
					                                    throw new OperationCanceledException("We don't have the converter.");
 | 
				
			||||||
| 
						 | 
					@ -736,12 +746,13 @@ server.Server.StartServer(port);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if(id.HasValue)
 | 
					                if(id.HasValue)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    (SavedVideo video,bool notavailable)=await GetSavedVideoAsync(id.Value);
 | 
					                    (SavedVideo video,bool notavailable,bool offline)=await GetSavedVideoAsync(id.Value);
 | 
				
			||||||
                    bool premuxed = notavailable ? await StreamExistsAsync(video,"PreMuxed") : true;
 | 
					                    bool premuxed = (notavailable || offline) ? await StreamExistsAsync(video,"PreMuxed") : true;
 | 
				
			||||||
                    bool audioonly = notavailable ? await StreamExistsAsync(video,"AudioOnly") : true;
 | 
					                    bool audioonly = (notavailable || offline) ? await StreamExistsAsync(video,"AudioOnly") : true;
 | 
				
			||||||
                    bool videoonly = notavailable ? await StreamExistsAsync(video,"VideoOnly") : true;
 | 
					                    bool videoonly = (notavailable || offline) ? await StreamExistsAsync(video,"VideoOnly") : true;
 | 
				
			||||||
                    bool converter=HasConverter; //change me
 | 
					                    bool converter=HasConverter; //change me
 | 
				
			||||||
                    result = new {
 | 
					                    result = new {
 | 
				
			||||||
 | 
					                        offline,
 | 
				
			||||||
                        notavailable,
 | 
					                        notavailable,
 | 
				
			||||||
                        premuxed,
 | 
					                        premuxed,
 | 
				
			||||||
                        audioonly,
 | 
					                        audioonly,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue