mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-16 00:24:14 +02:00
Compare commits
150 Commits
v1.30.0.49
...
v2.0.2.511
Author | SHA1 | Date | |
---|---|---|---|
![]() |
fab74b58fa | ||
![]() |
2b332a00d7 | ||
![]() |
a0b0c1555c | ||
![]() |
86b81948af | ||
![]() |
54918e0c30 | ||
![]() |
01dd793c0a | ||
![]() |
950949e4bc | ||
![]() |
fe198352a3 | ||
![]() |
88502cd020 | ||
![]() |
4924b45b56 | ||
![]() |
aea8b7cd7e | ||
![]() |
aafadb6111 | ||
![]() |
c82f904d49 | ||
![]() |
60740fa259 | ||
![]() |
d36b32f414 | ||
![]() |
14ccd6d2a5 | ||
![]() |
bdc3b63df2 | ||
![]() |
8eec321a0e | ||
![]() |
06de2313ab | ||
![]() |
a3f713bad8 | ||
![]() |
7a1fca5e23 | ||
![]() |
21c408a7da | ||
![]() |
0e92108970 | ||
![]() |
7d813ef97a | ||
![]() |
c87995250a | ||
![]() |
a9f7a376c7 | ||
![]() |
c3ee3f2320 | ||
![]() |
e8c26d0fea | ||
![]() |
9c936121e8 | ||
![]() |
40d2e40d94 | ||
![]() |
837f50c91c | ||
![]() |
f0a0202e5c | ||
![]() |
708c94bc56 | ||
![]() |
5ed82eaf09 | ||
![]() |
7d77ad68fd | ||
![]() |
6725358db5 | ||
![]() |
c410e23460 | ||
![]() |
903b86b9a2 | ||
![]() |
52a49e6a34 | ||
![]() |
a7d99f351c | ||
![]() |
b0212dd780 | ||
![]() |
c8f5099423 | ||
![]() |
5cc4c3f302 | ||
![]() |
c0d2cb42e9 | ||
![]() |
8081f13052 | ||
![]() |
84b672e617 | ||
![]() |
ed586c2d72 | ||
![]() |
233176e321 | ||
![]() |
d1e3390bae | ||
![]() |
1cd60c7a40 | ||
![]() |
c61cfcd312 | ||
![]() |
5eb4d112ca | ||
![]() |
70f2361d69 | ||
![]() |
1d6babaa15 | ||
![]() |
0427add8d0 | ||
![]() |
010c2b836d | ||
![]() |
22c4c1fc9a | ||
![]() |
d5f6cc94b8 | ||
![]() |
411e96ef2a | ||
![]() |
2b0e52ebca | ||
![]() |
c6fa26ca7b | ||
![]() |
c85f170d41 | ||
![]() |
48a658571b | ||
![]() |
0b3a5c9bc4 | ||
![]() |
356d07ef34 | ||
![]() |
0322d70d63 | ||
![]() |
362f3fe223 | ||
![]() |
075fd24f96 | ||
![]() |
4ba72ea7f3 | ||
![]() |
46f73c51bb | ||
![]() |
3287d45661 | ||
![]() |
71937fa44c | ||
![]() |
6aefd46cd4 | ||
![]() |
c8370c9e00 | ||
![]() |
6be4203b41 | ||
![]() |
1339373e43 | ||
![]() |
fc9dfb0cf7 | ||
![]() |
48301055ea | ||
![]() |
8a9518c9c1 | ||
![]() |
de099c6770 | ||
![]() |
07711da4e0 | ||
![]() |
7cb70716d0 | ||
![]() |
548dedad5c | ||
![]() |
7008626358 | ||
![]() |
f6f2a3b00d | ||
![]() |
2b16d93095 | ||
![]() |
e63ee13d23 | ||
![]() |
5c5a163151 | ||
![]() |
023eec0ec0 | ||
![]() |
5bc5f0e6b8 | ||
![]() |
5cbacc01eb | ||
![]() |
f4f1b38324 | ||
![]() |
758dddd4ad | ||
![]() |
73ee695633 | ||
![]() |
27fbd7ef7e | ||
![]() |
5125f256fb | ||
![]() |
b99e8d0d65 | ||
![]() |
d20b2cc9c0 | ||
![]() |
8a1787bdb6 | ||
![]() |
a19b8ea997 | ||
![]() |
10ea6cd753 | ||
![]() |
2c1b464715 | ||
![]() |
3263454041 | ||
![]() |
015db4a916 | ||
![]() |
49268f3b8d | ||
![]() |
f02a6f3e2c | ||
![]() |
46b6124b97 | ||
![]() |
53bc97b3be | ||
![]() |
b09d4927cc | ||
![]() |
328f3c0423 | ||
![]() |
635e76526a | ||
![]() |
790feed5ab | ||
![]() |
59b5d2fc78 | ||
![]() |
d5b12cf51a | ||
![]() |
2d584f7eb6 | ||
![]() |
0f1d647cd7 | ||
![]() |
d6e8d89be4 | ||
![]() |
8672129d5a | ||
![]() |
44bdff8b8f | ||
![]() |
4df8fc02f1 | ||
![]() |
e101129cff | ||
![]() |
147e732c9c | ||
![]() |
a12381fb1d | ||
![]() |
3a4de9cca1 | ||
![]() |
43c988d951 | ||
![]() |
a036e0fc37 | ||
![]() |
56b9da16cf | ||
![]() |
887c262589 | ||
![]() |
12ff612775 | ||
![]() |
0d3d27e46f | ||
![]() |
d1846fde61 | ||
![]() |
e6901506a0 | ||
![]() |
08b4eddbc5 | ||
![]() |
979db70e68 | ||
![]() |
22834a852a | ||
![]() |
f0540a5f8b | ||
![]() |
1f7ac7d7d6 | ||
![]() |
8ac68240ad | ||
![]() |
b463a3f54b | ||
![]() |
e15e57329e | ||
![]() |
d8354408a4 | ||
![]() |
6d2d49f7bd | ||
![]() |
37610eec40 | ||
![]() |
ed51208116 | ||
![]() |
26e4dcad65 | ||
![]() |
6eb21a02a1 | ||
![]() |
8c2d5a404d | ||
![]() |
3b83a00eaf | ||
![]() |
a5a86a6f86 | ||
![]() |
e7ed09a43d |
@@ -2,11 +2,11 @@
|
||||
// README at: https://github.com/devcontainers/templates/tree/main/src/dotnet
|
||||
{
|
||||
"name": "Prowlarr",
|
||||
"image": "mcr.microsoft.com/devcontainers/dotnet:1-6.0",
|
||||
"image": "mcr.microsoft.com/devcontainers/dotnet:1-8.0",
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/node:1": {
|
||||
"nodeGypDependencies": true,
|
||||
"version": "16",
|
||||
"version": "20",
|
||||
"nvmVersion": "latest"
|
||||
}
|
||||
},
|
||||
|
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -10,7 +10,7 @@
|
||||
"request": "launch",
|
||||
"preLaunchTask": "build dotnet",
|
||||
// If you have changed target frameworks, make sure to update the program path.
|
||||
"program": "${workspaceFolder}/_output/net6.0/Prowlarr",
|
||||
"program": "${workspaceFolder}/_output/net8.0/Prowlarr",
|
||||
"args": [],
|
||||
"cwd": "${workspaceFolder}",
|
||||
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
|
||||
|
@@ -78,6 +78,6 @@ Thank you to [<img src="https://resources.jetbrains.com/storage/products/company
|
||||
### License
|
||||
|
||||
- [GNU GPL v3](http://www.gnu.org/licenses/gpl.html)
|
||||
- Copyright 2010-2024
|
||||
- Copyright 2010-2025
|
||||
|
||||
Icon Credit - [Box vector created by freepik - www.freepik.com](https://www.freepik.com/vectors/box)
|
||||
|
@@ -9,17 +9,17 @@ variables:
|
||||
testsFolder: './_tests'
|
||||
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
|
||||
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
|
||||
majorVersion: '1.30.0'
|
||||
majorVersion: '2.0.2'
|
||||
minorVersion: $[counter('minorVersion', 1)]
|
||||
prowlarrVersion: '$(majorVersion).$(minorVersion)'
|
||||
buildName: '$(Build.SourceBranchName).$(prowlarrVersion)'
|
||||
sentryOrg: 'servarr'
|
||||
sentryUrl: 'https://sentry.servarr.com'
|
||||
dotnetVersion: '6.0.427'
|
||||
dotnetVersion: '8.0.405'
|
||||
nodeVersion: '20.X'
|
||||
innoVersion: '6.2.2'
|
||||
windowsImage: 'windows-2022'
|
||||
linuxImage: 'ubuntu-20.04'
|
||||
linuxImage: 'ubuntu-22.04'
|
||||
macImage: 'macOS-13'
|
||||
|
||||
trigger:
|
||||
@@ -106,7 +106,7 @@ stages:
|
||||
echo "Extra platforms already enabled"
|
||||
else
|
||||
echo "Enabling extra platform support"
|
||||
sed -i.ORI 's/osx-x64/osx-x64;freebsd-x64;linux-x86/' $BUNDLEDVERSIONS
|
||||
sed -i.ORI 's/osx-x64/osx-x64;freebsd-x64/' "$BUNDLEDVERSIONS"
|
||||
fi
|
||||
displayName: Enable Extra Platform Support
|
||||
- bash: ./build.sh --backend --enable-extra-platforms
|
||||
@@ -122,27 +122,23 @@ stages:
|
||||
artifact: '$(osName)Backend'
|
||||
displayName: Publish Backend
|
||||
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||
- publish: '$(testsFolder)/net6.0/win-x64/publish'
|
||||
- publish: '$(testsFolder)/net8.0/win-x64/publish'
|
||||
artifact: win-x64-tests
|
||||
displayName: Publish win-x64 Test Package
|
||||
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||
- publish: '$(testsFolder)/net6.0/linux-x64/publish'
|
||||
- publish: '$(testsFolder)/net8.0/linux-x64/publish'
|
||||
artifact: linux-x64-tests
|
||||
displayName: Publish linux-x64 Test Package
|
||||
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||
- publish: '$(testsFolder)/net6.0/linux-x86/publish'
|
||||
artifact: linux-x86-tests
|
||||
displayName: Publish linux-x86 Test Package
|
||||
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||
- publish: '$(testsFolder)/net6.0/linux-musl-x64/publish'
|
||||
- publish: '$(testsFolder)/net8.0/linux-musl-x64/publish'
|
||||
artifact: linux-musl-x64-tests
|
||||
displayName: Publish linux-musl-x64 Test Package
|
||||
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||
- publish: '$(testsFolder)/net6.0/freebsd-x64/publish'
|
||||
- publish: '$(testsFolder)/net8.0/freebsd-x64/publish'
|
||||
artifact: freebsd-x64-tests
|
||||
displayName: Publish freebsd-x64 Test Package
|
||||
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||
- publish: '$(testsFolder)/net6.0/osx-x64/publish'
|
||||
- publish: '$(testsFolder)/net8.0/osx-x64/publish'
|
||||
artifact: osx-x64-tests
|
||||
displayName: Publish osx-x64 Test Package
|
||||
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||
@@ -189,7 +185,7 @@ stages:
|
||||
artifact: '$(osName)Frontend'
|
||||
displayName: Publish Frontend
|
||||
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||
|
||||
|
||||
- stage: Installer
|
||||
dependsOn:
|
||||
- Build_Backend
|
||||
@@ -259,21 +255,21 @@ stages:
|
||||
archiveFile: '$(Build.ArtifactStagingDirectory)/Prowlarr.$(buildName).windows-core-x64.zip'
|
||||
archiveType: 'zip'
|
||||
includeRootFolder: false
|
||||
rootFolderOrFile: $(artifactsFolder)/win-x64/net6.0
|
||||
rootFolderOrFile: $(artifactsFolder)/win-x64/net8.0
|
||||
- task: ArchiveFiles@2
|
||||
displayName: Create win-x86 zip
|
||||
inputs:
|
||||
archiveFile: '$(Build.ArtifactStagingDirectory)/Prowlarr.$(buildName).windows-core-x86.zip'
|
||||
archiveType: 'zip'
|
||||
includeRootFolder: false
|
||||
rootFolderOrFile: $(artifactsFolder)/win-x86/net6.0
|
||||
rootFolderOrFile: $(artifactsFolder)/win-x86/net8.0
|
||||
- task: ArchiveFiles@2
|
||||
displayName: Create osx-x64 app
|
||||
inputs:
|
||||
archiveFile: '$(Build.ArtifactStagingDirectory)/Prowlarr.$(buildName).osx-app-core-x64.zip'
|
||||
archiveType: 'zip'
|
||||
includeRootFolder: false
|
||||
rootFolderOrFile: $(artifactsFolder)/osx-x64-app/net6.0
|
||||
rootFolderOrFile: $(artifactsFolder)/osx-x64-app/net8.0
|
||||
- task: ArchiveFiles@2
|
||||
displayName: Create osx-x64 tar
|
||||
inputs:
|
||||
@@ -281,14 +277,14 @@ stages:
|
||||
archiveType: 'tar'
|
||||
tarCompression: 'gz'
|
||||
includeRootFolder: false
|
||||
rootFolderOrFile: $(artifactsFolder)/osx-x64/net6.0
|
||||
rootFolderOrFile: $(artifactsFolder)/osx-x64/net8.0
|
||||
- task: ArchiveFiles@2
|
||||
displayName: Create osx-arm64 app
|
||||
inputs:
|
||||
archiveFile: '$(Build.ArtifactStagingDirectory)/Prowlarr.$(buildName).osx-app-core-arm64.zip'
|
||||
archiveType: 'zip'
|
||||
includeRootFolder: false
|
||||
rootFolderOrFile: $(artifactsFolder)/osx-arm64-app/net6.0
|
||||
rootFolderOrFile: $(artifactsFolder)/osx-arm64-app/net8.0
|
||||
- task: ArchiveFiles@2
|
||||
displayName: Create osx-arm64 tar
|
||||
inputs:
|
||||
@@ -296,7 +292,7 @@ stages:
|
||||
archiveType: 'tar'
|
||||
tarCompression: 'gz'
|
||||
includeRootFolder: false
|
||||
rootFolderOrFile: $(artifactsFolder)/osx-arm64/net6.0
|
||||
rootFolderOrFile: $(artifactsFolder)/osx-arm64/net8.0
|
||||
- task: ArchiveFiles@2
|
||||
displayName: Create linux-x64 tar
|
||||
inputs:
|
||||
@@ -304,7 +300,7 @@ stages:
|
||||
archiveType: 'tar'
|
||||
tarCompression: 'gz'
|
||||
includeRootFolder: false
|
||||
rootFolderOrFile: $(artifactsFolder)/linux-x64/net6.0
|
||||
rootFolderOrFile: $(artifactsFolder)/linux-x64/net8.0
|
||||
- task: ArchiveFiles@2
|
||||
displayName: Create linux-musl-x64 tar
|
||||
inputs:
|
||||
@@ -312,15 +308,7 @@ stages:
|
||||
archiveType: 'tar'
|
||||
tarCompression: 'gz'
|
||||
includeRootFolder: false
|
||||
rootFolderOrFile: $(artifactsFolder)/linux-musl-x64/net6.0
|
||||
- task: ArchiveFiles@2
|
||||
displayName: Create linux-x86 tar
|
||||
inputs:
|
||||
archiveFile: '$(Build.ArtifactStagingDirectory)/Prowlarr.$(buildName).linux-core-x86.tar.gz'
|
||||
archiveType: 'tar'
|
||||
tarCompression: 'gz'
|
||||
includeRootFolder: false
|
||||
rootFolderOrFile: $(artifactsFolder)/linux-x86/net6.0
|
||||
rootFolderOrFile: $(artifactsFolder)/linux-musl-x64/net8.0
|
||||
- task: ArchiveFiles@2
|
||||
displayName: Create linux-arm tar
|
||||
inputs:
|
||||
@@ -328,7 +316,7 @@ stages:
|
||||
archiveType: 'tar'
|
||||
tarCompression: 'gz'
|
||||
includeRootFolder: false
|
||||
rootFolderOrFile: $(artifactsFolder)/linux-arm/net6.0
|
||||
rootFolderOrFile: $(artifactsFolder)/linux-arm/net8.0
|
||||
- task: ArchiveFiles@2
|
||||
displayName: Create linux-musl-arm tar
|
||||
inputs:
|
||||
@@ -336,7 +324,7 @@ stages:
|
||||
archiveType: 'tar'
|
||||
tarCompression: 'gz'
|
||||
includeRootFolder: false
|
||||
rootFolderOrFile: $(artifactsFolder)/linux-musl-arm/net6.0
|
||||
rootFolderOrFile: $(artifactsFolder)/linux-musl-arm/net8.0
|
||||
- task: ArchiveFiles@2
|
||||
displayName: Create linux-arm64 tar
|
||||
inputs:
|
||||
@@ -344,7 +332,7 @@ stages:
|
||||
archiveType: 'tar'
|
||||
tarCompression: 'gz'
|
||||
includeRootFolder: false
|
||||
rootFolderOrFile: $(artifactsFolder)/linux-arm64/net6.0
|
||||
rootFolderOrFile: $(artifactsFolder)/linux-arm64/net8.0
|
||||
- task: ArchiveFiles@2
|
||||
displayName: Create linux-musl-arm64 tar
|
||||
inputs:
|
||||
@@ -352,7 +340,7 @@ stages:
|
||||
archiveType: 'tar'
|
||||
tarCompression: 'gz'
|
||||
includeRootFolder: false
|
||||
rootFolderOrFile: $(artifactsFolder)/linux-musl-arm64/net6.0
|
||||
rootFolderOrFile: $(artifactsFolder)/linux-musl-arm64/net8.0
|
||||
- task: ArchiveFiles@2
|
||||
displayName: Create freebsd-x64 tar
|
||||
inputs:
|
||||
@@ -360,7 +348,7 @@ stages:
|
||||
archiveType: 'tar'
|
||||
tarCompression: 'gz'
|
||||
includeRootFolder: false
|
||||
rootFolderOrFile: $(artifactsFolder)/freebsd-x64/net6.0
|
||||
rootFolderOrFile: $(artifactsFolder)/freebsd-x64/net8.0
|
||||
- publish: $(Build.ArtifactStagingDirectory)
|
||||
artifact: 'Packages'
|
||||
displayName: Publish Packages
|
||||
@@ -391,7 +379,7 @@ stages:
|
||||
SENTRY_AUTH_TOKEN: $(sentryAuthTokenServarr)
|
||||
SENTRY_ORG: $(sentryOrg)
|
||||
SENTRY_URL: $(sentryUrl)
|
||||
|
||||
|
||||
- stage: Unit_Test
|
||||
displayName: Unit Tests
|
||||
dependsOn: Build_Backend
|
||||
@@ -476,6 +464,7 @@ stages:
|
||||
testResultsFiles: '**/TestResult.xml'
|
||||
testRunTitle: '$(testName) Unit Tests'
|
||||
failTaskOnFailedTests: true
|
||||
failTaskOnMissingResultsFile: ne(variables['testName'], 'freebsd-x64')
|
||||
|
||||
- job: Unit_Docker
|
||||
displayName: Unit Docker
|
||||
@@ -487,29 +476,19 @@ stages:
|
||||
testName: 'Musl Net Core'
|
||||
artifactName: linux-musl-x64-tests
|
||||
containerImage: ghcr.io/servarr/testimages:alpine
|
||||
linux-x86:
|
||||
testName: 'linux-x86'
|
||||
artifactName: linux-x86-tests
|
||||
containerImage: ghcr.io/servarr/testimages:linux-x86
|
||||
|
||||
pool:
|
||||
vmImage: ${{ variables.linuxImage }}
|
||||
|
||||
|
||||
container: $[ variables['containerImage'] ]
|
||||
|
||||
timeoutInMinutes: 10
|
||||
|
||||
|
||||
steps:
|
||||
- task: UseDotNet@2
|
||||
displayName: 'Install .NET'
|
||||
inputs:
|
||||
version: $(dotnetVersion)
|
||||
condition: and(succeeded(), ne(variables['testName'], 'linux-x86'))
|
||||
- bash: |
|
||||
SDKURL=$(curl -s https://api.github.com/repos/Servarr/dotnet-linux-x86/releases | jq -rc '.[].assets[].browser_download_url' | grep sdk-${DOTNETVERSION}.*gz$)
|
||||
curl -fsSL $SDKURL | tar xzf - -C /opt/dotnet
|
||||
displayName: 'Install .NET'
|
||||
condition: and(succeeded(), eq(variables['testName'], 'linux-x86'))
|
||||
- checkout: none
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: Download Test Artifact
|
||||
@@ -532,7 +511,8 @@ stages:
|
||||
testResultsFiles: '**/TestResult.xml'
|
||||
testRunTitle: '$(testName) Unit Tests'
|
||||
failTaskOnFailedTests: true
|
||||
|
||||
failTaskOnMissingResultsFile: true
|
||||
|
||||
- job: Unit_LinuxCore_Postgres14
|
||||
displayName: Unit Native LinuxCore with Postgres14 Database
|
||||
dependsOn: Prepare
|
||||
@@ -549,7 +529,7 @@ stages:
|
||||
vmImage: ${{ variables.linuxImage }}
|
||||
|
||||
timeoutInMinutes: 10
|
||||
|
||||
|
||||
steps:
|
||||
- task: UseDotNet@2
|
||||
displayName: 'Install .net core'
|
||||
@@ -585,6 +565,7 @@ stages:
|
||||
testResultsFiles: '**/TestResult.xml'
|
||||
testRunTitle: 'LinuxCore Postgres14 Unit Tests'
|
||||
failTaskOnFailedTests: true
|
||||
failTaskOnMissingResultsFile: true
|
||||
|
||||
- job: Unit_LinuxCore_Postgres15
|
||||
displayName: Unit Native LinuxCore with Postgres15 Database
|
||||
@@ -597,12 +578,12 @@ stages:
|
||||
Prowlarr__Postgres__Port: '5432'
|
||||
Prowlarr__Postgres__User: 'prowlarr'
|
||||
Prowlarr__Postgres__Password: 'prowlarr'
|
||||
|
||||
|
||||
pool:
|
||||
vmImage: ${{ variables.linuxImage }}
|
||||
|
||||
timeoutInMinutes: 10
|
||||
|
||||
|
||||
steps:
|
||||
- task: UseDotNet@2
|
||||
displayName: 'Install .net core'
|
||||
@@ -638,6 +619,7 @@ stages:
|
||||
testResultsFiles: '**/TestResult.xml'
|
||||
testRunTitle: 'LinuxCore Postgres15 Unit Tests'
|
||||
failTaskOnFailedTests: true
|
||||
failTaskOnMissingResultsFile: true
|
||||
|
||||
- stage: Integration
|
||||
displayName: Integration
|
||||
@@ -681,7 +663,7 @@ stages:
|
||||
|
||||
pool:
|
||||
vmImage: $(imageName)
|
||||
|
||||
|
||||
steps:
|
||||
- task: UseDotNet@2
|
||||
displayName: 'Install .net core'
|
||||
@@ -703,7 +685,7 @@ stages:
|
||||
targetPath: $(Build.ArtifactStagingDirectory)
|
||||
- task: ExtractFiles@1
|
||||
inputs:
|
||||
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
|
||||
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
|
||||
destinationFolder: '$(Build.ArtifactStagingDirectory)/bin'
|
||||
displayName: Extract Package
|
||||
- bash: |
|
||||
@@ -720,6 +702,7 @@ stages:
|
||||
testResultsFiles: '**/TestResult.xml'
|
||||
testRunTitle: '$(testName) Integration Tests'
|
||||
failTaskOnFailedTests: true
|
||||
failTaskOnMissingResultsFile: true
|
||||
displayName: Publish Test Results
|
||||
|
||||
- job: Integration_LinuxCore_Postgres14
|
||||
@@ -757,7 +740,7 @@ stages:
|
||||
targetPath: $(Build.ArtifactStagingDirectory)
|
||||
- task: ExtractFiles@1
|
||||
inputs:
|
||||
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
|
||||
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
|
||||
destinationFolder: '$(Build.ArtifactStagingDirectory)/bin'
|
||||
displayName: Extract Package
|
||||
- bash: |
|
||||
@@ -782,6 +765,7 @@ stages:
|
||||
testResultsFiles: '**/TestResult.xml'
|
||||
testRunTitle: 'Integration LinuxCore Postgres14 Database Integration Tests'
|
||||
failTaskOnFailedTests: true
|
||||
failTaskOnMissingResultsFile: true
|
||||
displayName: Publish Test Results
|
||||
|
||||
|
||||
@@ -820,7 +804,7 @@ stages:
|
||||
targetPath: $(Build.ArtifactStagingDirectory)
|
||||
- task: ExtractFiles@1
|
||||
inputs:
|
||||
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
|
||||
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
|
||||
destinationFolder: '$(Build.ArtifactStagingDirectory)/bin'
|
||||
displayName: Extract Package
|
||||
- bash: |
|
||||
@@ -845,6 +829,7 @@ stages:
|
||||
testResultsFiles: '**/TestResult.xml'
|
||||
testRunTitle: 'Integration LinuxCore Postgres15 Database Integration Tests'
|
||||
failTaskOnFailedTests: true
|
||||
failTaskOnMissingResultsFile: true
|
||||
displayName: Publish Test Results
|
||||
|
||||
- job: Integration_FreeBSD
|
||||
@@ -891,6 +876,7 @@ stages:
|
||||
testResultsFiles: '**/TestResult.xml'
|
||||
testRunTitle: 'FreeBSD Integration Tests'
|
||||
failTaskOnFailedTests: true
|
||||
failTaskOnMissingResultsFile: false
|
||||
displayName: Publish Test Results
|
||||
|
||||
- job: Integration_Docker
|
||||
@@ -904,29 +890,18 @@ stages:
|
||||
artifactName: linux-musl-x64-tests
|
||||
containerImage: ghcr.io/servarr/testimages:alpine
|
||||
pattern: 'Prowlarr.*.linux-musl-core-x64.tar.gz'
|
||||
linux-x86:
|
||||
testName: 'linux-x86'
|
||||
artifactName: linux-x86-tests
|
||||
containerImage: ghcr.io/servarr/testimages:linux-x86
|
||||
pattern: 'Prowlarr.*.linux-core-x86.tar.gz'
|
||||
pool:
|
||||
vmImage: ${{ variables.linuxImage }}
|
||||
|
||||
container: $[ variables['containerImage'] ]
|
||||
|
||||
timeoutInMinutes: 15
|
||||
|
||||
|
||||
steps:
|
||||
- task: UseDotNet@2
|
||||
displayName: 'Install .NET'
|
||||
inputs:
|
||||
version: $(dotnetVersion)
|
||||
condition: and(succeeded(), ne(variables['testName'], 'linux-x86'))
|
||||
- bash: |
|
||||
SDKURL=$(curl -s https://api.github.com/repos/Servarr/dotnet-linux-x86/releases | jq -rc '.[].assets[].browser_download_url' | grep sdk-${DOTNETVERSION}.*gz$)
|
||||
curl -fsSL $SDKURL | tar xzf - -C /opt/dotnet
|
||||
displayName: 'Install .NET'
|
||||
condition: and(succeeded(), eq(variables['testName'], 'linux-x86'))
|
||||
- checkout: none
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: Download Test Artifact
|
||||
@@ -943,7 +918,7 @@ stages:
|
||||
targetPath: $(Build.ArtifactStagingDirectory)
|
||||
- task: ExtractFiles@1
|
||||
inputs:
|
||||
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
|
||||
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
|
||||
destinationFolder: '$(Build.ArtifactStagingDirectory)/bin'
|
||||
displayName: Extract Package
|
||||
- bash: |
|
||||
@@ -960,12 +935,13 @@ stages:
|
||||
testResultsFiles: '**/TestResult.xml'
|
||||
testRunTitle: '$(testName) Integration Tests'
|
||||
failTaskOnFailedTests: true
|
||||
failTaskOnMissingResultsFile: true
|
||||
displayName: Publish Test Results
|
||||
|
||||
- stage: Automation
|
||||
displayName: Automation
|
||||
dependsOn: Packages
|
||||
|
||||
|
||||
jobs:
|
||||
- job: Automation
|
||||
strategy:
|
||||
@@ -991,7 +967,7 @@ stages:
|
||||
|
||||
pool:
|
||||
vmImage: $(imageName)
|
||||
|
||||
|
||||
steps:
|
||||
- task: UseDotNet@2
|
||||
displayName: 'Install .net core'
|
||||
@@ -1013,7 +989,7 @@ stages:
|
||||
targetPath: $(Build.ArtifactStagingDirectory)
|
||||
- task: ExtractFiles@1
|
||||
inputs:
|
||||
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
|
||||
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
|
||||
destinationFolder: '$(Build.ArtifactStagingDirectory)/bin'
|
||||
displayName: Extract Package
|
||||
- bash: |
|
||||
@@ -1041,6 +1017,7 @@ stages:
|
||||
testResultsFiles: '**/TestResult.xml'
|
||||
testRunTitle: '$(osName) Automation Tests'
|
||||
failTaskOnFailedTests: $(failBuild)
|
||||
failTaskOnMissingResultsFile: $(failBuild)
|
||||
displayName: Publish Test Results
|
||||
|
||||
- stage: Analyze
|
||||
@@ -1116,7 +1093,7 @@ stages:
|
||||
- checkout: self
|
||||
submodules: true
|
||||
persistCredentials: true
|
||||
fetchDepth: 1
|
||||
fetchDepth: 1
|
||||
- bash: ./docs.sh Windows
|
||||
displayName: Create openapi.json
|
||||
- bash: |
|
||||
@@ -1184,13 +1161,13 @@ stages:
|
||||
sonar.cs.opencover.reportsPaths=$(Build.SourcesDirectory)/CoverageResults/**/coverage.opencover.xml
|
||||
sonar.cs.nunit.reportsPaths=$(Build.SourcesDirectory)/TestResult.xml
|
||||
- bash: |
|
||||
./build.sh --backend -f net6.0 -r win-x64
|
||||
TEST_DIR=_tests/net6.0/win-x64/publish/ ./test.sh Windows Unit Coverage
|
||||
./build.sh --backend -f net8.0 -r win-x64
|
||||
TEST_DIR=_tests/net8.0/win-x64/publish/ ./test.sh Windows Unit Coverage
|
||||
displayName: Coverage Unit Tests
|
||||
- task: SonarCloudAnalyze@3
|
||||
condition: eq(variables['System.PullRequest.IsFork'], 'False')
|
||||
displayName: Publish SonarCloud Results
|
||||
- task: reportgenerator@5.3.11
|
||||
- task: reportgenerator@5
|
||||
displayName: Generate Coverage Report
|
||||
inputs:
|
||||
reports: '$(Build.SourcesDirectory)/CoverageResults/**/coverage.opencover.xml'
|
||||
@@ -1228,4 +1205,3 @@ stages:
|
||||
DISCORDCHANNELID: $(discordChannelId)
|
||||
DISCORDWEBHOOKKEY: $(discordWebhookKey)
|
||||
DISCORDTHREADID: $(discordThreadId)
|
||||
|
||||
|
52
build.sh
52
build.sh
@@ -33,14 +33,14 @@ EnableExtraPlatformsInSDK()
|
||||
echo "Extra platforms already enabled"
|
||||
else
|
||||
echo "Enabling extra platform support"
|
||||
sed -i.ORI 's/osx-x64/osx-x64;freebsd-x64;linux-x86/' $BUNDLEDVERSIONS
|
||||
sed -i.ORI 's/osx-x64/osx-x64;freebsd-x64/' "$BUNDLEDVERSIONS"
|
||||
fi
|
||||
}
|
||||
|
||||
EnableExtraPlatforms()
|
||||
{
|
||||
if grep -qv freebsd-x64 src/Directory.Build.props; then
|
||||
sed -i'' -e "s^<RuntimeIdentifiers>\(.*\)</RuntimeIdentifiers>^<RuntimeIdentifiers>\1;freebsd-x64;linux-x86</RuntimeIdentifiers>^g" src/Directory.Build.props
|
||||
sed -i'' -e "s^<RuntimeIdentifiers>\(.*\)</RuntimeIdentifiers>^<RuntimeIdentifiers>\1;freebsd-x64</RuntimeIdentifiers>^g" src/Directory.Build.props
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -79,9 +79,9 @@ Build()
|
||||
|
||||
if [[ -z "$RID" || -z "$FRAMEWORK" ]];
|
||||
then
|
||||
dotnet msbuild -restore $slnFile -p:Configuration=Release -p:Platform=$platform -t:PublishAllRids
|
||||
dotnet msbuild -restore $slnFile -p:SelfContained=True -p:Configuration=Release -p:Platform=$platform -t:PublishAllRids
|
||||
else
|
||||
dotnet msbuild -restore $slnFile -p:Configuration=Release -p:Platform=$platform -p:RuntimeIdentifiers=$RID -t:PublishAllRids
|
||||
dotnet msbuild -restore $slnFile -p:SelfContained=True -p:Configuration=Release -p:Platform=$platform -p:RuntimeIdentifiers=$RID -t:PublishAllRids
|
||||
fi
|
||||
|
||||
ProgressEnd 'Build'
|
||||
@@ -137,7 +137,7 @@ PackageLinux()
|
||||
|
||||
echo "Adding Prowlarr.Mono to UpdatePackage"
|
||||
cp $folder/Prowlarr.Mono.* $folder/Prowlarr.Update
|
||||
if [ "$framework" = "net6.0" ]; then
|
||||
if [ "$framework" = "net8.0" ]; then
|
||||
cp $folder/Mono.Posix.NETStandard.* $folder/Prowlarr.Update
|
||||
cp $folder/libMonoPosixHelper.* $folder/Prowlarr.Update
|
||||
fi
|
||||
@@ -165,7 +165,7 @@ PackageMacOS()
|
||||
|
||||
echo "Adding Prowlarr.Mono to UpdatePackage"
|
||||
cp $folder/Prowlarr.Mono.* $folder/Prowlarr.Update
|
||||
if [ "$framework" = "net6.0" ]; then
|
||||
if [ "$framework" = "net8.0" ]; then
|
||||
cp $folder/Mono.Posix.NETStandard.* $folder/Prowlarr.Update
|
||||
cp $folder/libMonoPosixHelper.* $folder/Prowlarr.Update
|
||||
fi
|
||||
@@ -377,15 +377,14 @@ then
|
||||
Build
|
||||
if [[ -z "$RID" || -z "$FRAMEWORK" ]];
|
||||
then
|
||||
PackageTests "net6.0" "win-x64"
|
||||
PackageTests "net6.0" "win-x86"
|
||||
PackageTests "net6.0" "linux-x64"
|
||||
PackageTests "net6.0" "linux-musl-x64"
|
||||
PackageTests "net6.0" "osx-x64"
|
||||
PackageTests "net8.0" "win-x64"
|
||||
PackageTests "net8.0" "win-x86"
|
||||
PackageTests "net8.0" "linux-x64"
|
||||
PackageTests "net8.0" "linux-musl-x64"
|
||||
PackageTests "net8.0" "osx-x64"
|
||||
if [ "$ENABLE_EXTRA_PLATFORMS" = "YES" ];
|
||||
then
|
||||
PackageTests "net6.0" "freebsd-x64"
|
||||
PackageTests "net6.0" "linux-x86"
|
||||
PackageTests "net8.0" "freebsd-x64"
|
||||
fi
|
||||
else
|
||||
PackageTests "$FRAMEWORK" "$RID"
|
||||
@@ -413,20 +412,19 @@ then
|
||||
|
||||
if [[ -z "$RID" || -z "$FRAMEWORK" ]];
|
||||
then
|
||||
Package "net6.0" "win-x64"
|
||||
Package "net6.0" "win-x86"
|
||||
Package "net6.0" "linux-x64"
|
||||
Package "net6.0" "linux-musl-x64"
|
||||
Package "net6.0" "linux-arm64"
|
||||
Package "net6.0" "linux-musl-arm64"
|
||||
Package "net6.0" "linux-arm"
|
||||
Package "net6.0" "linux-musl-arm"
|
||||
Package "net6.0" "osx-x64"
|
||||
Package "net6.0" "osx-arm64"
|
||||
Package "net8.0" "win-x64"
|
||||
Package "net8.0" "win-x86"
|
||||
Package "net8.0" "linux-x64"
|
||||
Package "net8.0" "linux-musl-x64"
|
||||
Package "net8.0" "linux-arm64"
|
||||
Package "net8.0" "linux-musl-arm64"
|
||||
Package "net8.0" "linux-arm"
|
||||
Package "net8.0" "linux-musl-arm"
|
||||
Package "net8.0" "osx-x64"
|
||||
Package "net8.0" "osx-arm64"
|
||||
if [ "$ENABLE_EXTRA_PLATFORMS" = "YES" ];
|
||||
then
|
||||
Package "net6.0" "freebsd-x64"
|
||||
Package "net6.0" "linux-x86"
|
||||
Package "net8.0" "freebsd-x64"
|
||||
fi
|
||||
else
|
||||
Package "$FRAMEWORK" "$RID"
|
||||
@@ -436,7 +434,7 @@ fi
|
||||
if [ "$INSTALLER" = "YES" ];
|
||||
then
|
||||
InstallInno
|
||||
BuildInstaller "net6.0" "win-x64"
|
||||
BuildInstaller "net6.0" "win-x86"
|
||||
BuildInstaller "net8.0" "win-x64"
|
||||
BuildInstaller "net8.0" "win-x86"
|
||||
RemoveInno
|
||||
fi
|
||||
|
13
docs.sh
13
docs.sh
@@ -1,17 +1,18 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
FRAMEWORK="net6.0"
|
||||
FRAMEWORK="net8.0"
|
||||
PLATFORM=$1
|
||||
ARCHITECTURE="${2:-x64}"
|
||||
|
||||
if [ "$PLATFORM" = "Windows" ]; then
|
||||
RUNTIME="win-x64"
|
||||
RUNTIME="win-$ARCHITECTURE"
|
||||
elif [ "$PLATFORM" = "Linux" ]; then
|
||||
RUNTIME="linux-x64"
|
||||
RUNTIME="linux-$ARCHITECTURE"
|
||||
elif [ "$PLATFORM" = "Mac" ]; then
|
||||
RUNTIME="osx-x64"
|
||||
RUNTIME="osx-$ARCHITECTURE"
|
||||
else
|
||||
echo "Platform must be provided as first arguement: Windows, Linux or Mac"
|
||||
echo "Platform must be provided as first argument: Windows, Linux or Mac"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -37,7 +38,7 @@ dotnet clean $slnFile -c Release
|
||||
dotnet msbuild -restore $slnFile -p:Configuration=Debug -p:Platform=$platform -p:RuntimeIdentifiers=$RUNTIME -t:PublishAllRids
|
||||
|
||||
dotnet new tool-manifest
|
||||
dotnet tool install --version 6.6.2 Swashbuckle.AspNetCore.Cli
|
||||
dotnet tool install --version 8.1.4 Swashbuckle.AspNetCore.Cli
|
||||
|
||||
dotnet tool run swagger tofile --output ./src/Prowlarr.Api.V1/openapi.json "$outputFolder/$FRAMEWORK/$RUNTIME/$application" v1 &
|
||||
|
||||
|
@@ -170,7 +170,7 @@ module.exports = (env) => {
|
||||
loose: true,
|
||||
debug: false,
|
||||
useBuiltIns: 'entry',
|
||||
corejs: '3.39'
|
||||
corejs: '3.42'
|
||||
}
|
||||
]
|
||||
]
|
||||
|
@@ -20,6 +20,8 @@ import HintedSelectInputSelectedValue from './HintedSelectInputSelectedValue';
|
||||
import TextInput from './TextInput';
|
||||
import styles from './EnhancedSelectInput.css';
|
||||
|
||||
const MINIMUM_DISTANCE_FROM_EDGE = 10;
|
||||
|
||||
function isArrowKey(keyCode) {
|
||||
return keyCode === keyCodes.UP_ARROW || keyCode === keyCodes.DOWN_ARROW;
|
||||
}
|
||||
@@ -137,18 +139,9 @@ class EnhancedSelectInput extends Component {
|
||||
// Listeners
|
||||
|
||||
onComputeMaxHeight = (data) => {
|
||||
const {
|
||||
top,
|
||||
bottom
|
||||
} = data.offsets.reference;
|
||||
|
||||
const windowHeight = window.innerHeight;
|
||||
|
||||
if ((/^botton/).test(data.placement)) {
|
||||
data.styles.maxHeight = windowHeight - bottom;
|
||||
} else {
|
||||
data.styles.maxHeight = top;
|
||||
}
|
||||
data.styles.maxHeight = windowHeight - MINIMUM_DISTANCE_FROM_EDGE;
|
||||
|
||||
return data;
|
||||
};
|
||||
@@ -460,6 +453,10 @@ class EnhancedSelectInput extends Component {
|
||||
order: 851,
|
||||
enabled: true,
|
||||
fn: this.onComputeMaxHeight
|
||||
},
|
||||
preventOverflow: {
|
||||
enabled: true,
|
||||
boundariesElement: 'viewport'
|
||||
}
|
||||
}}
|
||||
>
|
||||
|
@@ -24,6 +24,7 @@
|
||||
composes: link;
|
||||
|
||||
padding: 10px 24px;
|
||||
padding-left: 35px;
|
||||
}
|
||||
|
||||
.isActiveLink {
|
||||
@@ -41,10 +42,6 @@
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.noIcon {
|
||||
margin-left: 25px;
|
||||
}
|
||||
|
||||
.status {
|
||||
float: right;
|
||||
}
|
||||
|
@@ -8,7 +8,6 @@ interface CssExports {
|
||||
'isActiveParentLink': string;
|
||||
'item': string;
|
||||
'link': string;
|
||||
'noIcon': string;
|
||||
'status': string;
|
||||
}
|
||||
export const cssExports: CssExports;
|
||||
|
@@ -63,9 +63,7 @@ class PageSidebarItem extends Component {
|
||||
</span>
|
||||
}
|
||||
|
||||
<span className={isChildItem ? styles.noIcon : null}>
|
||||
{typeof title === 'function' ? title() : title}
|
||||
</span>
|
||||
{typeof title === 'function' ? title() : title}
|
||||
|
||||
{
|
||||
!!StatusComponent &&
|
||||
|
@@ -22,11 +22,14 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.label {
|
||||
padding: 0 3px;
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
color: var(--toolbarLabelColor);
|
||||
font-size: $extraSmallFontSize;
|
||||
line-height: calc($extraSmallFontSize + 1px);
|
||||
|
@@ -23,6 +23,7 @@ function PageToolbarButton(props) {
|
||||
isDisabled && styles.isDisabled
|
||||
)}
|
||||
isDisabled={isDisabled || isSpinning}
|
||||
title={label}
|
||||
{...otherProps}
|
||||
>
|
||||
<Icon
|
||||
|
@@ -65,17 +65,30 @@ class VirtualTable extends Component {
|
||||
|
||||
if (this._grid && scrollTop !== undefined && scrollTop !== 0 && !scrollRestored) {
|
||||
this.setState({ scrollRestored: true });
|
||||
this._grid.scrollToPosition({ scrollTop });
|
||||
this._gridScrollToPosition({ scrollTop });
|
||||
}
|
||||
|
||||
if (scrollIndex != null && scrollIndex !== prevProps.scrollIndex) {
|
||||
this._grid.scrollToCell({
|
||||
this._gridScrollToCell({
|
||||
rowIndex: scrollIndex,
|
||||
columnIndex: 0
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
_gridScrollToCell = ({ rowIndex = 0, columnIndex = 0 }) => {
|
||||
const scrollOffset = this._grid.getOffsetForCell({
|
||||
rowIndex,
|
||||
columnIndex
|
||||
});
|
||||
|
||||
this._gridScrollToPosition(scrollOffset);
|
||||
};
|
||||
|
||||
_gridScrollToPosition = ({ scrollTop = 0, scrollLeft = 0 }) => {
|
||||
this.props.scroller?.scrollTo({ top: scrollTop, left: scrollLeft });
|
||||
};
|
||||
|
||||
//
|
||||
// Control
|
||||
|
||||
|
@@ -21,7 +21,7 @@ function createMapStateToProps() {
|
||||
) => {
|
||||
|
||||
// If a release is deleted this selector may fire before the parent
|
||||
// selecors, which will result in an undefined release, if that happens
|
||||
// selectors, which will result in an undefined release, if that happens
|
||||
// we want to return early here and again in the render function to avoid
|
||||
// trying to show a release that has no information available.
|
||||
|
||||
|
@@ -30,7 +30,9 @@ export const authenticationMethodOptions = [
|
||||
key: 'basic',
|
||||
get value() {
|
||||
return translate('AuthBasic');
|
||||
}
|
||||
},
|
||||
isDisabled: true,
|
||||
isHidden: true
|
||||
},
|
||||
{
|
||||
key: 'forms',
|
||||
|
@@ -419,7 +419,7 @@ export const reducers = createHandleActions({
|
||||
const items = newState.items;
|
||||
const index = items.findIndex((item) => item.guid === guid);
|
||||
|
||||
// Don't try to update if there isnt a matching item (the user closed the modal)
|
||||
// Don't try to update if there isn't a matching item (the user closed the modal)
|
||||
if (index >= 0) {
|
||||
const item = Object.assign({}, items[index], payload);
|
||||
|
||||
|
@@ -2,8 +2,8 @@ import { createSelector } from 'reselect';
|
||||
import { isCommandExecuting } from 'Utilities/Command';
|
||||
import createCommandSelector from './createCommandSelector';
|
||||
|
||||
function createCommandExecutingSelector(name: string, contraints = {}) {
|
||||
return createSelector(createCommandSelector(name, contraints), (command) => {
|
||||
function createCommandExecutingSelector(name: string, constraints = {}) {
|
||||
return createSelector(createCommandSelector(name, constraints), (command) => {
|
||||
return isCommandExecuting(command);
|
||||
});
|
||||
}
|
||||
|
@@ -2,9 +2,9 @@ import { createSelector } from 'reselect';
|
||||
import { findCommand } from 'Utilities/Command';
|
||||
import createCommandsSelector from './createCommandsSelector';
|
||||
|
||||
function createCommandSelector(name: string, contraints = {}) {
|
||||
function createCommandSelector(name: string, constraints = {}) {
|
||||
return createSelector(createCommandsSelector(), (commands) => {
|
||||
return findCommand(commands, { name, ...contraints });
|
||||
return findCommand(commands, { name, ...constraints });
|
||||
});
|
||||
}
|
||||
|
||||
|
5
global.json
Normal file
5
global.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sdk": {
|
||||
"version": "8.0.405"
|
||||
}
|
||||
}
|
32
package.json
32
package.json
@@ -23,17 +23,17 @@
|
||||
"defaults"
|
||||
],
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "6.7.1",
|
||||
"@fortawesome/fontawesome-svg-core": "6.7.1",
|
||||
"@fortawesome/free-regular-svg-icons": "6.7.1",
|
||||
"@fortawesome/free-solid-svg-icons": "6.7.1",
|
||||
"@fortawesome/fontawesome-free": "6.7.2",
|
||||
"@fortawesome/fontawesome-svg-core": "6.7.2",
|
||||
"@fortawesome/free-regular-svg-icons": "6.7.2",
|
||||
"@fortawesome/free-solid-svg-icons": "6.7.2",
|
||||
"@fortawesome/react-fontawesome": "0.2.2",
|
||||
"@juggle/resize-observer": "3.4.0",
|
||||
"@microsoft/signalr": "6.0.25",
|
||||
"@microsoft/signalr": "8.0.7",
|
||||
"@sentry/browser": "7.119.1",
|
||||
"@sentry/integrations": "7.119.1",
|
||||
"@types/node": "20.16.11",
|
||||
"@types/react": "18.2.79",
|
||||
"@types/react": "18.3.21",
|
||||
"@types/react-dom": "18.2.25",
|
||||
"chart.js": "4.4.4",
|
||||
"classnames": "2.5.1",
|
||||
@@ -71,9 +71,9 @@
|
||||
"react-router-dom": "5.2.0",
|
||||
"react-tabs": "4.3.0",
|
||||
"react-text-truncate": "0.19.0",
|
||||
"react-use-measure": "2.1.1",
|
||||
"react-virtualized": "9.21.1",
|
||||
"react-window": "1.8.10",
|
||||
"react-use-measure": "2.1.7",
|
||||
"react-virtualized": "9.22.6",
|
||||
"react-window": "1.8.11",
|
||||
"redux": "4.2.1",
|
||||
"redux-actions": "2.6.5",
|
||||
"redux-batched-actions": "0.5.0",
|
||||
@@ -84,13 +84,13 @@
|
||||
"typescript": "5.7.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "7.26.0",
|
||||
"@babel/eslint-parser": "7.25.9",
|
||||
"@babel/plugin-proposal-export-default-from": "7.25.9",
|
||||
"@babel/core": "7.27.1",
|
||||
"@babel/eslint-parser": "7.27.1",
|
||||
"@babel/plugin-proposal-export-default-from": "7.27.1",
|
||||
"@babel/plugin-syntax-dynamic-import": "7.8.3",
|
||||
"@babel/preset-env": "7.26.0",
|
||||
"@babel/preset-react": "7.26.3",
|
||||
"@babel/preset-typescript": "7.26.0",
|
||||
"@babel/preset-env": "7.27.2",
|
||||
"@babel/preset-react": "7.27.1",
|
||||
"@babel/preset-typescript": "7.27.1",
|
||||
"@types/lodash": "4.14.195",
|
||||
"@types/react-document-title": "2.0.10",
|
||||
"@types/react-router-dom": "5.3.3",
|
||||
@@ -104,7 +104,7 @@
|
||||
"babel-loader": "9.2.1",
|
||||
"babel-plugin-inline-classnames": "2.0.1",
|
||||
"babel-plugin-transform-react-remove-prop-types": "0.4.24",
|
||||
"core-js": "3.39.0",
|
||||
"core-js": "3.42.0",
|
||||
"css-loader": "6.7.3",
|
||||
"css-modules-typescript-loader": "4.0.1",
|
||||
"eslint": "8.57.1",
|
||||
|
@@ -99,13 +99,6 @@
|
||||
<RootNamespace Condition="'$(ProwlarrProject)'=='true'">$(MSBuildProjectName.Replace('Prowlarr','NzbDrone'))</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TestProject)'!='true'">
|
||||
<!-- Annotates .NET assemblies with repository information including SHA -->
|
||||
<!-- Sentry uses this to link directly to GitHub at the exact version/file/line -->
|
||||
<!-- This is built-in on .NET 8 and can be removed once the project is updated -->
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Sentry specific configuration: Only in Release mode -->
|
||||
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
|
||||
<!-- https://docs.sentry.io/platforms/dotnet/configuration/msbuild/ -->
|
||||
@@ -136,7 +129,7 @@
|
||||
<PackageReference Include="NunitXml.TestLogger" Version="3.0.131" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TestProject)'=='true' and '$(TargetFramework)'=='net6.0'">
|
||||
<ItemGroup Condition="'$(TestProject)'=='true' and '$(TargetFramework)'=='net8.0'">
|
||||
<PackageReference Include="coverlet.collector" Version="3.0.4-preview.27.ge7cb7c3b40" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -148,9 +141,9 @@
|
||||
<!-- Set up stylecop -->
|
||||
<ItemGroup Condition="'$(ProwlarrProject)'=='true' and '$(EnableAnalyzers)'!='false'">
|
||||
<!-- StyleCop analysis -->
|
||||
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
|
||||
<PackageReference Include="StyleCop.Analyzers.Unstable" Version="1.2.0.556">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<AdditionalFiles Include="$(SolutionDir)stylecop.json" />
|
||||
</ItemGroup>
|
||||
@@ -221,7 +214,7 @@
|
||||
<PropertyGroup Condition="'$(IsOSX)' == 'true' and
|
||||
'$(RuntimeIdentifier)' == ''">
|
||||
<_UsingDefaultRuntimeIdentifier>true</_UsingDefaultRuntimeIdentifier>
|
||||
<RuntimeIdentifier>osx-x64</RuntimeIdentifier>
|
||||
<RuntimeIdentifier>osx-$(Architecture)</RuntimeIdentifier>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
@@ -39,15 +39,16 @@ namespace NzbDrone.Automation.Test
|
||||
var service = ChromeDriverService.CreateDefaultService();
|
||||
|
||||
// Timeout as windows automation tests seem to take alot longer to get going
|
||||
driver = new ChromeDriver(service, options, new TimeSpan(0, 3, 0));
|
||||
driver = new ChromeDriver(service, options, TimeSpan.FromMinutes(3));
|
||||
|
||||
driver.Manage().Window.Size = new System.Drawing.Size(1920, 1080);
|
||||
driver.Manage().Window.FullScreen();
|
||||
|
||||
_runner = new NzbDroneRunner(LogManager.GetCurrentClassLogger(), null);
|
||||
_runner.KillAll();
|
||||
_runner.Start(true);
|
||||
|
||||
driver.Url = "http://localhost:9696";
|
||||
driver.Navigate().GoToUrl("http://localhost:9696");
|
||||
|
||||
var page = new PageBase(driver);
|
||||
page.WaitForNoSpinner();
|
||||
@@ -67,7 +68,7 @@ namespace NzbDrone.Automation.Test
|
||||
{
|
||||
try
|
||||
{
|
||||
var image = ((ITakesScreenshot)driver).GetScreenshot();
|
||||
var image = (driver as ITakesScreenshot).GetScreenshot();
|
||||
image.SaveAsFile($"./{name}_test_screenshot.png", ScreenshotImageFormat.Png);
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@@ -7,12 +7,11 @@ namespace NzbDrone.Automation.Test.PageModel
|
||||
{
|
||||
public class PageBase
|
||||
{
|
||||
private readonly WebDriver _driver;
|
||||
private readonly IWebDriver _driver;
|
||||
|
||||
public PageBase(WebDriver driver)
|
||||
public PageBase(IWebDriver driver)
|
||||
{
|
||||
_driver = driver;
|
||||
driver.Manage().Window.Maximize();
|
||||
}
|
||||
|
||||
public IWebElement FindByClass(string className, int timeout = 5)
|
||||
|
@@ -1,10 +1,10 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net6.0</TargetFrameworks>
|
||||
<TargetFrameworks>net8.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Selenium.Support" Version="4.1.0" />
|
||||
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="99.0.4844.5100" />
|
||||
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="134.0.6998.16500" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\NzbDrone.Test.Common\Prowlarr.Test.Common.csproj" />
|
||||
|
@@ -10,13 +10,13 @@ namespace NzbDrone.Common.Test.EnvironmentInfo
|
||||
[Test]
|
||||
public void should_return_version()
|
||||
{
|
||||
BuildInfo.Version.Major.Should().BeOneOf(0, 1, 10);
|
||||
BuildInfo.Version.Major.Should().BeOneOf(0, 2, 10);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_get_branch()
|
||||
{
|
||||
BuildInfo.Branch.Should().NotBe("unknow");
|
||||
BuildInfo.Branch.Should().NotBe("unknown");
|
||||
BuildInfo.Branch.Should().NotBeNullOrWhiteSpace();
|
||||
}
|
||||
}
|
||||
|
@@ -35,7 +35,7 @@ namespace NzbDrone.Common.Test.Http
|
||||
private string _httpBinHost;
|
||||
private string _httpBinHost2;
|
||||
|
||||
private System.Net.Http.HttpClient _httpClient = new ();
|
||||
private System.Net.Http.HttpClient _httpClient = new();
|
||||
|
||||
[OneTimeSetUp]
|
||||
public void FixtureSetUp()
|
||||
|
@@ -16,6 +16,8 @@ namespace NzbDrone.Common.Test.Http
|
||||
[TestCase("Readarr/1.0.0.2300 (ubuntu 20.04)", "Readarr")]
|
||||
[TestCase("Sonarr/3.0.6.9999 (ubuntu 20.04)", "Sonarr")]
|
||||
[TestCase("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36", "Other")]
|
||||
[TestCase("appbrr", "appbrr")]
|
||||
[TestCase(" appbrr ", "appbrr")]
|
||||
public void should_parse_user_agent(string userAgent, string parsedAgent)
|
||||
{
|
||||
UserAgentParser.ParseSource(userAgent).Should().Be(parsedAgent);
|
||||
|
@@ -30,6 +30,7 @@ namespace NzbDrone.Common.Test.InstrumentationTests
|
||||
[TestCase(@"https://anthelion.me/api.php?api_key=2b51db35e1910123321025a12b9933d2&o=json&t=movie&q=&tmdb=&imdb=&cat=&limit=100&offset=0")]
|
||||
[TestCase(@"https://avistaz.to/api/v1/jackett/auth: username=mySecret&password=mySecret&pid=mySecret")]
|
||||
[TestCase(@"https://www.sharewood.tv/api/2b51db35e1910123321025a12b9933d2/last-torrents")]
|
||||
[TestCase(@"https://example.org/rss/torrents?rsskey=2b51db35e1910123321025a12b9933d2&search=")]
|
||||
|
||||
// Indexer and Download Client Responses
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net6.0</TargetFrameworks>
|
||||
<TargetFrameworks>net8.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\NzbDrone.Host\Prowlarr.Host.csproj" />
|
||||
|
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace NzbDrone.Common.Disk
|
||||
{
|
||||
@@ -24,10 +23,5 @@ namespace NzbDrone.Common.Disk
|
||||
: base(message, innerException)
|
||||
{
|
||||
}
|
||||
|
||||
protected DestinationAlreadyExistsException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -295,7 +295,7 @@ namespace NzbDrone.Common.Disk
|
||||
return _path.Split(new char[] { '\\', '/' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
}
|
||||
|
||||
public static OsPath Null => new (null);
|
||||
public static OsPath Null => new(null);
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
|
@@ -75,6 +75,17 @@ namespace NzbDrone.Common.EnvironmentInfo
|
||||
{
|
||||
try
|
||||
{
|
||||
if (OsInfo.IsOsx)
|
||||
{
|
||||
var userAppDataFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile, Environment.SpecialFolderOption.DoNotVerify), ".config", "Prowlarr");
|
||||
|
||||
if (_diskProvider.FolderExists(userAppDataFolder) && !_diskProvider.FileExists(_appFolderInfo.GetConfigPath()))
|
||||
{
|
||||
_diskTransferService.MirrorFolder(userAppDataFolder, _appFolderInfo.AppDataFolder);
|
||||
_diskProvider.DeleteFolder(userAppDataFolder, true);
|
||||
}
|
||||
}
|
||||
|
||||
var oldDbFile = Path.Combine(_appFolderInfo.AppDataFolder, "nzbdrone.db");
|
||||
|
||||
if (_startupContext.Args.ContainsKey(StartupContext.APPDATA))
|
||||
@@ -115,7 +126,7 @@ namespace NzbDrone.Common.EnvironmentInfo
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Debug(ex, ex.Message);
|
||||
throw new ProwlarrStartupException("Unable to migrate DB from nzbdrone.db to {0}. Migrate manually", _appFolderInfo.GetDatabase());
|
||||
throw new ProwlarrStartupException(ex, "Unable to migrate DB from nzbdrone.db to {0}. Migrate manually", _appFolderInfo.GetDatabase());
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -15,7 +15,7 @@ namespace NzbDrone.Common.EnvironmentInfo
|
||||
|
||||
var attributes = assembly.GetCustomAttributes(true);
|
||||
|
||||
Branch = "unknow";
|
||||
Branch = "unknown";
|
||||
|
||||
var config = attributes.OfType<AssemblyConfigurationAttribute>().FirstOrDefault();
|
||||
if (config != null)
|
||||
|
@@ -31,7 +31,7 @@ namespace NzbDrone.Common.Extensions
|
||||
}
|
||||
|
||||
public static IDictionary<TNewKey, TNewValue> SelectDictionary<TKey, TValue, TNewKey, TNewValue>(this IDictionary<TKey, TValue> dictionary,
|
||||
Func<KeyValuePair<TKey, TValue>, ValueTuple<TNewKey, TNewValue>> selection)
|
||||
Func<KeyValuePair<TKey, TValue>, (TNewKey Item1, TNewValue Item2)> selection)
|
||||
{
|
||||
return dictionary.Select(selection).ToDictionary(t => t.Item1, t => t.Item2);
|
||||
}
|
||||
|
@@ -9,7 +9,7 @@ namespace NzbDrone.Common.Http
|
||||
{
|
||||
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie
|
||||
// NOTE: we are not checking non-ascii characters and we should
|
||||
private static readonly Regex CookieRegex = new (@"([^\(\)<>@,;:\\""/\[\]\?=\{\}\s]+)=([^,;\\""\s]+)");
|
||||
private static readonly Regex CookieRegex = new(@"([^\(\)<>@,;:\\""/\[\]\?=\{\}\s]+)=([^,;\\""\s]+)");
|
||||
private static readonly string[] FilterProps = { "COMMENT", "COMMENTURL", "DISCORD", "DOMAIN", "EXPIRES", "MAX-AGE", "PATH", "PORT", "SECURE", "VERSION", "HTTPONLY", "SAMESITE" };
|
||||
private static readonly char[] InvalidKeyChars = { '(', ')', '<', '>', '@', ',', ';', ':', '\\', '"', '/', '[', ']', '?', '=', '{', '}', ' ', '\t', '\n' };
|
||||
private static readonly char[] InvalidValueChars = { '"', ',', ';', '\\', ' ', '\t', '\n' };
|
||||
|
@@ -167,7 +167,7 @@ namespace NzbDrone.Common.Http.Dispatchers
|
||||
}
|
||||
catch (OperationCanceledException ex) when (cts.IsCancellationRequested)
|
||||
{
|
||||
throw new WebException("Http request timed out", ex.InnerException, WebExceptionStatus.Timeout, null);
|
||||
throw new WebException("Http request timed out", ex, WebExceptionStatus.Timeout, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -97,7 +97,7 @@ namespace NzbDrone.Common.Http
|
||||
// Save to add to final response
|
||||
var responseCookies = response.Cookies;
|
||||
|
||||
// Update cookiecontainer for next request with any cookies recieved on last request
|
||||
// Update cookie container for next request with any cookies received on last request
|
||||
var responseContainer = HandleRedirectCookies(request, response);
|
||||
|
||||
response = await ExecuteRequestAsync(request, responseContainer);
|
||||
|
@@ -9,7 +9,7 @@ namespace NzbDrone.Common.Http
|
||||
{
|
||||
public class HttpResponse
|
||||
{
|
||||
private static readonly Regex RegexRefresh = new ("^(.*?url)=(.*?)(?:;|$)", RegexOptions.Compiled);
|
||||
private static readonly Regex RegexRefresh = new("^(.*?url)=(.*?)(?:;|$)", RegexOptions.Compiled);
|
||||
|
||||
public HttpResponse(HttpRequest request, HttpHeader headers, CookieCollection cookies, byte[] binaryData, long elapsedTime = 0, HttpStatusCode statusCode = HttpStatusCode.OK, Version version = null)
|
||||
{
|
||||
|
@@ -1,15 +1,16 @@
|
||||
using System;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace NzbDrone.Common.Http
|
||||
{
|
||||
public static class UserAgentParser
|
||||
{
|
||||
private static readonly Regex AppSourceRegex = new Regex(@"(?<agent>[a-z0-9]*)\/.*(?:\(.*\))?",
|
||||
private static readonly Regex AppSourceRegex = new(@"^(?<agent>[a-z0-9]+)(?:\/.+(?:\(.*\))?|$)",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||
|
||||
public static string SimplifyUserAgent(string userAgent)
|
||||
{
|
||||
if (userAgent == null || userAgent.StartsWith("Mozilla/5.0"))
|
||||
if (userAgent == null || userAgent.StartsWith("Mozilla/5.0", StringComparison.Ordinal))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -19,14 +20,9 @@ namespace NzbDrone.Common.Http
|
||||
|
||||
public static string ParseSource(string userAgent)
|
||||
{
|
||||
var match = AppSourceRegex.Match(SimplifyUserAgent(userAgent) ?? string.Empty);
|
||||
var match = AppSourceRegex.Match(SimplifyUserAgent(userAgent?.Trim()) ?? string.Empty);
|
||||
|
||||
if (match.Groups["agent"].Success)
|
||||
{
|
||||
return match.Groups["agent"].Value;
|
||||
}
|
||||
|
||||
return "Other";
|
||||
return match.Groups["agent"].Success ? match.Groups["agent"].Value : "Other";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -10,64 +10,64 @@ namespace NzbDrone.Common.Instrumentation
|
||||
private static readonly Regex[] CleansingRules =
|
||||
{
|
||||
// Url
|
||||
new (@"(?<=[?&: ;])(apikey|api_key|(?:(?:access|api)[-_]?)?token|pass(?:key|wd)?|auth|authkey|user|u?id|api|[a-z_]*apikey|account|pid|pwd)=(?<secret>[^&=""]+?)(?=[ ""&=]|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"(?<=[?& ;])[^=]*?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"rss(24h)?\.torrentleech\.org/(?!rss)(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"torrentleech\.org/rss/download/[0-9]+/(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"iptorrents\.com/[/a-z0-9?&;]*?(?:[?&;](u|tp)=(?<secret>[^&=;]+?))+(?= |;|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"/fetch/[a-z0-9]{32}/(?<secret>[a-z0-9]{32})", RegexOptions.Compiled),
|
||||
new (@"getnzb.*?(?<=\?|&)(r)=(?<secret>[^&=]+?)(?= |&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"\b(\w*)?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"(?<=authkey = "")(?<secret>[^&=]+?)(?="")", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"(?<=beyond-hd\.[a-z]+/api/torrents/)(?<secret>[^&=][a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"(?<=beyond-hd\.[a-z]+/torrent/download/[\w\d-]+[.]\d+[.])(?<secret>[a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"(?:sharewood)\.[a-z]{2,3}/api/(?<secret>[a-z0-9]{16,})/", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"(?<=[?&: ;])(apikey|api_key|(?:(?:access|api)[-_]?)?token|pass(?:key|wd)?|auth|authkey|rsskey|user|u?id|api|[a-z_]*apikey|account|pid|pwd)=(?<secret>[^&=""]+?)(?=[ ""&=]|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"(?<=[?& ;])[^=]*?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"rss(24h)?\.torrentleech\.org/(?!rss)(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"torrentleech\.org/rss/download/[0-9]+/(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"iptorrents\.com/[/a-z0-9?&;]*?(?:[?&;](u|tp)=(?<secret>[^&=;]+?))+(?= |;|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"/fetch/[a-z0-9]{32}/(?<secret>[a-z0-9]{32})", RegexOptions.Compiled),
|
||||
new(@"getnzb.*?(?<=\?|&)(r)=(?<secret>[^&=]+?)(?= |&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"\b(\w*)?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"(?<=authkey = "")(?<secret>[^&=]+?)(?="")", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"(?<=beyond-hd\.[a-z]+/api/torrents/)(?<secret>[^&=][a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"(?<=beyond-hd\.[a-z]+/torrent/download/[\w\d-]+[.]\d+[.])(?<secret>[a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"(?:sharewood)\.[a-z]{2,3}/api/(?<secret>[a-z0-9]{16,})/", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// UNIT3D
|
||||
new (@"(?<=[a-z0-9-]+\.[a-z]+/torrent/download/\d+\.)(?<secret>[^&=][a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"(?<=[a-z0-9-]+\.[a-z]+/torrent/download/\d+\.)(?<secret>[^&=][a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// Path
|
||||
new (@"""C:\\Users\\(?<secret>[^\""]+?)(\\|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"""/(home|Users)/(?<secret>[^/""]+?)(/|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"""C:\\Users\\(?<secret>[^\""]+?)(\\|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"""/(home|Users)/(?<secret>[^/""]+?)(/|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// Trackers Announce Keys; Designed for Qbit Json; should work for all in theory
|
||||
new (@"announce(\.php)?(/|%2f|%3fpasskey%3d)(?<secret>[a-z0-9]{16,})|(?<secret>[a-z0-9]{16,})(/|%2f)announce", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"announce(\.php)?(/|%2f|%3fpasskey%3d)(?<secret>[a-z0-9]{16,})|(?<secret>[a-z0-9]{16,})(/|%2f)announce", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// NzbGet
|
||||
new (@"""Name""\s*:\s*""[^""]*(username|password)""\s*,\s*""Value""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"""Name""\s*:\s*""[^""]*(username|password)""\s*,\s*""Value""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// Sabnzbd
|
||||
new (@"""[^""]*(username|password|api_?key|nzb_key)""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"""email_(account|to|from|pwd)""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"""[^""]*(username|password|api_?key|nzb_key)""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"""email_(account|to|from|pwd)""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// uTorrent
|
||||
new (@"\[""[a-z._]*(username|password)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"\[""(boss_key|boss_key_salt|proxy\.proxy)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"\[""[a-z._]*(username|password)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"\[""(boss_key|boss_key_salt|proxy\.proxy)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// Deluge
|
||||
new (@"auth.login\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"auth.login\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// BroadcastheNet (;torrent_pass|torrents_notify_ is for MTV)
|
||||
new (@"""?method""?\s*:\s*""(getTorrents)"",\s*""?params""?\s*:\s*\[\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"getTorrents\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"(?<=\?|&|;|=)(authkey|torrent_pass|torrents_notify)[_=](?<secret>[^&=]+?)(?=""|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"""?method""?\s*:\s*""(getTorrents)"",\s*""?params""?\s*:\s*\[\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"getTorrents\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"(?<=\?|&|;|=)(authkey|torrent_pass|torrents_notify)[_=](?<secret>[^&=]+?)(?=""|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// Plex
|
||||
new (@"(?<=\?|&)(X-Plex-Client-Identifier|X-Plex-Token)=(?<secret>[^&=]+?)(?= |&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"(?<=\?|&)(X-Plex-Client-Identifier|X-Plex-Token)=(?<secret>[^&=]+?)(?= |&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// Indexer Responses
|
||||
new (@"(?:avistaz|exoticaz|cinemaz|privatehd)\.[a-z]{2,3}/rss/download/(?<secret>[^&=]+?)/(?<secret>[^&=]+?)\.torrent", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"(?:animebytes)\.[a-z]{2,3}/torrent/[0-9]+/download/(?<secret>[^&=]+?)[""]", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new (@"""(info_hash|token|((pass|rss)[- _]?key))"":""(?<secret>[^&=]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"(?:avistaz|exoticaz|cinemaz|privatehd)\.[a-z]{2,3}/rss/download/(?<secret>[^&=]+?)/(?<secret>[^&=]+?)\.torrent", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"(?:animebytes)\.[a-z]{2,3}/torrent/[0-9]+/download/(?<secret>[^&=]+?)[""]", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"""(info_hash|token|((pass|rss)[- _]?key))"":""(?<secret>[^&=]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// Applications
|
||||
new (@"""name"":""apikey"",""value"":""(?<secret>[^&=]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new(@"""name"":""apikey"",""value"":""(?<secret>[^&=]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// Discord
|
||||
new (@"discord.com/api/webhooks/((?<secret>[\w-]+)/)?(?<secret>[\w-]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase)
|
||||
new(@"discord.com/api/webhooks/((?<secret>[\w-]+)/)?(?<secret>[\w-]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase)
|
||||
};
|
||||
|
||||
private static readonly Regex CleanseRemoteIPRegex = new (@"(?:Auth-\w+(?<!Failure|Unauthorized) ip|from) (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})", RegexOptions.Compiled);
|
||||
private static readonly Regex CleanseRemoteIPRegex = new(@"(?:Auth-\w+(?<!Failure|Unauthorized) ip|from) (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})", RegexOptions.Compiled);
|
||||
|
||||
public static string Cleanse(string message)
|
||||
{
|
||||
|
@@ -0,0 +1,21 @@
|
||||
using System.Text;
|
||||
using NLog;
|
||||
using NLog.Layouts.ClefJsonLayout;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
|
||||
namespace NzbDrone.Common.Instrumentation;
|
||||
|
||||
public class CleansingClefLogLayout : CompactJsonLayout
|
||||
{
|
||||
protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
|
||||
{
|
||||
base.RenderFormattedMessage(logEvent, target);
|
||||
|
||||
if (RuntimeInfo.IsProduction)
|
||||
{
|
||||
var result = CleanseLogMessage.Cleanse(target.ToString());
|
||||
target.Clear();
|
||||
target.Append(result);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,26 @@
|
||||
using System.Text;
|
||||
using NLog;
|
||||
using NLog.Layouts;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
|
||||
namespace NzbDrone.Common.Instrumentation;
|
||||
|
||||
public class CleansingConsoleLogLayout : SimpleLayout
|
||||
{
|
||||
public CleansingConsoleLogLayout(string format)
|
||||
: base(format)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
|
||||
{
|
||||
base.RenderFormattedMessage(logEvent, target);
|
||||
|
||||
if (RuntimeInfo.IsProduction)
|
||||
{
|
||||
var result = CleanseLogMessage.Cleanse(target.ToString());
|
||||
target.Clear();
|
||||
target.Append(result);
|
||||
}
|
||||
}
|
||||
}
|
@@ -4,7 +4,7 @@ using NLog.Targets;
|
||||
|
||||
namespace NzbDrone.Common.Instrumentation
|
||||
{
|
||||
public class NzbDroneFileTarget : FileTarget
|
||||
public class CleansingFileTarget : FileTarget
|
||||
{
|
||||
protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
|
||||
{
|
@@ -4,27 +4,27 @@ namespace NzbDrone.Common.Instrumentation.Extensions
|
||||
{
|
||||
public static class LoggerExtensions
|
||||
{
|
||||
[MessageTemplateFormatMethod("message")]
|
||||
public static void ProgressInfo(this Logger logger, string message, params object[] args)
|
||||
{
|
||||
var formattedMessage = string.Format(message, args);
|
||||
LogProgressMessage(logger, LogLevel.Info, formattedMessage);
|
||||
LogProgressMessage(logger, LogLevel.Info, message, args);
|
||||
}
|
||||
|
||||
[MessageTemplateFormatMethod("message")]
|
||||
public static void ProgressDebug(this Logger logger, string message, params object[] args)
|
||||
{
|
||||
var formattedMessage = string.Format(message, args);
|
||||
LogProgressMessage(logger, LogLevel.Debug, formattedMessage);
|
||||
LogProgressMessage(logger, LogLevel.Debug, message, args);
|
||||
}
|
||||
|
||||
[MessageTemplateFormatMethod("message")]
|
||||
public static void ProgressTrace(this Logger logger, string message, params object[] args)
|
||||
{
|
||||
var formattedMessage = string.Format(message, args);
|
||||
LogProgressMessage(logger, LogLevel.Trace, formattedMessage);
|
||||
LogProgressMessage(logger, LogLevel.Trace, message, args);
|
||||
}
|
||||
|
||||
private static void LogProgressMessage(Logger logger, LogLevel level, string message)
|
||||
private static void LogProgressMessage(Logger logger, LogLevel level, string message, object[] parameters)
|
||||
{
|
||||
var logEvent = new LogEventInfo(level, logger.Name, message);
|
||||
var logEvent = new LogEventInfo(level, logger.Name, null, message, parameters);
|
||||
logEvent.Properties.Add("Status", "");
|
||||
|
||||
logger.Log(logEvent);
|
||||
|
@@ -3,7 +3,6 @@ using System.Diagnostics;
|
||||
using System.IO;
|
||||
using NLog;
|
||||
using NLog.Config;
|
||||
using NLog.Layouts.ClefJsonLayout;
|
||||
using NLog.Targets;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Extensions;
|
||||
@@ -13,9 +12,11 @@ namespace NzbDrone.Common.Instrumentation
|
||||
{
|
||||
public static class NzbDroneLogger
|
||||
{
|
||||
private const string FILE_LOG_LAYOUT = @"${date:format=yyyy-MM-dd HH\:mm\:ss.f}|${level}|${logger}|${message}${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
|
||||
public const string ConsoleLogLayout = "[${level}] ${logger}: ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
|
||||
public static CompactJsonLayout ClefLogLayout = new CompactJsonLayout();
|
||||
private const string FileLogLayout = @"${date:format=yyyy-MM-dd HH\:mm\:ss.f}|${level}|${logger}|${message}${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
|
||||
private const string ConsoleFormat = "[${level}] ${logger}: ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
|
||||
|
||||
private static readonly CleansingConsoleLogLayout CleansingConsoleLayout = new(ConsoleFormat);
|
||||
private static readonly CleansingClefLogLayout ClefLogLayout = new();
|
||||
|
||||
private static bool _isConfigured;
|
||||
|
||||
@@ -119,11 +120,7 @@ namespace NzbDrone.Common.Instrumentation
|
||||
? formatEnumValue
|
||||
: ConsoleLogFormat.Standard;
|
||||
|
||||
coloredConsoleTarget.Layout = logFormat switch
|
||||
{
|
||||
ConsoleLogFormat.Clef => ClefLogLayout,
|
||||
_ => ConsoleLogLayout
|
||||
};
|
||||
ConfigureConsoleLayout(coloredConsoleTarget, logFormat);
|
||||
|
||||
var loggingRule = new LoggingRule("*", level, coloredConsoleTarget);
|
||||
|
||||
@@ -140,7 +137,7 @@ namespace NzbDrone.Common.Instrumentation
|
||||
|
||||
private static void RegisterAppFile(IAppFolderInfo appFolderInfo, string name, string fileName, int maxArchiveFiles, LogLevel minLogLevel)
|
||||
{
|
||||
var fileTarget = new NzbDroneFileTarget();
|
||||
var fileTarget = new CleansingFileTarget();
|
||||
|
||||
fileTarget.Name = name;
|
||||
fileTarget.FileName = Path.Combine(appFolderInfo.GetLogFolder(), fileName);
|
||||
@@ -153,7 +150,7 @@ namespace NzbDrone.Common.Instrumentation
|
||||
fileTarget.MaxArchiveFiles = maxArchiveFiles;
|
||||
fileTarget.EnableFileDelete = true;
|
||||
fileTarget.ArchiveNumbering = ArchiveNumberingMode.Rolling;
|
||||
fileTarget.Layout = FILE_LOG_LAYOUT;
|
||||
fileTarget.Layout = FileLogLayout;
|
||||
|
||||
var loggingRule = new LoggingRule("*", minLogLevel, fileTarget);
|
||||
|
||||
@@ -172,7 +169,7 @@ namespace NzbDrone.Common.Instrumentation
|
||||
fileTarget.ConcurrentWrites = false;
|
||||
fileTarget.ConcurrentWriteAttemptDelay = 50;
|
||||
fileTarget.ConcurrentWriteAttempts = 100;
|
||||
fileTarget.Layout = FILE_LOG_LAYOUT;
|
||||
fileTarget.Layout = FileLogLayout;
|
||||
|
||||
var loggingRule = new LoggingRule("*", LogLevel.Trace, fileTarget);
|
||||
|
||||
@@ -217,6 +214,15 @@ namespace NzbDrone.Common.Instrumentation
|
||||
{
|
||||
return GetLogger(obj.GetType());
|
||||
}
|
||||
|
||||
public static void ConfigureConsoleLayout(ColoredConsoleTarget target, ConsoleLogFormat format)
|
||||
{
|
||||
target.Layout = format switch
|
||||
{
|
||||
ConsoleLogFormat.Clef => NzbDroneLogger.ClefLogLayout,
|
||||
_ => NzbDroneLogger.CleansingConsoleLayout
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public enum ConsoleLogFormat
|
||||
|
@@ -6,6 +6,7 @@ using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NLog;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Model;
|
||||
@@ -117,7 +118,9 @@ namespace NzbDrone.Common.Processes
|
||||
UseShellExecute = false,
|
||||
RedirectStandardError = true,
|
||||
RedirectStandardOutput = true,
|
||||
RedirectStandardInput = true
|
||||
RedirectStandardInput = true,
|
||||
StandardOutputEncoding = Encoding.UTF8,
|
||||
StandardErrorEncoding = Encoding.UTF8
|
||||
};
|
||||
|
||||
if (environmentVariables != null)
|
||||
|
@@ -1,28 +1,28 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net6.0</TargetFrameworks>
|
||||
<TargetFrameworks>net8.0</TargetFrameworks>
|
||||
<DefineConstants Condition="'$(RuntimeIdentifier)' == 'linux-musl-x64' or '$(RuntimeIdentifier)' == 'linux-musl-arm64'">ISMUSL</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="DryIoc.dll" Version="5.4.3" />
|
||||
<PackageReference Include="IPAddressRange" Version="6.1.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="6.0.2" />
|
||||
<PackageReference Include="IPAddressRange" Version="6.2.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="8.0.1" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="NLog" Version="5.3.3" />
|
||||
<PackageReference Include="NLog.Layouts.ClefJsonLayout" Version="1.0.0" />
|
||||
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.12" />
|
||||
<PackageReference Include="Npgsql" Version="7.0.9" />
|
||||
<PackageReference Include="NLog" Version="5.4.0" />
|
||||
<PackageReference Include="NLog.Layouts.ClefJsonLayout" Version="1.0.3" />
|
||||
<PackageReference Include="NLog.Extensions.Logging" Version="5.4.0" />
|
||||
<PackageReference Include="Npgsql" Version="9.0.3" />
|
||||
<PackageReference Include="Sentry" Version="4.0.2" />
|
||||
<PackageReference Include="NLog.Targets.Syslog" Version="7.0.0" />
|
||||
<PackageReference Include="SharpZipLib" Version="1.4.2" />
|
||||
<PackageReference Include="System.Text.Json" Version="6.0.10" />
|
||||
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
|
||||
<PackageReference Include="System.Text.Json" Version="8.0.5" />
|
||||
<PackageReference Include="System.ValueTuple" Version="4.6.1" />
|
||||
<PackageReference Include="System.Data.SQLite.Core.Servarr" Version="1.0.115.5-18" />
|
||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="6.0.1" />
|
||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.1" />
|
||||
<PackageReference Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
|
||||
<PackageReference Include="System.Runtime.Loader" Version="4.3.0" />
|
||||
<PackageReference Include="System.ServiceProcess.ServiceController" Version="6.0.1" />
|
||||
<PackageReference Include="System.ServiceProcess.ServiceController" Version="8.0.1" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Update="EnsureThat\Resources\ExceptionMessages.Designer.cs">
|
||||
|
@@ -94,7 +94,8 @@ namespace NzbDrone.Common.TPL
|
||||
{
|
||||
_currentThreadIsProcessingItems = false;
|
||||
}
|
||||
}, null);
|
||||
},
|
||||
null);
|
||||
}
|
||||
|
||||
/// <summary>Attempts to execute the specified task on the current thread.</summary>
|
||||
|
@@ -20,7 +20,8 @@ namespace NzbDrone.Common.TPL
|
||||
Logger.Error(exception, "Task Error");
|
||||
}
|
||||
}
|
||||
}, TaskContinuationOptions.OnlyOnFaulted);
|
||||
},
|
||||
TaskContinuationOptions.OnlyOnFaulted);
|
||||
|
||||
return task;
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFrameworks>net6.0</TargetFrameworks>
|
||||
<TargetFrameworks>net8.0</TargetFrameworks>
|
||||
|
||||
<ApplicationIcon>..\NzbDrone.Host\Prowlarr.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
|
@@ -149,7 +149,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 23:26:21"
|
||||
"created_at": "2021-11-14 23:26:21",
|
||||
"created_at_iso": "2021-11-14T23:26:21+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187239,
|
||||
@@ -195,7 +196,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 23:11:49"
|
||||
"created_at": "2021-11-14 23:11:49",
|
||||
"created_at_iso": "2021-11-14T23:11:49+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187238,
|
||||
@@ -241,7 +243,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 23:09:11"
|
||||
"created_at": "2021-11-14 23:09:11",
|
||||
"created_at_iso": "2021-11-14T23:09:11+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187237,
|
||||
@@ -287,7 +290,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 23:05:30"
|
||||
"created_at": "2021-11-14 23:05:30",
|
||||
"created_at_iso": "2021-11-14T23:05:30+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187236,
|
||||
@@ -333,7 +337,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 22:59:26"
|
||||
"created_at": "2021-11-14 22:59:26",
|
||||
"created_at_iso": "2021-11-14T22:59:26+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187234,
|
||||
@@ -379,7 +384,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 22:38:33"
|
||||
"created_at": "2021-11-14 22:38:33",
|
||||
"created_at_iso": "2021-11-14T22:38:33+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187233,
|
||||
@@ -425,7 +431,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 22:35:13"
|
||||
"created_at": "2021-11-14 22:35:13",
|
||||
"created_at_iso": "2021-11-14T22:35:13+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187231,
|
||||
@@ -452,7 +459,7 @@
|
||||
"imdb": "tt1143942",
|
||||
"tmdb": "83665",
|
||||
"tvdb": null,
|
||||
"title": "Kaiky\u00f4",
|
||||
"title": "Kaikyô",
|
||||
"tv_season": 1,
|
||||
"tv_episode": null,
|
||||
"tv_full_season": true,
|
||||
@@ -471,7 +478,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 18:02:28"
|
||||
"created_at": "2021-11-14 18:02:28",
|
||||
"created_at_iso": "2021-11-14T18:02:28+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187229,
|
||||
@@ -517,7 +525,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 15:41:55"
|
||||
"created_at": "2021-11-14 15:41:55",
|
||||
"created_at_iso": "2021-11-14T15:41:55+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187225,
|
||||
@@ -583,7 +592,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 13:49:11"
|
||||
"created_at": "2021-11-14 13:49:11",
|
||||
"created_at_iso": "2021-11-14T13:49:11+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187224,
|
||||
@@ -633,7 +643,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 13:15:51"
|
||||
"created_at": "2021-11-14 13:15:51",
|
||||
"created_at_iso": "2021-11-14T13:15:51+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187223,
|
||||
@@ -679,7 +690,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 12:56:09"
|
||||
"created_at": "2021-11-14 12:56:09",
|
||||
"created_at_iso": "2021-11-14T12:56:09+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187221,
|
||||
@@ -720,7 +732,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 11:47:24"
|
||||
"created_at": "2021-11-14 11:47:24",
|
||||
"created_at_iso": "2021-11-14T11:47:24+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187219,
|
||||
@@ -798,7 +811,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 10:59:37"
|
||||
"created_at": "2021-11-14 10:59:37",
|
||||
"created_at_iso": "2021-11-14T10:59:37+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187218,
|
||||
@@ -876,7 +890,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 10:58:36"
|
||||
"created_at": "2021-11-14 10:58:36",
|
||||
"created_at_iso": "2021-11-14T10:58:36+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187216,
|
||||
@@ -917,7 +932,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 10:31:45"
|
||||
"created_at": "2021-11-14 10:31:45",
|
||||
"created_at_iso": "2021-11-14T10:31:45+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187215,
|
||||
@@ -967,7 +983,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 10:31:44"
|
||||
"created_at": "2021-11-14 10:31:44",
|
||||
"created_at_iso": "2021-11-14T10:31:44+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187214,
|
||||
@@ -1008,7 +1025,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 10:31:43"
|
||||
"created_at": "2021-11-14 10:31:43",
|
||||
"created_at_iso": "2021-11-14T10:31:43+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187213,
|
||||
@@ -1049,7 +1067,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 10:31:42"
|
||||
"created_at": "2021-11-14 10:31:42",
|
||||
"created_at_iso": "2021-11-14T10:31:42+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187212,
|
||||
@@ -1095,7 +1114,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 10:28:11"
|
||||
"created_at": "2021-11-14 10:28:11",
|
||||
"created_at_iso": "2021-11-14T10:28:11+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187210,
|
||||
@@ -1136,7 +1156,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 10:28:10"
|
||||
"created_at": "2021-11-14 10:28:10",
|
||||
"created_at_iso": "2021-11-14T10:28:10+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187211,
|
||||
@@ -1182,7 +1203,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 10:28:10"
|
||||
"created_at": "2021-11-14 10:28:10",
|
||||
"created_at_iso": "2021-11-14T10:28:10+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187209,
|
||||
@@ -1223,7 +1245,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 10:28:09"
|
||||
"created_at": "2021-11-14 10:28:09",
|
||||
"created_at_iso": "2021-11-14T10:28:09+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187208,
|
||||
@@ -1269,7 +1292,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 09:24:47"
|
||||
"created_at": "2021-11-14 09:24:47",
|
||||
"created_at_iso": "2021-11-14T09:24:47+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187207,
|
||||
@@ -1319,7 +1343,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 09:24:46"
|
||||
"created_at": "2021-11-14 09:24:46",
|
||||
"created_at_iso": "2021-11-14T09:24:46+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187206,
|
||||
@@ -1360,7 +1385,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 09:24:45"
|
||||
"created_at": "2021-11-14 09:24:45",
|
||||
"created_at_iso": "2021-11-14T09:24:45+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187205,
|
||||
@@ -1401,7 +1427,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 09:24:44"
|
||||
"created_at": "2021-11-14 09:24:44",
|
||||
"created_at_iso": "2021-11-14T09:24:44+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187204,
|
||||
@@ -1447,7 +1474,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 09:20:56"
|
||||
"created_at": "2021-11-14 09:20:56",
|
||||
"created_at_iso": "2021-11-14T09:20:56+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187203,
|
||||
@@ -1488,7 +1516,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 09:20:55"
|
||||
"created_at": "2021-11-14 09:20:55",
|
||||
"created_at_iso": "2021-11-14T09:20:55+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187202,
|
||||
@@ -1529,7 +1558,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 09:20:54"
|
||||
"created_at": "2021-11-14 09:20:54",
|
||||
"created_at_iso": "2021-11-14T09:20:54+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187201,
|
||||
@@ -1570,7 +1600,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 09:20:53"
|
||||
"created_at": "2021-11-14 09:20:53",
|
||||
"created_at_iso": "2021-11-14T09:20:53+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187200,
|
||||
@@ -1611,7 +1642,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 09:17:35"
|
||||
"created_at": "2021-11-14 09:17:35",
|
||||
"created_at_iso": "2021-11-14T09:17:35+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187199,
|
||||
@@ -1652,7 +1684,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 09:17:34"
|
||||
"created_at": "2021-11-14 09:17:34",
|
||||
"created_at_iso": "2021-11-14T09:17:34+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187197,
|
||||
@@ -1718,7 +1751,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 09:14:24"
|
||||
"created_at": "2021-11-14 09:14:24",
|
||||
"created_at_iso": "2021-11-14T09:14:24+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187196,
|
||||
@@ -1764,7 +1798,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 09:08:42"
|
||||
"created_at": "2021-11-14 09:08:42",
|
||||
"created_at_iso": "2021-11-14T09:08:42+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187195,
|
||||
@@ -1805,7 +1840,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 09:08:29"
|
||||
"created_at": "2021-11-14 09:08:29",
|
||||
"created_at_iso": "2021-11-14T09:08:29+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187191,
|
||||
@@ -1814,7 +1850,7 @@
|
||||
"type_id": 2,
|
||||
"type": "TV-Show",
|
||||
"info_hash": "(removed)",
|
||||
"file_name": "Beware of Your Bosom Buddies \u78a7\u8840\u6d17\u94f6\u67aa (1984) 720p Complete WEB-DL AAC H.264-CARMEE",
|
||||
"file_name": "Beware of Your Bosom Buddies 碧血洗银枪 (1984) 720p Complete WEB-DL AAC H.264-CARMEE",
|
||||
"file_size": 4075094335,
|
||||
"file_count": 5,
|
||||
"seed": 7,
|
||||
@@ -1832,7 +1868,7 @@
|
||||
"imdb": null,
|
||||
"tmdb": "107936",
|
||||
"tvdb": null,
|
||||
"title": "\u78a7\u8840\u6d17\u94f6\u67aa",
|
||||
"title": "碧血洗银枪",
|
||||
"tv_season": null,
|
||||
"tv_episode": null,
|
||||
"tv_full_season": false,
|
||||
@@ -1859,7 +1895,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 07:34:25"
|
||||
"created_at": "2021-11-14 07:34:25",
|
||||
"created_at_iso": "2021-11-14T07:34:25+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187190,
|
||||
@@ -1929,7 +1966,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 07:24:31"
|
||||
"created_at": "2021-11-14 07:24:31",
|
||||
"created_at_iso": "2021-11-14T07:24:31+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187189,
|
||||
@@ -1999,7 +2037,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 07:24:26"
|
||||
"created_at": "2021-11-14 07:24:26",
|
||||
"created_at_iso": "2021-11-14T07:24:26+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187188,
|
||||
@@ -2073,7 +2112,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 07:12:25"
|
||||
"created_at": "2021-11-14 07:12:25",
|
||||
"created_at_iso": "2021-11-14T07:12:25+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187169,
|
||||
@@ -2147,7 +2187,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 01:18:23"
|
||||
"created_at": "2021-11-14 01:18:23",
|
||||
"created_at_iso": "2021-11-14T01:18:23+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187168,
|
||||
@@ -2193,7 +2234,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 00:57:43"
|
||||
"created_at": "2021-11-14 00:57:43",
|
||||
"created_at_iso": "2021-11-14T00:57:43+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187167,
|
||||
@@ -2239,7 +2281,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 00:42:20"
|
||||
"created_at": "2021-11-14 00:42:20",
|
||||
"created_at_iso": "2021-11-14T00:42:20+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187165,
|
||||
@@ -2285,7 +2328,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-14 00:03:50"
|
||||
"created_at": "2021-11-14 00:03:50",
|
||||
"created_at_iso": "2021-11-14T00:03:50+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187164,
|
||||
@@ -2355,7 +2399,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 23:07:25"
|
||||
"created_at": "2021-11-13 23:07:25",
|
||||
"created_at_iso": "2021-11-13T23:07:25+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187163,
|
||||
@@ -2382,7 +2427,7 @@
|
||||
"imdb": null,
|
||||
"tmdb": "138573",
|
||||
"tvdb": null,
|
||||
"title": "\u51b2\u51fb",
|
||||
"title": "冲击",
|
||||
"tv_season": null,
|
||||
"tv_episode": null,
|
||||
"tv_full_season": false,
|
||||
@@ -2396,7 +2441,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 22:46:14"
|
||||
"created_at": "2021-11-13 22:46:14",
|
||||
"created_at_iso": "2021-11-13T22:46:14+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187162,
|
||||
@@ -2454,7 +2500,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 22:10:28"
|
||||
"created_at": "2021-11-13 22:10:28",
|
||||
"created_at_iso": "2021-11-13T22:10:28+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187158,
|
||||
@@ -2500,7 +2547,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 20:58:54"
|
||||
"created_at": "2021-11-13 20:58:54",
|
||||
"created_at_iso": "2021-11-13T20:58:54+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187157,
|
||||
@@ -2546,7 +2594,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 20:58:52"
|
||||
"created_at": "2021-11-13 20:58:52",
|
||||
"created_at_iso": "2021-11-13T20:58:52+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187156,
|
||||
@@ -2592,7 +2641,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 20:58:49"
|
||||
"created_at": "2021-11-13 20:58:49",
|
||||
"created_at_iso": "2021-11-13T20:58:49+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187155,
|
||||
@@ -2638,7 +2688,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 19:53:29"
|
||||
"created_at": "2021-11-13 19:53:29",
|
||||
"created_at_iso": "2021-11-13T19:53:29+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187150,
|
||||
@@ -2684,7 +2735,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 17:04:28"
|
||||
"created_at": "2021-11-13 17:04:28",
|
||||
"created_at_iso": "2021-11-13T17:04:28+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187149,
|
||||
@@ -2730,7 +2782,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 17:04:26"
|
||||
"created_at": "2021-11-13 17:04:26",
|
||||
"created_at_iso": "2021-11-13T17:04:26+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187148,
|
||||
@@ -2776,7 +2829,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 17:04:23"
|
||||
"created_at": "2021-11-13 17:04:23",
|
||||
"created_at_iso": "2021-11-13T17:04:23+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187147,
|
||||
@@ -2822,7 +2876,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 17:04:11"
|
||||
"created_at": "2021-11-13 17:04:11",
|
||||
"created_at_iso": "2021-11-13T17:04:11+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187146,
|
||||
@@ -2868,7 +2923,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 16:59:50"
|
||||
"created_at": "2021-11-13 16:59:50",
|
||||
"created_at_iso": "2021-11-13T16:59:50+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187145,
|
||||
@@ -2914,7 +2970,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 16:57:51"
|
||||
"created_at": "2021-11-13 16:57:51",
|
||||
"created_at_iso": "2021-11-13T16:57:51+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187144,
|
||||
@@ -2960,7 +3017,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 16:54:53"
|
||||
"created_at": "2021-11-13 16:54:53",
|
||||
"created_at_iso": "2021-11-13T16:54:53+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187143,
|
||||
@@ -3006,7 +3064,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 16:54:51"
|
||||
"created_at": "2021-11-13 16:54:51",
|
||||
"created_at_iso": "2021-11-13T16:54:51+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187142,
|
||||
@@ -3052,7 +3111,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 16:54:49"
|
||||
"created_at": "2021-11-13 16:54:49",
|
||||
"created_at_iso": "2021-11-13T16:54:49+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187141,
|
||||
@@ -3098,7 +3158,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 16:54:46"
|
||||
"created_at": "2021-11-13 16:54:46",
|
||||
"created_at_iso": "2021-11-13T16:54:46+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187140,
|
||||
@@ -3144,7 +3205,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 16:54:43"
|
||||
"created_at": "2021-11-13 16:54:43",
|
||||
"created_at_iso": "2021-11-13T16:54:43+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187139,
|
||||
@@ -3190,7 +3252,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 16:03:36"
|
||||
"created_at": "2021-11-13 16:03:36",
|
||||
"created_at_iso": "2021-11-13T16:03:36+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187138,
|
||||
@@ -3236,7 +3299,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 16:03:31"
|
||||
"created_at": "2021-11-13 16:03:31",
|
||||
"created_at_iso": "2021-11-13T16:03:31+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187137,
|
||||
@@ -3282,7 +3346,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 14:47:56"
|
||||
"created_at": "2021-11-13 14:47:56",
|
||||
"created_at_iso": "2021-11-13T14:47:56+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187136,
|
||||
@@ -3328,7 +3393,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 13:54:18"
|
||||
"created_at": "2021-11-13 13:54:18",
|
||||
"created_at_iso": "2021-11-13T13:54:18+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187135,
|
||||
@@ -3378,7 +3444,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 13:01:47"
|
||||
"created_at": "2021-11-13 13:01:47",
|
||||
"created_at_iso": "2021-11-13T13:01:47+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187134,
|
||||
@@ -3424,7 +3491,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 12:57:53"
|
||||
"created_at": "2021-11-13 12:57:53",
|
||||
"created_at_iso": "2021-11-13T12:57:53+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187133,
|
||||
@@ -3470,7 +3538,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 12:48:57"
|
||||
"created_at": "2021-11-13 12:48:57",
|
||||
"created_at_iso": "2021-11-13T12:48:57+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187132,
|
||||
@@ -3528,7 +3597,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 12:10:57"
|
||||
"created_at": "2021-11-13 12:10:57",
|
||||
"created_at_iso": "2021-11-13T12:10:57+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187131,
|
||||
@@ -3569,7 +3639,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 11:35:53"
|
||||
"created_at": "2021-11-13 11:35:53",
|
||||
"created_at_iso": "2021-11-13T11:35:53+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187130,
|
||||
@@ -3615,7 +3686,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 11:03:19"
|
||||
"created_at": "2021-11-13 11:03:19",
|
||||
"created_at_iso": "2021-11-13T11:03:19+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187129,
|
||||
@@ -3656,7 +3728,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 11:02:54"
|
||||
"created_at": "2021-11-13 11:02:54",
|
||||
"created_at_iso": "2021-11-13T11:02:54+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187128,
|
||||
@@ -3706,7 +3779,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 11:00:29"
|
||||
"created_at": "2021-11-13 11:00:29",
|
||||
"created_at_iso": "2021-11-13T11:00:29+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187127,
|
||||
@@ -3752,7 +3826,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 10:57:36"
|
||||
"created_at": "2021-11-13 10:57:36",
|
||||
"created_at_iso": "2021-11-13T10:57:36+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187126,
|
||||
@@ -3802,7 +3877,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 10:55:31"
|
||||
"created_at": "2021-11-13 10:55:31",
|
||||
"created_at_iso": "2021-11-13T10:55:31+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187125,
|
||||
@@ -3848,7 +3924,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 10:53:16"
|
||||
"created_at": "2021-11-13 10:53:16",
|
||||
"created_at_iso": "2021-11-13T10:53:16+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187124,
|
||||
@@ -3889,7 +3966,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 10:23:32"
|
||||
"created_at": "2021-11-13 10:23:32",
|
||||
"created_at_iso": "2021-11-13T10:23:32+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187123,
|
||||
@@ -3939,7 +4017,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 10:23:31"
|
||||
"created_at": "2021-11-13 10:23:31",
|
||||
"created_at_iso": "2021-11-13T10:23:31+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187122,
|
||||
@@ -3980,7 +4059,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 10:23:30"
|
||||
"created_at": "2021-11-13 10:23:30",
|
||||
"created_at_iso": "2021-11-13T10:23:30+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187121,
|
||||
@@ -4021,7 +4101,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 10:23:29"
|
||||
"created_at": "2021-11-13 10:23:29",
|
||||
"created_at_iso": "2021-11-13T10:23:29+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187120,
|
||||
@@ -4067,7 +4148,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 10:15:29"
|
||||
"created_at": "2021-11-13 10:15:29",
|
||||
"created_at_iso": "2021-11-13T10:15:29+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187119,
|
||||
@@ -4113,7 +4195,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 10:15:28"
|
||||
"created_at": "2021-11-13 10:15:28",
|
||||
"created_at_iso": "2021-11-13T10:15:28+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187118,
|
||||
@@ -4154,7 +4237,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 10:15:27"
|
||||
"created_at": "2021-11-13 10:15:27",
|
||||
"created_at_iso": "2021-11-13T10:15:27+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187117,
|
||||
@@ -4195,7 +4279,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 10:15:26"
|
||||
"created_at": "2021-11-13 10:15:26",
|
||||
"created_at_iso": "2021-11-13T10:15:26+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187116,
|
||||
@@ -4236,7 +4321,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:54:52"
|
||||
"created_at": "2021-11-13 09:54:52",
|
||||
"created_at_iso": "2021-11-13T09:54:52+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187115,
|
||||
@@ -4286,7 +4372,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:54:51"
|
||||
"created_at": "2021-11-13 09:54:51",
|
||||
"created_at_iso": "2021-11-13T09:54:51+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187114,
|
||||
@@ -4327,7 +4414,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:54:50"
|
||||
"created_at": "2021-11-13 09:54:50",
|
||||
"created_at_iso": "2021-11-13T09:54:50+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187113,
|
||||
@@ -4368,7 +4456,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:54:48"
|
||||
"created_at": "2021-11-13 09:54:48",
|
||||
"created_at_iso": "2021-11-13T09:54:48+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187112,
|
||||
@@ -4409,7 +4498,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:50:35"
|
||||
"created_at": "2021-11-13 09:50:35",
|
||||
"created_at_iso": "2021-11-13T09:50:35+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187111,
|
||||
@@ -4463,7 +4553,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:50:34"
|
||||
"created_at": "2021-11-13 09:50:34",
|
||||
"created_at_iso": "2021-11-13T09:50:34+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187110,
|
||||
@@ -4504,7 +4595,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:50:32"
|
||||
"created_at": "2021-11-13 09:50:32",
|
||||
"created_at_iso": "2021-11-13T09:50:32+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187109,
|
||||
@@ -4545,7 +4637,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:50:31"
|
||||
"created_at": "2021-11-13 09:50:31",
|
||||
"created_at_iso": "2021-11-13T09:50:31+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187107,
|
||||
@@ -4586,7 +4679,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:44:55"
|
||||
"created_at": "2021-11-13 09:44:55",
|
||||
"created_at_iso": "2021-11-13T09:44:55+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187106,
|
||||
@@ -4632,7 +4726,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:44:54"
|
||||
"created_at": "2021-11-13 09:44:54",
|
||||
"created_at_iso": "2021-11-13T09:44:54+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187105,
|
||||
@@ -4673,7 +4768,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:44:53"
|
||||
"created_at": "2021-11-13 09:44:53",
|
||||
"created_at_iso": "2021-11-13T09:44:53+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187104,
|
||||
@@ -4714,7 +4810,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:44:51"
|
||||
"created_at": "2021-11-13 09:44:51",
|
||||
"created_at_iso": "2021-11-13T09:44:51+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187103,
|
||||
@@ -4760,7 +4857,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:40:07"
|
||||
"created_at": "2021-11-13 09:40:07",
|
||||
"created_at_iso": "2021-11-13T09:40:07+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187102,
|
||||
@@ -4810,7 +4908,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:39:53"
|
||||
"created_at": "2021-11-13 09:39:53",
|
||||
"created_at_iso": "2021-11-13T09:39:53+02:00"
|
||||
},
|
||||
{
|
||||
"id": 187101,
|
||||
@@ -4856,7 +4955,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-11-13 09:39:52"
|
||||
"created_at": "2021-11-13 09:39:52",
|
||||
"created_at_iso": "2021-11-13T09:39:52+02:00"
|
||||
}
|
||||
],
|
||||
"first_page_url": "https:\/\/avistaz.to\/api\/v1\/jackett\/torrents?type=2&page=1",
|
||||
@@ -4869,4 +4969,4 @@
|
||||
"prev_page_url": null,
|
||||
"to": 100,
|
||||
"total": 31393
|
||||
}
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
{
|
||||
{
|
||||
"current_page": 1,
|
||||
"data": [
|
||||
{
|
||||
@@ -50,7 +50,8 @@
|
||||
"images/torrent/1/4/0/mxgwdlpk4pt2.jpg"
|
||||
],
|
||||
"description": "<p>[SSIS-419] My first experience is Yua Mikami. From the day I lost my virginity, I was devoted to sex.</p>\n<p>Actress: Yua Mikami</p>\n<p>Studio: S1 NO.1 STYLE</p>\n<p>Runtime: 2:41:00</p>\n<p>Movies Genres: Minimal Mosaic,Cherry Boy,Documentary,Featured Actress,Idol & Celebrity</p>",
|
||||
"created_at": "2022-06-11 11:04:50"
|
||||
"created_at": "2022-06-11 11:04:50",
|
||||
"created_at_iso": "2022-06-11T11:04:50+02:00"
|
||||
},
|
||||
{
|
||||
"id": 61953,
|
||||
@@ -106,7 +107,8 @@
|
||||
"images/torrent/0/4/0/gsuctius9zw2.jpg"
|
||||
],
|
||||
"description": "<p>https://www.r18.com/videos/vod/movies/detail/-/id=ssis00338/</p>\n<p>SSIS-338</p>\n<p>Ultimate Lover Swamp. Ideal Sex-Only Relationship That Is Not Disturbed By Work Or Family With Yua Mikami</p>",
|
||||
"created_at": "2022-05-23 23:41:25"
|
||||
"created_at": "2022-05-23 23:41:25",
|
||||
"created_at_iso": "2022-05-23T23:41:25+02:00"
|
||||
},
|
||||
{
|
||||
"id": 61947,
|
||||
@@ -161,7 +163,8 @@
|
||||
"images/torrent/0/0/e/g6tquwvlmfdx.jpg"
|
||||
],
|
||||
"description": "<p>https://www.r18.com/videos/vod/movies/detail/-/id=ssis00313/</p>\n<p>SSIS-313</p>\n<p>Yua Mikami's Ecstasy Lotion Special. Offering The Best-ever Slick Servicing To Work Cum Loads Out.</p>",
|
||||
"created_at": "2022-05-23 08:34:34"
|
||||
"created_at": "2022-05-23 08:34:34",
|
||||
"created_at_iso": "2022-05-23T08:34:34+02:00"
|
||||
},
|
||||
{
|
||||
"id": 61630,
|
||||
@@ -223,7 +226,8 @@
|
||||
"images/torrent/f/2/5/kdihq6gibacb.jpg"
|
||||
],
|
||||
"description": "<p>https://www.r18.com/videos/vod/movies/detail/-/id=ssis00287/</p>\n<p>SSIS-287</p>\n<p>Drool, The Effects Of A Few Sips, Her Face During Sex, And Peeing Released All At Once. Yua Mikami Flies Indecently.</p>",
|
||||
"created_at": "2022-05-21 10:25:32"
|
||||
"created_at": "2022-05-21 10:25:32",
|
||||
"created_at_iso": "2022-05-21T10:25:32+02:00"
|
||||
},
|
||||
{
|
||||
"id": 61514,
|
||||
@@ -275,7 +279,8 @@
|
||||
"images/torrent/e/2/a/ujrvmtgjakko.jpg"
|
||||
],
|
||||
"description": "<p>https://www.r18.com/videos/vod/movies/detail/-/id=ssis00241/</p>\n<p>SSIS-241</p>\n<p>Forbidden Teacher Love. Yua Mikami</p>",
|
||||
"created_at": "2022-05-20 09:17:10"
|
||||
"created_at": "2022-05-20 09:17:10",
|
||||
"created_at_iso": "2022-05-20T09:17:10+02:00"
|
||||
},
|
||||
{
|
||||
"id": 59929,
|
||||
@@ -325,7 +330,8 @@
|
||||
"images/torrent/c/4/a/hycbduxlw3ei.jpg"
|
||||
],
|
||||
"description": "<p><strong>[SSIS-392] Let's Do It At A Men's Massage Parlor. Yua Mikami</strong></p>\n<p><strong>+++ [FHD] SSIS-392 メンエスでしようよ 三上悠亜</strong></p>\n<p><strong>ID:</strong> SSIS-392<br><strong>Release Date:</strong> May 6, 2022<br><strong>Runtime:</strong> 1 hour 58 minutes 59 seconds [01:59:00]<br><strong>Studio:</strong> S1 NO.1 STYLE<br><strong>Label:</strong> S1 NO.1 STYLE<br><strong>Director:</strong> TAKE-D<br><strong>Series:</strong> A Super Gorgeous Men's Massage Parlor<br><strong>Actresses:</strong> Yua Mikami<br><strong>Categories:</strong> Featured Actress, Idol & Celebrity, Massage Parlor, Lotion, Minimal Mosaic, Hi-Def, 4K<br><br></p>\n<p><strong>Website:</strong> https://s1s1s1.com/works/detail/SSIS392/ <br><strong>R18:</strong> https://www.r18.com/videos/vod/movies/detail/-/id=ssis00392/ <br><strong>DMM:</strong> https://www.dmm.co.jp/digital/videoa/-/detail/=/cid=ssis00392/</p>\n<p>Uploaded by a Bot</p>",
|
||||
"created_at": "2022-05-06 03:48:23"
|
||||
"created_at": "2022-05-06 03:48:23",
|
||||
"created_at_iso": "2022-05-06T03:48:23+02:00"
|
||||
},
|
||||
{
|
||||
"id": 58235,
|
||||
@@ -374,7 +380,8 @@
|
||||
"images/torrent/3/6/1/6fuhfb5kcbpz.jpg"
|
||||
],
|
||||
"description": "<p><strong>[SSIS-365] \"What!? We're Gonna Fuck Here?\" Sticking Close To Yua Mikami For A Whole Month, Taking Advantage Any Time There's A Chance For A Quick Fuck! Unprecedented Hidden Camera AV Primetime Challenge.</strong></p>\n <p><strong>+++ [HD] SSIS-365 「えっ!ここでヤルの?」三上悠亜に一ヶ月密着して隙あらばいきなり即ズボッ! 前代未聞ドッキリAV大作戦</strong></p>\n <p><strong>ID:</strong> SSIS-365<br>\n <strong>Release Date:</strong> Apr 8, 2022<br>\n <strong>Runtime:</strong> 2 hours 5 minutes 59 seconds\n [02:06:00]<br>\n <strong>Studio:</strong> S1 NO.1 STYLE<br>\n <strong>Label:</strong> S1 NO.1 STYLE<br>\n <strong>Director:</strong> Kyosei<br>\n <strong>Series:</strong> -<br>\n <strong>Actresses:</strong> Yua Mikami<br>\n <strong>Categories:</strong> Big Tits, Quickie, Featured Actress, Blowjob, Minimal Mosaic, Hi-Def<br><br>\n </p><p><strong>Website:</strong> https://s1s1s1.com/works/detail/SSIS365/</p>\n<p><strong>R18:</strong> https://www.r18.com/videos/vod/movies/detail/-/id=ssis00365/</p><p>Uploaded by a Bot</p>",
|
||||
"created_at": "2022-04-08 06:31:27"
|
||||
"created_at": "2022-04-08 06:31:27",
|
||||
"created_at_iso": "2022-04-08T06:31:27+02:00"
|
||||
},
|
||||
{
|
||||
"id": 57416,
|
||||
@@ -640,7 +647,8 @@
|
||||
"images/torrent/3/8/f/hxzly7alqt9f.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2022-03-29 20:58:49"
|
||||
"created_at": "2022-03-29 20:58:49",
|
||||
"created_at_iso": "2022-03-29T20:58:49+02:00"
|
||||
},
|
||||
{
|
||||
"id": 56332,
|
||||
@@ -690,7 +698,8 @@
|
||||
"images/torrent/2/9/6/bw4kyn1ckz5u.jpg"
|
||||
],
|
||||
"description": "<p>De-censored with AI algorithm. </p>\n<p>Originated from [OFJE-304] Gorgeous Big Tits Bouncing All Over The Place! All G-Cup And Bigger Actresses Ride Dick Until They Cum 50 Rounds</p>\n<p>+++ [HD] OFJE-304 縦横無尽に神乳が揺れまくりっ!オールGcup超えS1女優のおっぱい激揺れ激イキ激ピスSEX50本番</p>\n<p>https://www.r18.com/videos/vod/movies/detail/-/id=ofje00304/</p>",
|
||||
"created_at": "2022-03-10 09:06:27"
|
||||
"created_at": "2022-03-10 09:06:27",
|
||||
"created_at_iso": "2022-03-10T09:06:27+01:00"
|
||||
},
|
||||
{
|
||||
"id": 56108,
|
||||
@@ -742,7 +751,8 @@
|
||||
"images/torrent/d/6/b/gexzyognkxeb.jpg"
|
||||
],
|
||||
"description": "<p><strong>[SSIS-338] Ultimate Lover Swamp. Ideal Sex-Only Relationship That Is Not Disturbed By Work Or Family With Yua Mikami</strong></p>\n <p><strong>+++ [HD] SSIS-338 最高の愛人沼 仕事にも家庭にも干渉してこない、セックスだけの理想関係を三上悠亜と…。</strong></p>\n <p><strong>ID:</strong> SSIS-338<br>\n <strong>Release Date:</strong> Mar 4, 2022<br>\n <strong>Runtime:</strong> 2 hours 25 minutes 59 seconds\n [02:26:00]<br>\n <strong>Studio:</strong> S1 NO.1 STYLE<br>\n <strong>Label:</strong> S1 NO.1 STYLE<br>\n <strong>Director:</strong> Amazing Meat<br>\n <strong>Series:</strong> -<br>\n <strong>Actresses:</strong> Yua Mikami<br>\n <strong>Categories:</strong> Adultery, Featured Actress, Cheating Wife, Drama, Minimal Mosaic, Hi-Def, 4K<br><br>\n </p><p><strong>Website:</strong> https://s1s1s1.com/works/detail/SSIS338/</p>\n<p><strong>R18:</strong> https://www.r18.com/videos/vod/movies/detail/-/id=ssis00338/</p><p>Uploaded by a Bot</p>",
|
||||
"created_at": "2022-03-04 05:28:49"
|
||||
"created_at": "2022-03-04 05:28:49",
|
||||
"created_at_iso": "2022-03-04T05:28:49+01:00"
|
||||
},
|
||||
{
|
||||
"id": 54324,
|
||||
@@ -797,7 +807,8 @@
|
||||
"images/torrent/9/7/d/ujzu5he0deum.jpg"
|
||||
],
|
||||
"description": "<p><strong>[SSIS-313] Yua Mikami's Ecstasy Lotion Special. Offering The Best-ever Slick Servicing To Work Cum Loads Out.</strong></p>\n<p><strong>SSIS-313 三上悠亜の有頂天ローションSP 人生最高ヌルヌルご奉仕で射精させてあげる</strong></p>\n<p><strong>ID:</strong> SSIS-313<br><strong>Release Date:</strong> Feb 4, 2022<br><strong>Runtime:</strong> 2 hours 27 minutes 59 seconds [02:28:00]<br><strong>Studio:</strong> S1 NO.1 STYLE<br><strong>Label:</strong> S1 NO.1 STYLE<br><strong>Director:</strong> TAKE-D<br><strong>Series:</strong> Ecstatic Lotion SP<br><strong>Actresses:</strong> Yua Mikami<br><strong>Categories:</strong> Big Tits, Featured Actress, Idol & Celebrity, Titty Fuck, Lotion, Minimal Mosaic, Hi-Def, 4K<br><br></p>\n<p><strong>Website:</strong> https://s1s1s1.com/works/detail/SSIS313/</p>\n<p><strong>R18:</strong> https://www.r18.com/videos/vod/movies/detail/-/id=ssis00313/</p>",
|
||||
"created_at": "2022-02-04 07:02:14"
|
||||
"created_at": "2022-02-04 07:02:14",
|
||||
"created_at_iso": "2022-02-04T07:02:14+01:00"
|
||||
},
|
||||
{
|
||||
"id": 53526,
|
||||
@@ -864,7 +875,8 @@
|
||||
"images/torrent/7/d/0/w4lraenuqmos.jpg"
|
||||
],
|
||||
"description": "<p><strong>[OFJE-281] Yua Mikami x Shame Special This National-Grade Idol Is Getting Continuously Fucked 8 Hours</strong></p>\n <p><strong>+++ [HD] OFJE-281 三上悠亜×レ●プSpecial 国民的アイドルをひたすら犯し続ける8時間</strong></p>\n <p><strong>ID:</strong> OFJE-281<br>\n <strong>Release Date:</strong> Nov 6, 2020<br>\n <strong>Runtime:</strong> 7 hours 56 minutes 59 seconds\n [07:57:00]<br>\n <strong>Studio:</strong> S1 NO.1 STYLE<br>\n <strong>Label:</strong> S1 NO.1 STYLE<br>\n <strong>Director:</strong> <br>\n <strong>Series:</strong> S1 GIRLS COLLECTION<br>\n <strong>Actresses:</strong> Yua Mikami<br>\n <strong>Categories:</strong> Beautiful Girl, Featured Actress, Nymphomaniac, Idol & Celebrity, Over 4 Hours, Hi-Def, Actress Best Compilation<br><br>\n </p><p><strong>Website:</strong> https://s1s1s1.com/works/detail/OFJE281/</p>\n<p><strong>R18:</strong> https://www.r18.com/videos/vod/movies/detail/-/id=ofje00281/</p><p>Uploaded by a Bot</p>",
|
||||
"created_at": "2022-01-26 12:46:09"
|
||||
"created_at": "2022-01-26 12:46:09",
|
||||
"created_at_iso": "2022-01-26T12:46:09+01:00"
|
||||
},
|
||||
{
|
||||
"id": 52648,
|
||||
@@ -915,7 +927,8 @@
|
||||
"images/torrent/8/7/2/92ph60ekxpkx.jpg"
|
||||
],
|
||||
"description": "<p>Actresses: Yua Mikami<br>Categories<br>Big TitsFeatured ActressNymphomaniacIdol & CelebritySquirtingMinimal MosaicHi-Def4K<br>Studio: S1 NO.1 STYLE <br>Series: Release All At Once And Fly Vulgarly<br> Release date: Jan 7, 2022<br>Runtime: 150min<br>Director: Mon C<br>Label: S1 NO.1 STYLE<br>Content ID: ssis00287<br>DVD ID: SSIS-287<br>Languages: Japanese<br><br></p>",
|
||||
"created_at": "2022-01-07 13:01:13"
|
||||
"created_at": "2022-01-07 13:01:13",
|
||||
"created_at_iso": "2022-01-07T13:01:13+01:00"
|
||||
},
|
||||
{
|
||||
"id": 52438,
|
||||
@@ -972,7 +985,8 @@
|
||||
"images/torrent/0/9/2/yhdsjr2jrf2k.gif"
|
||||
],
|
||||
"description": "<p><a href=\"https://exoticaz.to/torrents?in=1&search=KnickerZ&uploader=&verifier=\"><img src=\"https://i.exoticaz.to/images/torrent/e/3/9/i7bfled2kuss.jpg\" width=\"824\" height=\"300\" alt=\"i7bfled2kuss.jpg\"></a></p>\n<p>[SSIS-270] Yua Mikami - Earnestly Small Devil Chikubiti All-round 200 Minutes Nipple Licking Blame Rolling (4K)</p>\n<p>Scene 1: Yua plays with a toy boob<br>Scene 2: Yua seduces teacher, missionary and cums on tits<br>Various Sex Acts Included : Oral, Doggy, One on One sex, MF sex, Facials, Cumshots, Missionary Sex, Handjob, Blowjobs, Blowbangs, Handjobs, Cowgirl & Reverse-Cowgirl, Deep-throat, Solo tease, Solo Masturbation, Toy/Dildo play, Kissing, etc</p>\n\n<p> <img src=\"https://i.exoticaz.to/images/torrent/0/9/2/yhdsjr2jrf2k.gif\" alt=\"yhdsjr2jrf2k.gif\"></p>",
|
||||
"created_at": "2022-01-03 12:59:46"
|
||||
"created_at": "2022-01-03 12:59:46",
|
||||
"created_at_iso": "2022-01-03T12:59:46+01:00"
|
||||
},
|
||||
{
|
||||
"id": 52436,
|
||||
@@ -1023,7 +1037,8 @@
|
||||
"images/torrent/1/0/9/rj8pemdpmdce.gif"
|
||||
],
|
||||
"description": "<p><a href=\"https://exoticaz.to/torrents?in=1&search=KnickerZ&uploader=&verifier=\"><img src=\"https://i.exoticaz.to/images/torrent/e/3/9/i7bfled2kuss.jpg\" width=\"824\" height=\"300\" alt=\"i7bfled2kuss.jpg\"></a></p>\n<p>[SSIS-211] Yua Mikami - You're At A Whore House, And One Of Japan's Top Pornstars Appears Right In Front Of You! Do You Fuck Her Or Fuck Off? (4K)</p>\n<p>Scene 1: Yua gives a handjob<br>Scene 2: Blowjob & doggy<br>Various Sex Acts Included : Oral, Doggy, One on One sex, MF sex, Facials, Cumshots, Missionary Sex, Handjob, Blowjobs, Blowbangs, Handjobs, Cowgirl & Reverse-Cowgirl, Deep-throat, Solo tease, Solo Masturbation, Toy/Dildo play, Kissing, etc</p>\n\n<p> <img src=\"https://i.exoticaz.to/images/torrent/1/0/9/rj8pemdpmdce.gif\" alt=\"rj8pemdpmdce.gif\"></p>",
|
||||
"created_at": "2022-01-03 12:55:28"
|
||||
"created_at": "2022-01-03 12:55:28",
|
||||
"created_at_iso": "2022-01-03T12:55:28+01:00"
|
||||
},
|
||||
{
|
||||
"id": 52434,
|
||||
@@ -1074,7 +1089,8 @@
|
||||
"images/torrent/9/0/6/jpoyeqdohhft.gif"
|
||||
],
|
||||
"description": "<p><a href=\"https://exoticaz.to/torrents?in=1&search=KnickerZ&uploader=&verifier=\"><img src=\"https://i.exoticaz.to/images/torrent/e/3/9/i7bfled2kuss.jpg\" width=\"824\" height=\"300\" alt=\"i7bfled2kuss.jpg\"></a></p>\n<p>[SSIS-181] Yua Mikami - Getting A Lick Down From Step-dad. 3 Full Days Indecency While The Husband Is Away (4K)</p>\n<p>Scene 1: Yua while asleep gets tits sucked, missionary<br>Scene 2: Yua plays with toothbrush<br>Scene 3: Blowjob<br>Various Sex Acts Included : Oral, Doggy, One on One sex, MF sex, Facials, Cumshots, Missionary Sex, Handjob, Blowjobs, Blowbangs, Handjobs, Cowgirl & Reverse-Cowgirl, Deep-throat, Solo tease, Solo Masturbation, Toy/Dildo play, Kissing, etc</p>\n\n<p> <img src=\"https://i.exoticaz.to/images/torrent/9/0/6/jpoyeqdohhft.gif\" alt=\"jpoyeqdohhft.gif\"></p>",
|
||||
"created_at": "2022-01-03 12:49:49"
|
||||
"created_at": "2022-01-03 12:49:49",
|
||||
"created_at_iso": "2022-01-03T12:49:49+01:00"
|
||||
},
|
||||
{
|
||||
"id": 51414,
|
||||
@@ -1125,7 +1141,8 @@
|
||||
"images/torrent/7/a/2/v4bbhqrhfaic.jpg"
|
||||
],
|
||||
"description": "<p>Yua Mikami's Devilish 200 Minutes of All Round Nipple Licking, Teasing and Kneading</p>\n<p>Actresses: Yua Mikami<br>Studio: S1 NO.1 STYLE<br>Series: Just A Little Devil Chick.<br>Release date: Dec 10, 2021<br>Runtime: 197min<br>Director: ZAMPA<br>Label: S1 NO.1 STYLE<br>Content ID: ssis00270<br>DVD ID: SSIS-270<br>Languages: Japanese</p>",
|
||||
"created_at": "2021-12-10 16:59:45"
|
||||
"created_at": "2021-12-10 16:59:45",
|
||||
"created_at_iso": "2021-12-10T16:59:45+01:00"
|
||||
},
|
||||
{
|
||||
"id": 50935,
|
||||
@@ -1178,7 +1195,8 @@
|
||||
"images/torrent/4/d/2/8ppl4ibq95se.png"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-11-27 21:51:25"
|
||||
"created_at": "2021-11-27 21:51:25",
|
||||
"created_at_iso": "2021-11-27T21:51:25+01:00"
|
||||
},
|
||||
{
|
||||
"id": 50154,
|
||||
@@ -1244,7 +1262,8 @@
|
||||
"images/torrent/a/7/7/t90zggbrwwf5.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-11-12 10:26:20"
|
||||
"created_at": "2021-11-12 10:26:20",
|
||||
"created_at_iso": "2021-11-12T10:26:20+01:00"
|
||||
},
|
||||
{
|
||||
"id": 49718,
|
||||
@@ -1312,7 +1331,8 @@
|
||||
"images/torrent/5/9/9/7uo17medy6ib.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-11-02 11:39:32"
|
||||
"created_at": "2021-11-02 11:39:32",
|
||||
"created_at_iso": "2021-11-02T11:39:32+01:00"
|
||||
},
|
||||
{
|
||||
"id": 49717,
|
||||
@@ -1368,7 +1388,8 @@
|
||||
"images/torrent/2/4/0/f99j7rtxwlni.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-11-02 11:25:47"
|
||||
"created_at": "2021-11-02 11:25:47",
|
||||
"created_at_iso": "2021-11-02T11:25:47+01:00"
|
||||
},
|
||||
{
|
||||
"id": 49715,
|
||||
@@ -1423,7 +1444,8 @@
|
||||
"images/torrent/7/3/5/6e8mmocet7pq.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-11-02 11:16:12"
|
||||
"created_at": "2021-11-02 11:16:12",
|
||||
"created_at_iso": "2021-11-02T11:16:12+01:00"
|
||||
},
|
||||
{
|
||||
"id": 49714,
|
||||
@@ -1477,7 +1499,8 @@
|
||||
"images/torrent/5/a/b/bchwfgrs4jm4.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-11-02 11:06:08"
|
||||
"created_at": "2021-11-02 11:06:08",
|
||||
"created_at_iso": "2021-11-02T11:06:08+01:00"
|
||||
},
|
||||
{
|
||||
"id": 49712,
|
||||
@@ -1532,7 +1555,8 @@
|
||||
"images/torrent/d/8/0/n8wlosqiuz92.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-11-02 10:46:18"
|
||||
"created_at": "2021-11-02 10:46:18",
|
||||
"created_at_iso": "2021-11-02T10:46:18+01:00"
|
||||
},
|
||||
{
|
||||
"id": 49647,
|
||||
@@ -1588,7 +1612,8 @@
|
||||
"images/torrent/c/5/f/nc1q6ejlvyqu.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-11-02 10:29:43"
|
||||
"created_at": "2021-11-02 10:29:43",
|
||||
"created_at_iso": "2021-11-02T10:29:43+01:00"
|
||||
},
|
||||
{
|
||||
"id": 49646,
|
||||
@@ -1640,7 +1665,8 @@
|
||||
"images/torrent/c/5/8/c1wfncbm1eve.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-10-31 14:28:38"
|
||||
"created_at": "2021-10-31 14:28:38",
|
||||
"created_at_iso": "2021-10-31T14:28:38+01:00"
|
||||
},
|
||||
{
|
||||
"id": 49645,
|
||||
@@ -1696,7 +1722,8 @@
|
||||
"images/torrent/8/4/e/wc4toojco9dx.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-10-31 14:17:13"
|
||||
"created_at": "2021-10-31 14:17:13",
|
||||
"created_at_iso": "2021-10-31T14:17:13+01:00"
|
||||
},
|
||||
{
|
||||
"id": 49644,
|
||||
@@ -1752,7 +1779,8 @@
|
||||
"images/torrent/7/7/c/4qp3mqsokrnw.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-10-31 14:02:50"
|
||||
"created_at": "2021-10-31 14:02:50",
|
||||
"created_at_iso": "2021-10-31T14:02:50+01:00"
|
||||
},
|
||||
{
|
||||
"id": 49643,
|
||||
@@ -1804,7 +1832,8 @@
|
||||
"images/torrent/0/9/f/fgwbfeqmzftr.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-10-31 13:50:27"
|
||||
"created_at": "2021-10-31 13:50:27",
|
||||
"created_at_iso": "2021-10-31T13:50:27+01:00"
|
||||
},
|
||||
{
|
||||
"id": 49079,
|
||||
@@ -1858,7 +1887,8 @@
|
||||
"images/torrent/7/d/d/xe1gcbp5acwx.png"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-10-16 16:50:12"
|
||||
"created_at": "2021-10-16 16:50:12",
|
||||
"created_at_iso": "2021-10-16T16:50:12+02:00"
|
||||
},
|
||||
{
|
||||
"id": 49056,
|
||||
@@ -1912,7 +1942,8 @@
|
||||
"images/torrent/e/1/1/yv3ablrdkgfv.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-10-16 07:10:29"
|
||||
"created_at": "2021-10-16 07:10:29",
|
||||
"created_at_iso": "2021-10-16T07:10:29+02:00"
|
||||
},
|
||||
{
|
||||
"id": 49050,
|
||||
@@ -1963,7 +1994,8 @@
|
||||
"images/torrent/3/3/1/uorz1hpm1hld.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-10-16 02:11:54"
|
||||
"created_at": "2021-10-16 02:11:54",
|
||||
"created_at_iso": "2021-10-16T02:11:54+02:00"
|
||||
},
|
||||
{
|
||||
"id": 49049,
|
||||
@@ -2018,7 +2050,8 @@
|
||||
"images/torrent/9/6/e/bahbhr2gaqeq.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-10-16 00:06:39"
|
||||
"created_at": "2021-10-16 00:06:39",
|
||||
"created_at_iso": "2021-10-16T00:06:39+02:00"
|
||||
},
|
||||
{
|
||||
"id": 49048,
|
||||
@@ -2073,7 +2106,8 @@
|
||||
"images/torrent/7/8/b/eq1jkrz8icoi.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-10-16 00:01:42"
|
||||
"created_at": "2021-10-16 00:01:42",
|
||||
"created_at_iso": "2021-10-16T00:01:42+02:00"
|
||||
},
|
||||
{
|
||||
"id": 49038,
|
||||
@@ -2129,7 +2163,8 @@
|
||||
"images/torrent/0/1/7/c2hcjiknuv26.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-10-15 14:15:16"
|
||||
"created_at": "2021-10-15 14:15:16",
|
||||
"created_at_iso": "2021-10-15T14:15:16+02:00"
|
||||
},
|
||||
{
|
||||
"id": 49037,
|
||||
@@ -2185,7 +2220,8 @@
|
||||
"images/torrent/f/c/c/sir7gae1bnjv.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-10-15 13:58:51"
|
||||
"created_at": "2021-10-15 13:58:51",
|
||||
"created_at_iso": "2021-10-15T13:58:51+02:00"
|
||||
},
|
||||
{
|
||||
"id": 48883,
|
||||
@@ -2234,7 +2270,8 @@
|
||||
"images/torrent/1/5/7/myv4v8tpa6d6.jpg"
|
||||
],
|
||||
"description": "<p>ISO: https://exoticaz.to/torrent/48124</p>",
|
||||
"created_at": "2021-10-12 07:11:18"
|
||||
"created_at": "2021-10-12 07:11:18",
|
||||
"created_at_iso": "2021-10-12T07:11:18+02:00"
|
||||
},
|
||||
{
|
||||
"id": 48364,
|
||||
@@ -2276,7 +2313,8 @@
|
||||
"images/torrent/f/b/f/lw6fcsf6fz9z.jpg"
|
||||
],
|
||||
"description": "<p>Somebody requested this separately from pack that is already on here.</p>",
|
||||
"created_at": "2021-09-29 03:12:14"
|
||||
"created_at": "2021-09-29 03:12:14",
|
||||
"created_at_iso": "2021-09-29T03:12:14+02:00"
|
||||
},
|
||||
{
|
||||
"id": 48189,
|
||||
@@ -2331,7 +2369,8 @@
|
||||
"images/torrent/6/3/2/5yvhovuhybyd.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-09-24 14:32:49"
|
||||
"created_at": "2021-09-24 14:32:49",
|
||||
"created_at_iso": "2021-09-24T14:32:49+02:00"
|
||||
},
|
||||
{
|
||||
"id": 48186,
|
||||
@@ -2388,7 +2427,8 @@
|
||||
"images/torrent/6/0/8/e6jahgfjtvkf.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-09-24 14:17:46"
|
||||
"created_at": "2021-09-24 14:17:46",
|
||||
"created_at_iso": "2021-09-24T14:17:46+02:00"
|
||||
},
|
||||
{
|
||||
"id": 48184,
|
||||
@@ -2444,7 +2484,8 @@
|
||||
"images/torrent/9/a/b/msjcjdcarxj2.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-09-24 13:59:44"
|
||||
"created_at": "2021-09-24 13:59:44",
|
||||
"created_at_iso": "2021-09-24T13:59:44+02:00"
|
||||
},
|
||||
{
|
||||
"id": 48181,
|
||||
@@ -2500,7 +2541,8 @@
|
||||
"images/torrent/f/c/c/hkmy2iaaessw.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-09-24 13:46:50"
|
||||
"created_at": "2021-09-24 13:46:50",
|
||||
"created_at_iso": "2021-09-24T13:46:50+02:00"
|
||||
},
|
||||
{
|
||||
"id": 48179,
|
||||
@@ -2555,7 +2597,8 @@
|
||||
"images/torrent/9/8/3/fw84szdvrmk4.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-09-24 13:34:17"
|
||||
"created_at": "2021-09-24 13:34:17",
|
||||
"created_at_iso": "2021-09-24T13:34:17+02:00"
|
||||
},
|
||||
{
|
||||
"id": 48178,
|
||||
@@ -2611,7 +2654,8 @@
|
||||
"images/torrent/5/c/5/y7fjqvupby01.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-09-24 13:22:30"
|
||||
"created_at": "2021-09-24 13:22:30",
|
||||
"created_at_iso": "2021-09-24T13:22:30+02:00"
|
||||
},
|
||||
{
|
||||
"id": 48125,
|
||||
@@ -2666,7 +2710,8 @@
|
||||
"images/torrent/f/2/1/wj8axuerttva.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-09-23 06:34:55"
|
||||
"created_at": "2021-09-23 06:34:55",
|
||||
"created_at_iso": "2021-09-23T06:34:55+02:00"
|
||||
},
|
||||
{
|
||||
"id": 48124,
|
||||
@@ -2721,7 +2766,8 @@
|
||||
"images/torrent/b/6/8/qa5nfh9blige.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-09-23 05:38:43"
|
||||
"created_at": "2021-09-23 05:38:43",
|
||||
"created_at_iso": "2021-09-23T05:38:43+02:00"
|
||||
},
|
||||
{
|
||||
"id": 46870,
|
||||
@@ -2770,7 +2816,8 @@
|
||||
"images/torrent/d/4/1/rpn5ywrgch3m.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-09-01 13:28:55"
|
||||
"created_at": "2021-09-01 13:28:55",
|
||||
"created_at_iso": "2021-09-01T13:28:55+02:00"
|
||||
},
|
||||
{
|
||||
"id": 46193,
|
||||
@@ -2826,7 +2873,8 @@
|
||||
"images/torrent/7/6/8/o87ujrsbmehp.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-08-19 09:44:36"
|
||||
"created_at": "2021-08-19 09:44:36",
|
||||
"created_at_iso": "2021-08-19T09:44:36+02:00"
|
||||
},
|
||||
{
|
||||
"id": 45171,
|
||||
@@ -2874,7 +2922,8 @@
|
||||
"images/torrent/6/d/b/wm8ikfbzpecs.jpg"
|
||||
],
|
||||
"description": "<p>I don't know why the source was 25 fps</p>",
|
||||
"created_at": "2021-07-30 14:34:43"
|
||||
"created_at": "2021-07-30 14:34:43",
|
||||
"created_at_iso": "2021-07-30T14:34:43+02:00"
|
||||
},
|
||||
{
|
||||
"id": 43663,
|
||||
@@ -2923,7 +2972,8 @@
|
||||
"images/torrent/b/7/d/qswq8vdshnyb.jpg"
|
||||
],
|
||||
"description": "<p>Yua Mikami 4th Anniversary Memorial Best - Her 12 Latest Titles In Full, 72 Scenes, 480 Minutes Special</p>\n<p>Release Date: Mar. 06, 2021<br>Runtime: 477min. (HD: 477min.)<br>Director: ----<br>Studio: S1 NO.1 STYLE<br>Label: S1 NO.1 STYLE</p>\n<p>Channel: ----<br>Content ID: ofje00300<br>DVD ID: OFJE-300<br>Series: S1 GIRLS COLLECTION<br>Languages: Japanese</p>\n<p>Actress(es): Yua Mikami</p>",
|
||||
"created_at": "2021-07-04 16:17:44"
|
||||
"created_at": "2021-07-04 16:17:44",
|
||||
"created_at_iso": "2021-07-04T16:17:44+02:00"
|
||||
},
|
||||
{
|
||||
"id": 39515,
|
||||
@@ -3001,7 +3051,8 @@
|
||||
"images/torrent/a/0/c/5dgyfrjx6x7p.png"
|
||||
],
|
||||
"description": "<pre>+++ [HD] SSIS-013 アナタの五感を刺激する三上悠亜のシコシコサポートラグジュアリー 脳をエロスで満たす6つの癒され勃起シチュエーション</pre>\n<p><strong>Full title:</strong> <em>Yua Mikami Will Stimulate Your Five Senses In A Soothing, Stroking, Masturbatory Luxury Support Role 6 Soothing Erection Situations Of Fully Satisfying Eros Company Excitement To Blow Your Mind</em></p>\n<p><strong>Release Date:</strong> Mar. 18, 2021</p>\n<p><strong>R18:</strong> https://www.r18.com/videos/vod/movies/detail/-/id=ssis00013/</p>\n<p><strong>Studio:</strong> https://www.s1s1s1.com/works/detail/ssis013/</p>",
|
||||
"created_at": "2021-03-22 14:40:56"
|
||||
"created_at": "2021-03-22 14:40:56",
|
||||
"created_at_iso": "2021-03-22T14:40:56+01:00"
|
||||
},
|
||||
{
|
||||
"id": 39245,
|
||||
@@ -3049,7 +3100,8 @@
|
||||
"images/torrent/f/5/1/nqjy8fpqskdj.jpg"
|
||||
],
|
||||
"description": "<p>BDISO: https://exoticaz.to/torrent/34023</p>",
|
||||
"created_at": "2021-03-17 01:27:10"
|
||||
"created_at": "2021-03-17 01:27:10",
|
||||
"created_at_iso": "2021-03-17T01:27:10+01:00"
|
||||
},
|
||||
{
|
||||
"id": 38628,
|
||||
@@ -3098,7 +3150,8 @@
|
||||
"images/torrent/6/f/e/juc07vprbndp.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2021-02-28 08:42:42"
|
||||
"created_at": "2021-02-28 08:42:42",
|
||||
"created_at_iso": "2021-02-28T08:42:42+01:00"
|
||||
},
|
||||
{
|
||||
"id": 38281,
|
||||
@@ -3159,7 +3212,8 @@
|
||||
"images/torrent/8/6/8/vazvb4ycnmb8.jpg"
|
||||
],
|
||||
"description": "<p><strong>During Her Business Trip, To Her Surprise, She Was Booked Into The Same Hotel Room With Her Asshole Boss (Whom She Hates With A Passion) ... So He Banged Her With Excessive Lust And Relentless Piston-Pounding Thrusts And Kept This Big Tits Office Lady Cumming All Night Long Yua Mikami</strong></p>\n<p><strong>Website:</strong> https://www.s1s1s1.com/works/detail/ssni989/</p>\n<p><strong>R18:</strong> https://www.r18.com/videos/vod/movies/detail/-/id=ssni00989/</p>\n<p>+++ [HD] SSNI-989 出張先の旅館で大嫌いなセクハラ上司とまさかの相部屋に…絶倫過ぎる粘着ピストンで一晩中イカされ続けた巨乳OL 三上悠亜</p>",
|
||||
"created_at": "2021-02-17 22:42:58"
|
||||
"created_at": "2021-02-17 22:42:58",
|
||||
"created_at_iso": "2021-02-17T22:42:58+01:00"
|
||||
},
|
||||
{
|
||||
"id": 37072,
|
||||
@@ -3215,7 +3269,8 @@
|
||||
"images/torrent/6/6/9/1ms8yiiif82h.jpg"
|
||||
],
|
||||
"description": "<p><strong>Website:</strong> https://www.s1s1s1.com/works/detail/ssni963/</p>\n<p><strong>R18:</strong> https://www.r18.com/videos/vod/movies/detail/-/id=ssni00963/</p>\n<p>+++ [HD] SSNI-963 日本一のSEXコスプレイヤー 三上悠亜</p>",
|
||||
"created_at": "2021-01-16 02:52:11"
|
||||
"created_at": "2021-01-16 02:52:11",
|
||||
"created_at_iso": "2021-01-16T02:52:11+01:00"
|
||||
},
|
||||
{
|
||||
"id": 36791,
|
||||
@@ -3269,7 +3324,8 @@
|
||||
"images/torrent/b/b/4/pampaacdzpoa.jpg"
|
||||
],
|
||||
"description": "<p>credits to perfectcanary</p>",
|
||||
"created_at": "2021-01-09 03:44:31"
|
||||
"created_at": "2021-01-09 03:44:31",
|
||||
"created_at_iso": "2021-01-09T03:44:31+01:00"
|
||||
},
|
||||
{
|
||||
"id": 36790,
|
||||
@@ -3324,7 +3380,8 @@
|
||||
"images/torrent/a/a/c/hyaed34gxuic.jpg"
|
||||
],
|
||||
"description": "<p>credits to perfectcanary</p>",
|
||||
"created_at": "2021-01-09 03:44:02"
|
||||
"created_at": "2021-01-09 03:44:02",
|
||||
"created_at_iso": "2021-01-09T03:44:02+01:00"
|
||||
},
|
||||
{
|
||||
"id": 36789,
|
||||
@@ -3379,7 +3436,8 @@
|
||||
"images/torrent/7/8/6/3uotc2hw7s6l.jpg"
|
||||
],
|
||||
"description": "<p>credits to perfectcanary</p>",
|
||||
"created_at": "2021-01-09 03:42:52"
|
||||
"created_at": "2021-01-09 03:42:52",
|
||||
"created_at_iso": "2021-01-09T03:42:52+01:00"
|
||||
},
|
||||
{
|
||||
"id": 36465,
|
||||
@@ -3436,7 +3494,8 @@
|
||||
"images/torrent/1/1/a/x6yztt33psfz.jpg"
|
||||
],
|
||||
"description": "<p>配信開始日: 2020/02/07<br>商品発売日: 2020/02/07<br>収録時間: 87分 (HQ版:87分)<br>出演者: 三上悠亜<br>監督: ZAMPA<br>シリーズ: S1 VR<br>メーカー: エスワン ナンバーワンスタイル<br>レーベル: S1 VR<br>コンテンツタイプ: 3D<br>ジャンル: ハイクオリティVR 独占配信 単体作品 VR専用 騎乗位 巨乳 アイドル・芸能人 主観<br>品番: sivr00067</p>\n<p>待望のHQ超なめらか高画質VRで三上悠亜とボクのエッチで可愛すぎる神同棲生活!「僕の彼女はトップAVアイドルの、あの三上悠亜.・」超多忙なトップAVアイドルでありながら、実はこっそりボクと付き合っている夢のような展開!愛されて、心配されて、嫉妬されて、普段は見れない等身大のアイドルの素顔を完全独占!最高の距離感で四六時中SEXに明け暮れる究極同棲VR</p>",
|
||||
"created_at": "2020-12-30 13:29:53"
|
||||
"created_at": "2020-12-30 13:29:53",
|
||||
"created_at_iso": "2020-12-30T13:29:53+01:00"
|
||||
},
|
||||
{
|
||||
"id": 36096,
|
||||
@@ -3491,7 +3550,8 @@
|
||||
"images/torrent/1/9/e/dtxkxrwdpf3m.jpg"
|
||||
],
|
||||
"description": "<p><strong>Website:</strong> https://www.s1s1s1.com/works/detail/ssni939/</p>\n<p><strong>R18:</strong> https://www.r18.com/videos/vod/movies/detail/-/id=ssni00939/</p>\n<p><strong>1080p</strong> : https://exoticaz.to/torrent/35862</p>",
|
||||
"created_at": "2020-12-22 00:57:11"
|
||||
"created_at": "2020-12-22 00:57:11",
|
||||
"created_at_iso": "2020-12-22T00:57:11+01:00"
|
||||
},
|
||||
{
|
||||
"id": 35862,
|
||||
@@ -3546,7 +3606,8 @@
|
||||
"images/torrent/a/9/4/ksgywpxmjg9h.jpg"
|
||||
],
|
||||
"description": "<p><strong>Website:</strong> https://www.s1s1s1.com/works/detail/ssni939/</p>\n<p><strong>R18:</strong> https://www.r18.com/videos/vod/movies/detail/-/id=ssni00939/</p>\n<p>+++ [HD] SSNI-939 執拗な焦らしと寸止めで極限まで感度を高めた恍惚キメセク大絶頂FUCK 三上悠亜</p>",
|
||||
"created_at": "2020-12-17 03:16:29"
|
||||
"created_at": "2020-12-17 03:16:29",
|
||||
"created_at_iso": "2020-12-17T03:16:29+01:00"
|
||||
},
|
||||
{
|
||||
"id": 34686,
|
||||
@@ -3608,7 +3669,8 @@
|
||||
"images/torrent/3/0/4/dtb70p4cfkhi.jpg"
|
||||
],
|
||||
"description": "<p><strong>Website:</strong> https://www.s1s1s1.com/works/detail/ssni916/</p>\n<p><strong>R18:</strong> https://www.r18.com/videos/vod/movies/detail/-/id=ssni00916/</p>\n<p>+++ [HD] SSNI-916 スク水巨乳の水泳部顧問は元グラビアアイドル…濡れ透ける先生の巨乳に我慢できなくて、じっとり汗だくひたすら密着交尾 三上悠亜</p>\n<p>Play with the water in the classroom or in the pool.... Wet nipples, spilling god milk, high leg that eats into the crotch. Meat feeling Sk water dynamite to nail the students! Healthy BODY and Rodro Special SEX Bathed In The Shining Midsummer Sun! Unstoppable sexual desire of the unending men flocking to the squiring big that attach perfectly with dripping sweat! The Swimsuit Big That Shake Violently Is While Wearing It! All boys love their teachers.</p>\n<p>Release Date:<br>Nov. 19, 2020</p>\n<p>Runtime:<br>145min. (HD: 145min.)</p>\n<p>Director:<br>ZAMPA</p>\n<p>Studio:<br>S1 NO.1 STYLE</p>\n<p>Label:<br>S1 NO.1 STYLE</p>\n<p>Channel:<br>----</p>\n<p>Content ID:<br>ssni00916</p>\n<p>DVD ID:<br>SSNI-916</p>\n<p>Series:<br>----</p>\n<p>Languages:<br>Japanese</p>",
|
||||
"created_at": "2020-11-18 23:55:07"
|
||||
"created_at": "2020-11-18 23:55:07",
|
||||
"created_at_iso": "2020-11-18T23:55:07+01:00"
|
||||
},
|
||||
{
|
||||
"id": 34051,
|
||||
@@ -3660,7 +3722,8 @@
|
||||
"images/torrent/9/e/9/0ocpe6n3lsc6.jpg"
|
||||
],
|
||||
"description": "<p>Title: Ever Since That Day When My Father-In-Law Raped Me… Yua Mikami</p>\n<p>Date: October 22, 2019 </p>\n<p>Time: 02:29:00<br><br>Pornstars: Yua Mikami</p>\n<p>Studio: S1 NO.1 Style</p>",
|
||||
"created_at": "2020-11-03 06:16:30"
|
||||
"created_at": "2020-11-03 06:16:30",
|
||||
"created_at_iso": "2020-11-03T06:16:30+01:00"
|
||||
},
|
||||
{
|
||||
"id": 34049,
|
||||
@@ -3713,7 +3776,8 @@
|
||||
"images/torrent/9/0/4/5yho2mvumies.jpg"
|
||||
],
|
||||
"description": "<p>Title: TEK-072 Climax x 4 Hardcore Scenes Yua Mikami</p>\n<p>Date: August 1, 2020</p>\n<p>Time: 02:55:00</p>\n<p>Pornstars: Yua Mikami</p>\n<p>Studio: MUTEKI</p>\n<p>https://www.javlibrary.com/en/?v=javlild2tm</p>",
|
||||
"created_at": "2020-11-03 06:06:51"
|
||||
"created_at": "2020-11-03 06:06:51",
|
||||
"created_at_iso": "2020-11-03T06:06:51+01:00"
|
||||
},
|
||||
{
|
||||
"id": 34024,
|
||||
@@ -3764,7 +3828,8 @@
|
||||
"images/torrent/d/3/2/qeylkbizibzy.jpg"
|
||||
],
|
||||
"description": "<p>Titile: Yua Mikami Is Completely Tied Down And Unable To Move Unlimited Piston Pounding Fucks That</p>\n<p>Date: October 22, 2019 </p>\n<p>Time: 02:34:00</p>\n<p>Pornstars: Yua Mikami</p>\n<p>Studio: S1 NO.1 Style</p>",
|
||||
"created_at": "2020-11-02 05:13:10"
|
||||
"created_at": "2020-11-02 05:13:10",
|
||||
"created_at_iso": "2020-11-02T05:13:10+01:00"
|
||||
},
|
||||
{
|
||||
"id": 34023,
|
||||
@@ -3813,7 +3878,8 @@
|
||||
"images/torrent/c/0/2/pvoql1zscpdl.jpg"
|
||||
],
|
||||
"description": "<p>Title: SSNI-388 Yua Mikami In A 16-Consecutive Cum Shot Slut Assault She’s Tied Up Men For Some</p>\n<p>Date: October 22, 2019</p>\n<p>Pornstars: Yua Mikami</p>\n<p>Studio: S1 NO.1 Style</p>\n<p>Time: 02:04:00</p>",
|
||||
"created_at": "2020-11-02 04:57:51"
|
||||
"created_at": "2020-11-02 04:57:51",
|
||||
"created_at_iso": "2020-11-02T04:57:51+01:00"
|
||||
},
|
||||
{
|
||||
"id": 33466,
|
||||
@@ -3870,7 +3936,8 @@
|
||||
"images/torrent/1/6/0/bwivpujoltwr.jpg"
|
||||
],
|
||||
"description": "<p><strong>Website:</strong> https://www.s1s1s1.com/works/detail/ssni888/</p>\n<p><strong>R18:</strong> https://www.r18.com/videos/vod/movies/detail/-/id=ssni00888/</p>\n<p>+++ [HD] SSNI-888 絶頂の向こう側でイッてイッてイキまくる確変オーガズム状態のまま48時間耐久で一生分ハメまくった三上悠亜のヤバい性交</p>",
|
||||
"created_at": "2020-10-17 01:29:36"
|
||||
"created_at": "2020-10-17 01:29:36",
|
||||
"created_at_iso": "2020-10-17T01:29:36+02:00"
|
||||
},
|
||||
{
|
||||
"id": 32469,
|
||||
@@ -3925,7 +3992,8 @@
|
||||
"images/torrent/7/f/4/qn6q2w8bgjzg.jpg"
|
||||
],
|
||||
"description": "<p><strong>Website:</strong> https://www.s1s1s1.com/works/detail/ssni865/</p>\n<p><strong>R18:</strong> https://www.r18.com/videos/vod/movies/detail/-/id=ssni00865/</p>\n<p>+++ [HD] SSNI-865 巨乳OLと絶倫童貞上司の毎週エスカレートする週末のセックス残業 三上悠亜</p>",
|
||||
"created_at": "2020-09-17 03:27:12"
|
||||
"created_at": "2020-09-17 03:27:12",
|
||||
"created_at_iso": "2020-09-17T03:27:12+02:00"
|
||||
},
|
||||
{
|
||||
"id": 31490,
|
||||
@@ -4118,7 +4186,8 @@
|
||||
"images/torrent/1/0/d/9wmpejovzbg7.jpg"
|
||||
],
|
||||
"description": "<p>A quarter terabyte of Yua Mikami videos. Pretty close to a complete solo discography as of this date. Mostly 1080p, a few 720p. No super loud Chinese language ads at the beginnings of any videos, mostly unobtrusive watermarks. A few of the Muteki vids are decensored with the sorta annoying JAVPlayer watermark.</p>",
|
||||
"created_at": "2020-08-20 00:49:29"
|
||||
"created_at": "2020-08-20 00:49:29",
|
||||
"created_at_iso": "2020-08-20T00:49:29+02:00"
|
||||
},
|
||||
{
|
||||
"id": 31465,
|
||||
@@ -4175,7 +4244,8 @@
|
||||
"images/torrent/7/4/f/npjdewgqw8bj.jpg"
|
||||
],
|
||||
"description": "<p><strong>Website:</strong> https://www.s1s1s1.com/works/detail/ssni802/</p>\n<p><strong>R18:</strong> https://www.r18.com/videos/vod/movies/detail/-/id=ssni00802/</p>\n<p>+++ [HD] SSNI-802 『教師失格』帰宅困難になったあの日、嵐が過ぎるまでひたすら男子生徒とハメまくりました…。 三上悠亜</p>\n<p>Release Date: June 14, 2020<br>Runtime: 117min. (HD: 117min.)<br>Director: Amazing Meat<br>Studio: S1 NO.1 STYLE<br>Label: S1 NO.1 STYLE</p>\n<p>I'm a slut priest... On that day when a large typhoon hit directly, the two broke their line... On the night when it was difficult to return home, the unstoppable desire of a female teacher who shakes her big tits until the morning and gets turbulent like a storm. \"Much more... messed up... Ah... No... Iku...!!!\" \"Before I am a teacher, I am a woman...\"</p>",
|
||||
"created_at": "2020-08-19 12:04:41"
|
||||
"created_at": "2020-08-19 12:04:41",
|
||||
"created_at_iso": "2020-08-19T12:04:41+02:00"
|
||||
},
|
||||
{
|
||||
"id": 30383,
|
||||
@@ -4220,7 +4290,8 @@
|
||||
"images/torrent/9/9/9/i3ciw7xmwson.jpg"
|
||||
],
|
||||
"description": "<p>[SSNI-826] Yua Mikami 三上悠亜のPLATINUM SOAP 三上悠亞</p>\n<p>The finest customs to serve with the best body and best service! No matter how many times I ejaculate, the full erection doesn’t stop… I just ejaculated, but I’m jealous of any number of shots! Unlimited firing within the time. “Please give out as many shots as you want today.” Yua’s awesome technique will fulfill all your desires. For a while, Onakura, men’s esthetic, pin salo, SM club, finest soap. Platinum BODY and the finest service a total of 15 shots will ejaculate a special sex custom!</p>",
|
||||
"created_at": "2020-07-27 10:51:58"
|
||||
"created_at": "2020-07-27 10:51:58",
|
||||
"created_at_iso": "2020-07-27T10:51:58+02:00"
|
||||
},
|
||||
{
|
||||
"id": 29815,
|
||||
@@ -4269,7 +4340,8 @@
|
||||
"images/torrent/b/9/3/wvu3uhkwmxbz.jpg"
|
||||
],
|
||||
"description": "<p>【VR】エスワン15周年スペシャル共演 日本一のAV女優2人と超豪華ハーレム逆3P体験</p>\n<p>【VR】 15th Anniversary Of Esuan Special Co-starring 2 Best AV Actresses In Japan And A Super Luxury Harem Reverse 3P Experience</p>",
|
||||
"created_at": "2020-07-14 07:28:09"
|
||||
"created_at": "2020-07-14 07:28:09",
|
||||
"created_at_iso": "2020-07-14T07:28:09+02:00"
|
||||
},
|
||||
{
|
||||
"id": 29356,
|
||||
@@ -4315,7 +4387,8 @@
|
||||
"images/torrent/5/6/4/kdkmgw9mxjiy.jpg"
|
||||
],
|
||||
"description": "<p>Title: TEK-067 Princess Peach Mikami YuA</p>\n<p>ID: TEK-067<br>Release Date: 2015-06-01<br>Length: 180 min(s)<br>Director: ----<br>Maker: Muteki <br>Label: Muteki </p>\n<p>Ps: It was claimed to be the first real porn that Yua Mikami participated.</p>",
|
||||
"created_at": "2020-07-08 01:32:21"
|
||||
"created_at": "2020-07-08 01:32:21",
|
||||
"created_at_iso": "2020-07-08T01:32:21+02:00"
|
||||
},
|
||||
{
|
||||
"id": 29261,
|
||||
@@ -4366,7 +4439,8 @@
|
||||
"images/torrent/9/a/c/hocvufnx1xxg.jpg"
|
||||
],
|
||||
"description": "<p><span style=\"font-size:20px;\"><strong>Full Title</strong></span>: <span style=\"font-size:20px;\"><strong>Massive Cocks x Follow-Up Fucks x Large Orgies These 24 Massive Cocks Will Relentlessly Pump These Twitching And Cumming Pussies In A Furious Follow-Up Piston Pumping Ultra Large Orgies Special Yua Mikami<br></strong><br><span style=\"font-size:18px;\">Release Date: Oct. 18, 2018</span><br><span style=\"font-size:18px;\">Runtime: 117min. (HD: 117min.)</span><br><span style=\"font-size:18px;\">Director: ZAMPA</span><br><span style=\"font-size:18px;\">Studio: S1 NO.1 STYLE</span><br><span style=\"font-size:18px;\">Label: S1 NO.1 STYLE<br>Channel: S1 NO.1 STYLE, PRIME<br>Content ID: ssni00322<br>DVD ID: SSNI-322<br><br><a href=\"https://awscc3001.r18.com/litevideo/freepv/s/ssn/ssni00322/ssni00322_dmb_w.mp4\">Trailer</a></span></span></p>",
|
||||
"created_at": "2020-07-06 02:25:40"
|
||||
"created_at": "2020-07-06 02:25:40",
|
||||
"created_at_iso": "2020-07-06T02:25:40+02:00"
|
||||
},
|
||||
{
|
||||
"id": 27208,
|
||||
@@ -4419,7 +4493,8 @@
|
||||
"images/torrent/8/6/3/br1smc0lvdfy.png"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2020-05-31 03:07:27"
|
||||
"created_at": "2020-05-31 03:07:27",
|
||||
"created_at_iso": "2020-05-31T03:07:27+02:00"
|
||||
},
|
||||
{
|
||||
"id": 26018,
|
||||
@@ -4464,7 +4539,8 @@
|
||||
"images/torrent/c/e/d/fjzmigqdm3qt.jpg"
|
||||
],
|
||||
"description": "<p><strong>Yua Mikami in awesome POV scene working as a 5star soapland popstar girI</strong></p>\n<p><strong>Infiltrate the soapland where the strongest national idol you have ever dreamed of works! ! Immediate scale blowjob & immediate etch of greeting unwashed cock! Full body lip to anal & toes! Vacuum periscope Blow while bathing in the bath! Adhesive slimy mat that will serve hard! Full charter feeling full course 180 minutes unlimited firing! \"Please go and enjoy today!\"</strong></p>\n<p><a href=\"https://www.r18.com/videos/vod/movies/detail/-/id=tek00076/?i3_ref=search&i3_ord=1\">https://www.r18.com/videos/vod/movies/detail/-/id=tek00076/?i3_ref=search&i3_ord=1</a></p>",
|
||||
"created_at": "2020-03-16 20:11:31"
|
||||
"created_at": "2020-03-16 20:11:31",
|
||||
"created_at_iso": "2020-03-16T20:11:31+01:00"
|
||||
},
|
||||
{
|
||||
"id": 26005,
|
||||
@@ -4510,7 +4586,8 @@
|
||||
"images/torrent/6/5/4/lhkdfbqlsqlu.jpg"
|
||||
],
|
||||
"description": "<p>One day before summer vacation, I had a crazy sex in the classroom at sunset when no one was there. Push down to the bed in the nurse's room, fill the face in the skirt, and rub the young and tender big tits and peach ass. Titty fuck and fellatio into school swimsuit. The best girl in school, take off the uniform of a national idol school girl who is too angelic and roll up after school! Youth school sex! \"It's a secret to everyone.\"</p>\n<p><a href=\"https://www.r18.com/videos/vod/movies/detail/-/id=tek00079/\">https://www.r18.com/videos/vod/movies/detail/-/id=tek00079/</a></p>",
|
||||
"created_at": "2020-03-16 05:22:31"
|
||||
"created_at": "2020-03-16 05:22:31",
|
||||
"created_at_iso": "2020-03-16T05:22:31+01:00"
|
||||
},
|
||||
{
|
||||
"id": 26004,
|
||||
@@ -4553,7 +4630,8 @@
|
||||
"images/torrent/c/5/d/n5ciceiboq1l.jpg"
|
||||
],
|
||||
"description": "<p>\"More ... more kiss ...\" The obscene and hot sexy Kiss that the national idol Yua Mikami shows for the first time and the passion SEX that burns up! Temptation hot Licking Handjob & Footjob With A Lot Of drips. Saliva and pussy juice are intertwined and the pussy gets wet so shamefully! The climax FUCK of an odious kiss that licks the whole body of the idol! The most erotic idol of the strongest idol who pulls a string in love popularity sweaty kissing sex! !</p>\n<p><a href=\"https://www.r18.com/videos/vod/movies/detail/-/id=tek00080/\">https://www.r18.com/videos/vod/movies/detail/-/id=tek00080/</a></p>",
|
||||
"created_at": "2020-03-16 05:15:51"
|
||||
"created_at": "2020-03-16 05:15:51",
|
||||
"created_at_iso": "2020-03-16T05:15:51+01:00"
|
||||
},
|
||||
{
|
||||
"id": 25958,
|
||||
@@ -4598,7 +4676,8 @@
|
||||
"images/torrent/e/5/b/dtmfbfmqsekh.jpg"
|
||||
],
|
||||
"description": "<p>Yua Mikami is my one of my favourite JAV Actress, she is so pretty and have killer body. In this video she acts as your girlfriend.<br>she waits you at home, wash your dick and handjob it. she likes to kiss. in the bedroom she HJ you and you fingering her then she rides you cow girl style, missionary and doggy style. she likes travelling with you and give you nice service in the bathroom during vacation and fucks around in the bathtub then continue fucking in the bedroom hotels.</p>",
|
||||
"created_at": "2020-03-10 04:08:49"
|
||||
"created_at": "2020-03-10 04:08:49",
|
||||
"created_at_iso": "2020-03-10T04:08:49+01:00"
|
||||
},
|
||||
{
|
||||
"id": 25204,
|
||||
@@ -4646,7 +4725,8 @@
|
||||
"images/torrent/f/c/a/5rsj5fnyw7sy.jpg"
|
||||
],
|
||||
"description": "<p>Release Date: Oct. 12, 2019<br>Runtime: 149min. (HD: 149min.)<br>Director: Mon C<br>Studio: S1 NO.1 STYLE<br>Label: S1 NO.1 STYLE<br>Content ID: ssni00589<br>DVD ID: SSNI-589<br>Series: Full-Power Cumming Cowgirl<br>Languages: Japanese</p>\n<p>三上悠亜の全力イクイク騎乗位マニアックス 三上悠亜</p>\n<p>「ほら、おま●こに挿ってるの丸見えだよ…」国民的アイドルの大胆!騎乗位マニアックス!前後左右360°尻肉揺れまくり徹底アングル!クビレ腰と肉弾ヒップを一心不乱に振りまくる!男根を咥え込む騎乗位の乱舞!イッてもイッても止めない高速グラインド!!イキまくるクビレ、尻肉大迫力神アングル!絶頂汁を撒き散らしそれでも振り続けるアグレッシブFUCK!! ※こちらはBlu-ray Disc専用ソフトです。対応プレイヤー以外では再生できませんのでご注意ください。 ★アダルトブック「三上悠亜写真集」の商品ご購入はこちらから★ 「コンビニ受取」対象商品です。詳しくはこちらをご覧ください。</p>",
|
||||
"created_at": "2019-12-13 00:30:33"
|
||||
"created_at": "2019-12-13 00:30:33",
|
||||
"created_at_iso": "2019-12-13T00:30:33+01:00"
|
||||
},
|
||||
{
|
||||
"id": 24777,
|
||||
@@ -4729,7 +4809,8 @@
|
||||
"images/torrent/4/0/1/qiq9l0g9b4lb.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2019-10-12 07:37:42"
|
||||
"created_at": "2019-10-12 07:37:42",
|
||||
"created_at_iso": "2019-10-12T07:37:42+02:00"
|
||||
},
|
||||
{
|
||||
"id": 24714,
|
||||
@@ -4793,7 +4874,8 @@
|
||||
"images/torrent/0/0/c/pz6a1om1zcj6.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2019-10-03 07:22:22"
|
||||
"created_at": "2019-10-03 07:22:22",
|
||||
"created_at_iso": "2019-10-03T07:22:22+02:00"
|
||||
},
|
||||
{
|
||||
"id": 24432,
|
||||
@@ -4832,7 +4914,8 @@
|
||||
"images/torrent/c/3/e/ivi2v3xvuxvf.png"
|
||||
],
|
||||
"description": "<p>Yua mikami (mosaic removed) not exactly more like digitally altered person seems to have done a good job albeit the quality is not the greatest.</p>",
|
||||
"created_at": "2019-08-06 05:01:10"
|
||||
"created_at": "2019-08-06 05:01:10",
|
||||
"created_at_iso": "2019-08-06T05:01:10+02:00"
|
||||
},
|
||||
{
|
||||
"id": 22633,
|
||||
@@ -4880,7 +4963,8 @@
|
||||
"images/torrent/d/1/d/siepkvzdjdjm.png"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2019-02-16 01:52:32"
|
||||
"created_at": "2019-02-16 01:52:32",
|
||||
"created_at_iso": "2019-02-16T01:52:32+01:00"
|
||||
},
|
||||
{
|
||||
"id": 22606,
|
||||
@@ -4926,7 +5010,8 @@
|
||||
"images/torrent/f/9/9/scjrral5midb.png"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2019-02-14 09:58:29"
|
||||
"created_at": "2019-02-14 09:58:29",
|
||||
"created_at_iso": "2019-02-14T09:58:29+01:00"
|
||||
},
|
||||
{
|
||||
"id": 21647,
|
||||
@@ -4975,7 +5060,8 @@
|
||||
"images/torrent/1/e/9/zb4gphrposw0.gif"
|
||||
],
|
||||
"description": "<p>no sexual activity in the show.</p>\n<p>for details : http://www.r18.com/videos/vod/movies/detail/-/id=oae00165/?i3_ref=search&i3_ord=1</p>",
|
||||
"created_at": "2018-12-16 20:31:03"
|
||||
"created_at": "2018-12-16 20:31:03",
|
||||
"created_at_iso": "2018-12-16T20:31:03+01:00"
|
||||
},
|
||||
{
|
||||
"id": 21564,
|
||||
@@ -5021,7 +5107,8 @@
|
||||
"images/torrent/b/5/f/r0ml2pj3xrvq.jpg"
|
||||
],
|
||||
"description": "<p>MUTEKI 10th Anniversary Special Project.</p>",
|
||||
"created_at": "2018-12-06 02:16:35"
|
||||
"created_at": "2018-12-06 02:16:35",
|
||||
"created_at_iso": "2018-12-06T02:16:35+01:00"
|
||||
},
|
||||
{
|
||||
"id": 21561,
|
||||
@@ -5075,7 +5162,8 @@
|
||||
"images/torrent/7/c/3/kvjyuskn3mkf.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2018-12-05 19:43:15"
|
||||
"created_at": "2018-12-05 19:43:15",
|
||||
"created_at_iso": "2018-12-05T19:43:15+01:00"
|
||||
},
|
||||
{
|
||||
"id": 20515,
|
||||
@@ -5200,7 +5288,8 @@
|
||||
"images/torrent/a/1/9/5ngcygiazvrv.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2018-09-07 07:56:21"
|
||||
"created_at": "2018-09-07 07:56:21",
|
||||
"created_at_iso": "2018-09-07T07:56:21+02:00"
|
||||
},
|
||||
{
|
||||
"id": 15261,
|
||||
@@ -5241,7 +5330,8 @@
|
||||
"images/torrent/e/f/6/ubgilv5db5mo.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2018-06-02 17:44:49"
|
||||
"created_at": "2018-06-02 17:44:49",
|
||||
"created_at_iso": "2018-06-02T17:44:49+02:00"
|
||||
},
|
||||
{
|
||||
"id": 4333,
|
||||
@@ -5282,7 +5372,8 @@
|
||||
"images/torrent/c/9/c/3qxdyhvuefwu.jpg"
|
||||
],
|
||||
"description": "<pre><br>General<br>Complete name : Tek081.mp4<br>Format : MPEG-4<br>Format profile : Base Media / Version 2<br>Codec ID : mp42 (isom/iso2/mp41)<br>File size : 1.49 GiB<br>Duration : 2 h 51 min<br>Overall bit rate mode : Variable<br>Overall bit rate : 1 243 kb/s<br>Encoded date : UTC 2017-02-12 20:24:00<br>Tagged date : UTC 2017-02-12 20:24:00<br>Writing application : HandBrake 1.0.2 2017012200<br><br>Video<br>ID : 1<br>Format : HEVC<br>Format/Info : High Efficiency Video Coding<br>Format profile : Main@L3.1@Main<br>Codec ID : hev1<br>Codec ID/Info : High Efficiency Video Coding<br>Duration : 2 h 51 min<br>Bit rate : 1 139 kb/s<br>Width : 1 280 pixels<br>Height : 720 pixels<br>Display aspect ratio : 16:9<br>Frame rate mode : Variable<br>Frame rate : 28.707 FPS<br>Minimum frame rate : 11.446 FPS<br>Maximum frame rate : 195.652 FPS<br>Color space : YUV<br>Chroma subsampling : 4:2:0<br>Bit depth : 8 bits<br>Bits/(Pixel*Frame) : 0.043<br>Stream size : 1.36 GiB (92%)<br>Writing library : x265 2.1:[Windows][GCC 5.4.0][64 bit] 8bit<br>Encoding settings : wpp / ctu=64 / min-cu-size=8 / max-tu-size=32 / tu-intra-depth=1 / tu-inter-depth=1 / me=1 / subme=2 / merange=57 / no-rect / no-amp / max-merge=2 / temporal-mvp / no-early-skip / rskip / rdpenalty=0 / no-tskip / no-tskip-fast / strong-intra-smoothing / no-lossless / no-cu-lossless / no-constrained-intra / no-fast-intra / open-gop / no-temporal-layers / interlace=0 / keyint=290 / min-keyint=29 / scenecut=40 / rc-lookahead=20 / lookahead-slices=4 / bframes=4 / bframe-bias=0 / b-adapt=2 / ref=3 / limit-refs=3 / no-limit-modes / weightp / no-weightb / aq-mode=1 / qg-size=32 / aq-strength=1.00 / cbqpoffs=0 / crqpoffs=0 / rd=3 / psy-rd=2.00 / rdoq-level=0 / psy-rdoq=0.00 / log2-max-poc-lsb=8 / no-rd-refine / signhide / deblock=0:0 / sao / no-sao-non-deblock / b-pyramid / cutree / no-intra-refresh / rc=crf / crf=22.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ipratio=1.40 / pbratio=1.30<br>Encoded date : UTC 2017-02-12 20:24:00<br>Tagged date : UTC 2017-02-12 20:24:00<br>Color range : Limited<br>Color primaries : BT.709<br>Transfer characteristics : BT.709<br>Matrix coefficients : BT.709<br><br>Audio<br>ID : 2<br>Format : AAC<br>Format/Info : Advanced Audio Codec<br>Format profile : LC<br>Codec ID : mp4a-40-2<br>Duration : 2 h 51 min<br>Bit rate mode : Variable<br>Bit rate : 96.0 kb/s<br>Channel(s) : 2 channels<br>Channel positions : Front: L R<br>Sampling rate : 48.0 kHz<br>Frame rate : 46.875 FPS (1024 SPF)<br>Compression mode : Lossy<br>Stream size : 118 MiB (8%)<br>Title : Stereo / Stereo<br>Language : English<br>Default : Yes<br>Alternate group : 1<br>Encoded date : UTC 2017-02-12 20:24:00<br>Tagged date : UTC 2017-02-12 20:24:00<br><br></pre>",
|
||||
"created_at": "2018-03-19 06:01:40"
|
||||
"created_at": "2018-03-19 06:01:40",
|
||||
"created_at_iso": "2018-03-19T06:01:40+01:00"
|
||||
},
|
||||
{
|
||||
"id": 4241,
|
||||
@@ -5323,7 +5414,8 @@
|
||||
"images/torrent/c/4/4/o8jsphfh7rr9.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2018-02-20 02:46:45"
|
||||
"created_at": "2018-02-20 02:46:45",
|
||||
"created_at_iso": "2018-02-20T02:46:45+01:00"
|
||||
},
|
||||
{
|
||||
"id": 4191,
|
||||
@@ -5364,7 +5456,8 @@
|
||||
"images/torrent/9/6/1/c1szrkxbf6fn.jpg"
|
||||
],
|
||||
"description": null,
|
||||
"created_at": "2018-02-05 05:39:41"
|
||||
"created_at": "2018-02-05 05:39:41",
|
||||
"created_at_iso": "2018-02-05T05:39:41+01:00"
|
||||
},
|
||||
{
|
||||
"id": 4101,
|
||||
@@ -5405,7 +5498,8 @@
|
||||
"images/torrent/7/4/6/9r3ars6pa9cn.jpg"
|
||||
],
|
||||
"description": "<pre><br><br>General<br>Complete name : snis896.mp4<br>Format : MPEG-4<br>Format profile : Base Media / Version 2<br>Codec ID : mp42 (isom/iso2/mp41)<br>File size : 1.40 GiB<br>Duration : 1 h 58 min<br>Overall bit rate mode : Variable<br>Overall bit rate : 1 691 kb/s<br>Encoded date : UTC 2017-05-31 19:30:00<br>Tagged date : UTC 2017-05-31 19:30:00<br>Writing application : HandBrake 1.0.7 2017040900<br><br>Video<br>ID : 1<br>Format : HEVC<br>Format/Info : High Efficiency Video Coding<br>Format profile : Main@L3.1@Main<br>Codec ID : hev1<br>Codec ID/Info : High Efficiency Video Coding<br>Duration : 1 h 58 min<br>Bit rate : 1 588 kb/s<br>Width : 1 280 pixels<br>Height : 720 pixels<br>Display aspect ratio : 16:9<br>Frame rate mode : Constant<br>Frame rate : 30.000 FPS<br>Color space : YUV<br>Chroma subsampling : 4:2:0<br>Bit depth : 8 bits<br>Bits/(Pixel*Frame) : 0.057<br>Stream size : 1.32 GiB (94%)<br>Writing library : x265 2.1:[Windows][GCC 5.3.1][64 bit] 8bit<br>Encoding settings : wpp / ctu=64 / min-cu-size=8 / max-tu-size=32 / tu-intra-depth=1 / tu-inter-depth=1 / me=1 / subme=2 / merange=57 / no-rect / no-amp / max-merge=2 / temporal-mvp / no-early-skip / rskip / rdpenalty=0 / no-tskip / no-tskip-fast / strong-intra-smoothing / no-lossless / no-cu-lossless / no-constrained-intra / no-fast-intra / open-gop / no-temporal-layers / interlace=0 / keyint=300 / min-keyint=30 / scenecut=40 / rc-lookahead=20 / lookahead-slices=4 / bframes=4 / bframe-bias=0 / b-adapt=2 / ref=3 / limit-refs=3 / no-limit-modes / weightp / no-weightb / aq-mode=1 / qg-size=32 / aq-strength=1.00 / cbqpoffs=0 / crqpoffs=0 / rd=3 / psy-rd=2.00 / rdoq-level=0 / psy-rdoq=0.00 / log2-max-poc-lsb=8 / no-rd-refine / signhide / deblock=0:0 / sao / no-sao-non-deblock / b-pyramid / cutree / no-intra-refresh / rc=crf / crf=20.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ipratio=1.40 / pbratio=1.30<br>Encoded date : UTC 2017-05-31 19:30:00<br>Tagged date : UTC 2017-05-31 19:30:00<br>Color range : Limited<br>Color primaries : BT.709<br>Transfer characteristics : BT.709<br>Matrix coefficients : BT.709<br><br>Audio<br>ID : 2<br>Format : AAC<br>Format/Info : Advanced Audio Codec<br>Format profile : LC<br>Codec ID : 40<br>Duration : 1 h 58 min<br>Bit rate mode : Variable<br>Bit rate : 96.0 kb/s<br>Channel(s) : 2 channels<br>Channel positions : Front: L R<br>Sampling rate : 48.0 kHz<br>Frame rate : 46.875 FPS (1024 spf)<br>Compression mode : Lossy<br>Stream size : 81.6 MiB (6%)<br>Title : Stereo / Stereo<br>Default : Yes<br>Alternate group : 1<br>Encoded date : UTC 2017-05-31 19:30:00<br>Tagged date : UTC 2017-05-31 19:30:00<br><br></pre>",
|
||||
"created_at": "2017-12-24 02:51:02"
|
||||
"created_at": "2017-12-24 02:51:02",
|
||||
"created_at_iso": "2017-12-24T02:51:02+01:00"
|
||||
},
|
||||
{
|
||||
"id": 4002,
|
||||
@@ -5446,7 +5540,8 @@
|
||||
"images/torrent/7/d/3/wj64npz8aizr.jpg"
|
||||
],
|
||||
"description": "<p>三上悠亜<br>TEK-071 快感(MUTEKI-2016年1月1日)</p>",
|
||||
"created_at": "2017-11-16 03:02:55"
|
||||
"created_at": "2017-11-16 03:02:55",
|
||||
"created_at_iso": "2017-11-16T03:02:55+01:00"
|
||||
},
|
||||
{
|
||||
"id": 3951,
|
||||
@@ -5487,7 +5582,8 @@
|
||||
"images/torrent/c/1/7/herqbzuq6jj4.jpg"
|
||||
],
|
||||
"description": "<p>三上悠亜<br>TEK-067 Princess Peach(MUTEKI-2015年6月1日)</p>",
|
||||
"created_at": "2017-11-12 14:47:18"
|
||||
"created_at": "2017-11-12 14:47:18",
|
||||
"created_at_iso": "2017-11-12T14:47:18+01:00"
|
||||
},
|
||||
{
|
||||
"id": 16896,
|
||||
@@ -5535,7 +5631,8 @@
|
||||
"images/torrent/8/a/a/ena0fdra1rif.jpg"
|
||||
],
|
||||
"description": "<p>[SSNI-030] Mikami Yua Fan Thanksgiving National Idol x General Users 20 People 'Guttyfan and SEX Economy' Hime Meakuri Special<br><br></p>\n<pre><br><br></pre>",
|
||||
"created_at": "2017-10-15 06:46:48"
|
||||
"created_at": "2017-10-15 06:46:48",
|
||||
"created_at_iso": "2017-10-15T06:46:48+02:00"
|
||||
},
|
||||
{
|
||||
"id": 15273,
|
||||
@@ -5577,7 +5674,8 @@
|
||||
"images/torrent/f/6/5/srlry3vu9kas.jpg"
|
||||
],
|
||||
"description": "<p>SSNI-009 National Idol Life First First Freak!Big Caps 23 Endless Unlimited Sex - Yua Mikami<br><br></p>",
|
||||
"created_at": "2017-10-11 02:33:59"
|
||||
"created_at": "2017-10-11 02:33:59",
|
||||
"created_at_iso": "2017-10-11T02:33:59+02:00"
|
||||
},
|
||||
{
|
||||
"id": 17757,
|
||||
@@ -5623,7 +5721,8 @@
|
||||
"images/torrent/3/1/6/21sudpyouj3f.jpg"
|
||||
],
|
||||
"description": "SSNI-009 Our National Idol First Gangbang! Three raw scenes. 23 big cocks endless unlimited sex ~ Yua Mikami<br><br><pre><br><br></pre>",
|
||||
"created_at": "2017-09-14 01:19:43"
|
||||
"created_at": "2017-09-14 01:19:43",
|
||||
"created_at_iso": "2017-09-14T01:19:43+02:00"
|
||||
},
|
||||
{
|
||||
"id": 17364,
|
||||
@@ -5668,7 +5767,8 @@
|
||||
"images/torrent/f/a/b/tvqctziuy8k2.jpg"
|
||||
],
|
||||
"description": "SNIS-964 Covered In Sweat, ?**, And Saliva: Dripping Wet Sex With A National Pop Star ~ YuA Mikami<br><br><pre><br><br></pre>",
|
||||
"created_at": "2017-09-01 22:56:53"
|
||||
"created_at": "2017-09-01 22:56:53",
|
||||
"created_at_iso": "2017-09-01T22:56:53+02:00"
|
||||
}
|
||||
],
|
||||
"first_page_url": "https://exoticaz.to/api/v1/jackett/torrents?search=yua%20mikami&page=1",
|
||||
|
File diff suppressed because one or more lines are too long
@@ -109,7 +109,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-21 00:24:49"
|
||||
"created_at": "2021-03-21 00:24:49",
|
||||
"created_at_iso": "2021-03-21T00:24:49-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78501,
|
||||
@@ -159,7 +160,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-19 21:52:21"
|
||||
"created_at": "2021-03-19 21:52:21",
|
||||
"created_at_iso": "2021-03-19T21:52:21-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78496,
|
||||
@@ -209,7 +211,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-19 01:57:43"
|
||||
"created_at": "2021-03-19 01:57:43",
|
||||
"created_at_iso": "2021-03-19T01:57:43-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78494,
|
||||
@@ -259,7 +262,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-18 14:36:10"
|
||||
"created_at": "2021-03-18 14:36:10",
|
||||
"created_at_iso": "2021-03-18T14:36:10-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78491,
|
||||
@@ -305,7 +309,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-18 09:26:08"
|
||||
"created_at": "2021-03-18 09:26:08",
|
||||
"created_at_iso": "2021-03-18T09:26:08-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78490,
|
||||
@@ -351,7 +356,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-18 09:05:55"
|
||||
"created_at": "2021-03-18 09:05:55",
|
||||
"created_at_iso": "2021-03-18T09:05:55-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78488,
|
||||
@@ -465,7 +471,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-18 07:29:18"
|
||||
"created_at": "2021-03-18 07:29:18",
|
||||
"created_at_iso": "2021-03-18T07:29:18-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78486,
|
||||
@@ -511,7 +518,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-18 07:09:34"
|
||||
"created_at": "2021-03-18 07:09:34",
|
||||
"created_at_iso": "2021-03-18T07:09:34-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78485,
|
||||
@@ -569,7 +577,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-18 06:22:28"
|
||||
"created_at": "2021-03-18 06:22:28",
|
||||
"created_at_iso": "2021-03-18T06:22:28-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78483,
|
||||
@@ -615,7 +624,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-18 04:28:51"
|
||||
"created_at": "2021-03-18 04:28:51",
|
||||
"created_at_iso": "2021-03-18T04:28:51-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78481,
|
||||
@@ -801,7 +811,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-18 03:25:16"
|
||||
"created_at": "2021-03-18 03:25:16",
|
||||
"created_at_iso": "2021-03-18T03:25:16-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78480,
|
||||
@@ -855,7 +866,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-18 02:02:22"
|
||||
"created_at": "2021-03-18 02:02:22",
|
||||
"created_at_iso": "2021-03-18T02:02:22-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78476,
|
||||
@@ -909,7 +921,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-17 20:31:08"
|
||||
"created_at": "2021-03-17 20:31:08",
|
||||
"created_at_iso": "2021-03-17T20:31:08-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78472,
|
||||
@@ -995,7 +1008,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-17 12:01:05"
|
||||
"created_at": "2021-03-17 12:01:05",
|
||||
"created_at_iso": "2021-03-17T12:01:05-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78468,
|
||||
@@ -1045,7 +1059,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-16 22:47:11"
|
||||
"created_at": "2021-03-16 22:47:11",
|
||||
"created_at_iso": "2021-03-16T22:47:11-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78467,
|
||||
@@ -1099,7 +1114,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-16 22:20:53"
|
||||
"created_at": "2021-03-16 22:20:53",
|
||||
"created_at_iso": "2021-03-16T22:20:53-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78466,
|
||||
@@ -1153,7 +1169,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-16 22:01:24"
|
||||
"created_at": "2021-03-16 22:01:24",
|
||||
"created_at_iso": "2021-03-16T22:01:24-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78465,
|
||||
@@ -1203,7 +1220,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-16 21:55:29"
|
||||
"created_at": "2021-03-16 21:55:29",
|
||||
"created_at_iso": "2021-03-16T21:55:29-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78460,
|
||||
@@ -1257,7 +1275,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-16 14:51:45"
|
||||
"created_at": "2021-03-16 14:51:45",
|
||||
"created_at_iso": "2021-03-16T14:51:45-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78459,
|
||||
@@ -1311,7 +1330,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-16 12:44:15"
|
||||
"created_at": "2021-03-16 12:44:15",
|
||||
"created_at_iso": "2021-03-16T12:44:15-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78458,
|
||||
@@ -1361,7 +1381,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-16 10:18:22"
|
||||
"created_at": "2021-03-16 10:18:22",
|
||||
"created_at_iso": "2021-03-16T10:18:22-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78453,
|
||||
@@ -1415,7 +1436,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-15 20:10:22"
|
||||
"created_at": "2021-03-15 20:10:22",
|
||||
"created_at_iso": "2021-03-15T20:10:22-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78446,
|
||||
@@ -1477,7 +1499,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-15 16:37:11"
|
||||
"created_at": "2021-03-15 16:37:11",
|
||||
"created_at_iso": "2021-03-15T16:37:11-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78445,
|
||||
@@ -1523,7 +1546,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-15 15:18:32"
|
||||
"created_at": "2021-03-15 15:18:32",
|
||||
"created_at_iso": "2021-03-15T15:18:32-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78412,
|
||||
@@ -1569,7 +1593,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-14 17:15:26"
|
||||
"created_at": "2021-03-14 17:15:26",
|
||||
"created_at_iso": "2021-03-14T17:15:26-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78408,
|
||||
@@ -1610,7 +1635,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-14 09:19:49"
|
||||
"created_at": "2021-03-14 09:19:49",
|
||||
"created_at_iso": "2021-03-14T09:19:49-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78406,
|
||||
@@ -1656,7 +1682,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-14 05:47:02"
|
||||
"created_at": "2021-03-14 05:47:02",
|
||||
"created_at_iso": "2021-03-14T05:47:02-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78398,
|
||||
@@ -1742,7 +1769,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-13 16:17:07"
|
||||
"created_at": "2021-03-13 16:17:07",
|
||||
"created_at_iso": "2021-03-13T16:17:07-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78396,
|
||||
@@ -1828,7 +1856,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-13 15:44:33"
|
||||
"created_at": "2021-03-13 15:44:33",
|
||||
"created_at_iso": "2021-03-13T15:44:33-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78395,
|
||||
@@ -1958,7 +1987,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-13 15:22:23"
|
||||
"created_at": "2021-03-13 15:22:23",
|
||||
"created_at_iso": "2021-03-13T15:22:23-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78393,
|
||||
@@ -2044,7 +2074,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-13 14:50:50"
|
||||
"created_at": "2021-03-13 14:50:50",
|
||||
"created_at_iso": "2021-03-13T14:50:50-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78391,
|
||||
@@ -2098,7 +2129,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-13 12:35:34"
|
||||
"created_at": "2021-03-13 12:35:34",
|
||||
"created_at_iso": "2021-03-13T12:35:34-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78390,
|
||||
@@ -2144,7 +2176,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-13 12:11:32"
|
||||
"created_at": "2021-03-13 12:11:32",
|
||||
"created_at_iso": "2021-03-13T12:11:32-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78389,
|
||||
@@ -2190,7 +2223,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-13 11:43:17"
|
||||
"created_at": "2021-03-13 11:43:17",
|
||||
"created_at_iso": "2021-03-13T11:43:17-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78388,
|
||||
@@ -2336,7 +2370,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-13 11:37:52"
|
||||
"created_at": "2021-03-13 11:37:52",
|
||||
"created_at_iso": "2021-03-13T11:37:52-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78387,
|
||||
@@ -2390,7 +2425,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-13 11:24:07"
|
||||
"created_at": "2021-03-13 11:24:07",
|
||||
"created_at_iso": "2021-03-13T11:24:07-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78386,
|
||||
@@ -2436,7 +2472,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-13 09:18:58"
|
||||
"created_at": "2021-03-13 09:18:58",
|
||||
"created_at_iso": "2021-03-13T09:18:58-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78385,
|
||||
@@ -2622,7 +2659,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-13 08:57:00"
|
||||
"created_at": "2021-03-13 08:57:00",
|
||||
"created_at_iso": "2021-03-13T08:57:00-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78384,
|
||||
@@ -2808,7 +2846,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-13 07:51:16"
|
||||
"created_at": "2021-03-13 07:51:16",
|
||||
"created_at_iso": "2021-03-13T07:51:16-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78379,
|
||||
@@ -2854,7 +2893,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-13 00:49:43"
|
||||
"created_at": "2021-03-13 00:49:43",
|
||||
"created_at_iso": "2021-03-13T00:49:43-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78378,
|
||||
@@ -2972,7 +3012,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-13 00:41:28"
|
||||
"created_at": "2021-03-13 00:41:28",
|
||||
"created_at_iso": "2021-03-13T00:41:28-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78374,
|
||||
@@ -3050,7 +3091,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-12 15:14:14"
|
||||
"created_at": "2021-03-12 15:14:14",
|
||||
"created_at_iso": "2021-03-12T15:14:14-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78373,
|
||||
@@ -3212,7 +3254,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-12 14:43:58"
|
||||
"created_at": "2021-03-12 14:43:58",
|
||||
"created_at_iso": "2021-03-12T14:43:58-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78339,
|
||||
@@ -3262,7 +3305,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-11 18:48:35"
|
||||
"created_at": "2021-03-11 18:48:35",
|
||||
"created_at_iso": "2021-03-11T18:48:35-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78332,
|
||||
@@ -3303,7 +3347,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-11 13:46:59"
|
||||
"created_at": "2021-03-11 13:46:59",
|
||||
"created_at_iso": "2021-03-11T13:46:59-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78329,
|
||||
@@ -3353,7 +3398,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-11 12:31:05"
|
||||
"created_at": "2021-03-11 12:31:05",
|
||||
"created_at_iso": "2021-03-11T12:31:05-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78328,
|
||||
@@ -3394,7 +3440,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-11 12:28:38"
|
||||
"created_at": "2021-03-11 12:28:38",
|
||||
"created_at_iso": "2021-03-11T12:28:38-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78320,
|
||||
@@ -3464,7 +3511,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-10 20:38:19"
|
||||
"created_at": "2021-03-10 20:38:19",
|
||||
"created_at_iso": "2021-03-10T20:38:19-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78319,
|
||||
@@ -3510,7 +3558,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-10 19:26:47"
|
||||
"created_at": "2021-03-10 19:26:47",
|
||||
"created_at_iso": "2021-03-10T19:26:47-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78318,
|
||||
@@ -3588,7 +3637,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-10 18:26:23"
|
||||
"created_at": "2021-03-10 18:26:23",
|
||||
"created_at_iso": "2021-03-10T18:26:23-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78317,
|
||||
@@ -3674,7 +3724,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-10 16:26:24"
|
||||
"created_at": "2021-03-10 16:26:24",
|
||||
"created_at_iso": "2021-03-10T16:26:24-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78315,
|
||||
@@ -3724,7 +3775,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-10 13:15:55"
|
||||
"created_at": "2021-03-10 13:15:55",
|
||||
"created_at_iso": "2021-03-10T13:15:55-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78313,
|
||||
@@ -3774,7 +3826,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-10 11:37:21"
|
||||
"created_at": "2021-03-10 11:37:21",
|
||||
"created_at_iso": "2021-03-10T11:37:21-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78309,
|
||||
@@ -3828,7 +3881,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-10 06:26:47"
|
||||
"created_at": "2021-03-10 06:26:47",
|
||||
"created_at_iso": "2021-03-10T06:26:47-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78308,
|
||||
@@ -3890,7 +3944,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-10 06:19:15"
|
||||
"created_at": "2021-03-10 06:19:15",
|
||||
"created_at_iso": "2021-03-10T06:19:15-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78307,
|
||||
@@ -3972,7 +4027,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-10 06:08:57"
|
||||
"created_at": "2021-03-10 06:08:57",
|
||||
"created_at_iso": "2021-03-10T06:08:57-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78305,
|
||||
@@ -4018,7 +4074,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-10 04:45:48"
|
||||
"created_at": "2021-03-10 04:45:48",
|
||||
"created_at_iso": "2021-03-10T04:45:48-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78304,
|
||||
@@ -4059,7 +4116,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-10 04:45:25"
|
||||
"created_at": "2021-03-10 04:45:25",
|
||||
"created_at_iso": "2021-03-10T04:45:25-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78292,
|
||||
@@ -4109,7 +4167,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-10 02:20:29"
|
||||
"created_at": "2021-03-10 02:20:29",
|
||||
"created_at_iso": "2021-03-10T02:20:29-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78291,
|
||||
@@ -4159,7 +4218,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-09 21:07:52"
|
||||
"created_at": "2021-03-09 21:07:52",
|
||||
"created_at_iso": "2021-03-09T21:07:52-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78290,
|
||||
@@ -4209,7 +4269,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-09 12:35:54"
|
||||
"created_at": "2021-03-09 12:35:54",
|
||||
"created_at_iso": "2021-03-09T12:35:54-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78289,
|
||||
@@ -4259,7 +4320,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-09 11:39:51"
|
||||
"created_at": "2021-03-09 11:39:51",
|
||||
"created_at_iso": "2021-03-09T11:39:51-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78287,
|
||||
@@ -4300,7 +4362,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-09 09:12:02"
|
||||
"created_at": "2021-03-09 09:12:02",
|
||||
"created_at_iso": "2021-03-09T09:12:02-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78279,
|
||||
@@ -4346,7 +4409,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-08 11:47:40"
|
||||
"created_at": "2021-03-08 11:47:40",
|
||||
"created_at_iso": "2021-03-08T11:47:40-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78278,
|
||||
@@ -4392,7 +4456,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-08 10:31:18"
|
||||
"created_at": "2021-03-08 10:31:18",
|
||||
"created_at_iso": "2021-03-08T10:31:18-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78252,
|
||||
@@ -4442,7 +4507,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-07 22:14:12"
|
||||
"created_at": "2021-03-07 22:14:12",
|
||||
"created_at_iso": "2021-03-07T22:14:12-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78251,
|
||||
@@ -4488,7 +4554,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-07 19:17:10"
|
||||
"created_at": "2021-03-07 19:17:10",
|
||||
"created_at_iso": "2021-03-07T19:17:10-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78250,
|
||||
@@ -4534,7 +4601,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-07 17:45:21"
|
||||
"created_at": "2021-03-07 17:45:21",
|
||||
"created_at_iso": "2021-03-07T17:45:21-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78247,
|
||||
@@ -4580,7 +4648,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-07 16:30:21"
|
||||
"created_at": "2021-03-07 16:30:21",
|
||||
"created_at_iso": "2021-03-07T16:30:21-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78246,
|
||||
@@ -4726,7 +4795,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-07 16:06:55"
|
||||
"created_at": "2021-03-07 16:06:55",
|
||||
"created_at_iso": "2021-03-07T16:06:55-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78244,
|
||||
@@ -4780,7 +4850,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-07 15:33:16"
|
||||
"created_at": "2021-03-07 15:33:16",
|
||||
"created_at_iso": "2021-03-07T15:33:16-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78243,
|
||||
@@ -4830,7 +4901,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-07 15:27:18"
|
||||
"created_at": "2021-03-07 15:27:18",
|
||||
"created_at_iso": "2021-03-07T15:27:18-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78240,
|
||||
@@ -4876,7 +4948,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-07 14:26:53"
|
||||
"created_at": "2021-03-07 14:26:53",
|
||||
"created_at_iso": "2021-03-07T14:26:53-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78239,
|
||||
@@ -4922,7 +4995,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-07 14:21:46"
|
||||
"created_at": "2021-03-07 14:21:46",
|
||||
"created_at_iso": "2021-03-07T14:21:46-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78238,
|
||||
@@ -4968,7 +5042,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-07 13:32:16"
|
||||
"created_at": "2021-03-07 13:32:16",
|
||||
"created_at_iso": "2021-03-07T13:32:16-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78237,
|
||||
@@ -5014,7 +5089,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-07 12:49:22"
|
||||
"created_at": "2021-03-07 12:49:22",
|
||||
"created_at_iso": "2021-03-07T12:49:22-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78236,
|
||||
@@ -5060,7 +5136,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-07 09:58:14"
|
||||
"created_at": "2021-03-07 09:58:14",
|
||||
"created_at_iso": "2021-03-07T09:58:14-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78235,
|
||||
@@ -5110,7 +5187,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-07 06:23:54"
|
||||
"created_at": "2021-03-07 06:23:54",
|
||||
"created_at_iso": "2021-03-07T06:23:54-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78216,
|
||||
@@ -5156,7 +5234,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-06 15:51:20"
|
||||
"created_at": "2021-03-06 15:51:20",
|
||||
"created_at_iso": "2021-03-06T15:51:20-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78215,
|
||||
@@ -5202,7 +5281,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-06 14:47:47"
|
||||
"created_at": "2021-03-06 14:47:47",
|
||||
"created_at_iso": "2021-03-06T14:47:47-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78214,
|
||||
@@ -5248,7 +5328,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-06 14:03:22"
|
||||
"created_at": "2021-03-06 14:03:22",
|
||||
"created_at_iso": "2021-03-06T14:03:22-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78213,
|
||||
@@ -5294,7 +5375,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-06 13:39:59"
|
||||
"created_at": "2021-03-06 13:39:59",
|
||||
"created_at_iso": "2021-03-06T13:39:59-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78212,
|
||||
@@ -5344,7 +5426,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-06 12:44:05"
|
||||
"created_at": "2021-03-06 12:44:05",
|
||||
"created_at_iso": "2021-03-06T12:44:05-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78210,
|
||||
@@ -5530,7 +5613,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-06 11:15:35"
|
||||
"created_at": "2021-03-06 11:15:35",
|
||||
"created_at_iso": "2021-03-06T11:15:35-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78208,
|
||||
@@ -5576,7 +5660,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-06 10:01:38"
|
||||
"created_at": "2021-03-06 10:01:38",
|
||||
"created_at_iso": "2021-03-06T10:01:38-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78206,
|
||||
@@ -5666,7 +5751,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-06 07:31:39"
|
||||
"created_at": "2021-03-06 07:31:39",
|
||||
"created_at_iso": "2021-03-06T07:31:39-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78204,
|
||||
@@ -5764,7 +5850,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-06 02:05:40"
|
||||
"created_at": "2021-03-06 02:05:40",
|
||||
"created_at_iso": "2021-03-06T02:05:40-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78203,
|
||||
@@ -5810,7 +5897,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-06 01:01:33"
|
||||
"created_at": "2021-03-06 01:01:33",
|
||||
"created_at_iso": "2021-03-06T01:01:33-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78201,
|
||||
@@ -5860,7 +5948,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-05 21:38:15"
|
||||
"created_at": "2021-03-05 21:38:15",
|
||||
"created_at_iso": "2021-03-05T21:38:15-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78197,
|
||||
@@ -5910,7 +5999,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-05 15:09:48"
|
||||
"created_at": "2021-03-05 15:09:48",
|
||||
"created_at_iso": "2021-03-05T15:09:48-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78185,
|
||||
@@ -5956,7 +6046,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-05 09:22:10"
|
||||
"created_at": "2021-03-05 09:22:10",
|
||||
"created_at_iso": "2021-03-05T09:22:10-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78184,
|
||||
@@ -6046,7 +6137,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-05 08:09:13"
|
||||
"created_at": "2021-03-05 08:09:13",
|
||||
"created_at_iso": "2021-03-05T08:09:13-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78182,
|
||||
@@ -6092,7 +6184,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-05 06:56:38"
|
||||
"created_at": "2021-03-05 06:56:38",
|
||||
"created_at_iso": "2021-03-05T06:56:38-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78181,
|
||||
@@ -6138,7 +6231,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-05 06:55:19"
|
||||
"created_at": "2021-03-05 06:55:19",
|
||||
"created_at_iso": "2021-03-05T06:55:19-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78177,
|
||||
@@ -6184,7 +6278,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-05 05:35:07"
|
||||
"created_at": "2021-03-05 05:35:07",
|
||||
"created_at_iso": "2021-03-05T05:35:07-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78176,
|
||||
@@ -6230,7 +6325,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-05 05:26:24"
|
||||
"created_at": "2021-03-05 05:26:24",
|
||||
"created_at_iso": "2021-03-05T05:26:24-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78159,
|
||||
@@ -6271,7 +6367,8 @@
|
||||
],
|
||||
"subtitle": null,
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-04 23:08:06"
|
||||
"created_at": "2021-03-04 23:08:06",
|
||||
"created_at_iso": "2021-03-04T23:08:06-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78158,
|
||||
@@ -6409,7 +6506,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-04 21:55:45"
|
||||
"created_at": "2021-03-04 21:55:45",
|
||||
"created_at_iso": "2021-03-04T21:55:45-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78157,
|
||||
@@ -6547,7 +6645,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-04 21:32:31"
|
||||
"created_at": "2021-03-04 21:32:31",
|
||||
"created_at_iso": "2021-03-04T21:32:31-04:00"
|
||||
},
|
||||
{
|
||||
"id": 78153,
|
||||
@@ -6593,7 +6692,8 @@
|
||||
}
|
||||
],
|
||||
"music_type": null,
|
||||
"created_at": "2021-03-04 09:22:51"
|
||||
"created_at": "2021-03-04 09:22:51",
|
||||
"created_at_iso": "2021-03-04T09:22:51-04:00"
|
||||
}
|
||||
],
|
||||
"first_page_url": "https:\/\/privatehd.to\/api\/v1\/jackett\/torrents?type=1&page=1",
|
||||
|
@@ -1,15 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<caps>
|
||||
<server version="1.0" title="Anime Tosho" strapline="Anime NZB/DDL mirror" url="https://animetosho.org/"/>
|
||||
<limits max="200" default="75"/>
|
||||
<retention days="9999"/>
|
||||
<registration available="no" open="yes" />
|
||||
<searching>
|
||||
<search available="yes" supportedParams="q" />
|
||||
<tv-search available="no" supportedParams="q" />
|
||||
<movie-search available="no" supportedParams="q" />
|
||||
</searching>
|
||||
<categories>
|
||||
<category id="5070" name="Anime" description="Anime"/>
|
||||
</categories>
|
||||
</caps>
|
||||
<server version="1.0" title="Anime Tosho" strapline="Anime NZB/DDL mirror" url="https://animetosho.org/" />
|
||||
<limits max="200" default="75" />
|
||||
<retention days="9999" />
|
||||
<registration available="no" open="yes" />
|
||||
<searching>
|
||||
<search available="yes" supportedParams="q" />
|
||||
<tv-search available="no" supportedParams="q" />
|
||||
<movie-search available="no" supportedParams="q" />
|
||||
</searching>
|
||||
<categories>
|
||||
<category id="5070" name="Anime" description="Anime" />
|
||||
<category id="2020" name="Movies/Other" description="Movies (Anime)" />
|
||||
</categories>
|
||||
</caps>
|
||||
|
@@ -55,7 +55,7 @@ namespace NzbDrone.Core.Test.IndexerTests.FileListTests
|
||||
torrentInfo.InfoUrl.Should().Be("https://filelist.io/details.php?id=665873");
|
||||
torrentInfo.CommentUrl.Should().BeNullOrEmpty();
|
||||
torrentInfo.Indexer.Should().Be(Subject.Definition.Name);
|
||||
torrentInfo.PublishDate.Should().Be(DateTime.Parse("2020-01-25 20:20:19"));
|
||||
torrentInfo.PublishDate.Should().Be(DateTime.Parse("2020-01-25 19:20:19"));
|
||||
torrentInfo.Size.Should().Be(8300512414);
|
||||
torrentInfo.InfoHash.Should().Be(null);
|
||||
torrentInfo.MagnetUrl.Should().Be(null);
|
||||
|
@@ -26,15 +26,15 @@ namespace NzbDrone.Core.Test.IndexerTests.HDBitsTests
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
Subject.Definition = new IndexerDefinition()
|
||||
Subject.Definition = new IndexerDefinition
|
||||
{
|
||||
Name = "HdBits",
|
||||
Settings = new HDBitsSettings() { ApiKey = "fakekey" }
|
||||
Settings = new HDBitsSettings { ApiKey = "fakekey" }
|
||||
};
|
||||
|
||||
_movieSearchCriteria = new MovieSearchCriteria
|
||||
{
|
||||
Categories = new int[] { 2000, 2010 },
|
||||
Categories = new[] { 2000, 2010 },
|
||||
ImdbId = "0076759"
|
||||
};
|
||||
}
|
||||
@@ -52,7 +52,7 @@ namespace NzbDrone.Core.Test.IndexerTests.HDBitsTests
|
||||
var torrents = (await Subject.Fetch(_movieSearchCriteria)).Releases;
|
||||
|
||||
torrents.Should().HaveCount(2);
|
||||
torrents.First().Should().BeOfType<HDBitsInfo>();
|
||||
torrents.First().Should().BeOfType<TorrentInfo>();
|
||||
|
||||
var first = torrents.First() as TorrentInfo;
|
||||
|
||||
|
@@ -83,17 +83,18 @@ namespace NzbDrone.Core.Test.IndexerTests.NewznabTests
|
||||
bookCats.Should().Contain("8000");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_find_sub_categories_as_main_categories()
|
||||
[TestCase(5070)]
|
||||
[TestCase(2020)]
|
||||
public void should_find_sub_categories_as_main_categories(int category)
|
||||
{
|
||||
GivenCapsResponse(ReadAllText("Files/Indexers/Torznab/torznab_animetosho_caps.xml"));
|
||||
|
||||
var caps = Subject.GetCapabilities(_settings, _definition);
|
||||
|
||||
var bookCats = caps.Categories.MapTrackerCatToNewznab("5070");
|
||||
var indexerCategories = caps.Categories.MapTrackerCatToNewznab(category.ToString());
|
||||
|
||||
bookCats.Count.Should().Be(2);
|
||||
bookCats.First().Id.Should().Be(5070);
|
||||
indexerCategories.Count.Should().Be(2);
|
||||
indexerCategories.First().Id.Should().Be(category);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@@ -50,7 +50,7 @@ namespace NzbDrone.Core.Test.IndexerTests.PTPTests
|
||||
first.Guid.Should().Be("PassThePopcorn-452135");
|
||||
first.Title.Should().Be("The.Night.Of.S01.BluRay.AAC2.0.x264-DEPTH");
|
||||
first.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
|
||||
first.DownloadUrl.Should().Be("https://passthepopcorn.me/torrents.php?action=download&id=452135&authkey=00000000000000000000000000000000&torrent_pass=00000000000000000000000000000000");
|
||||
first.DownloadUrl.Should().Be("https://passthepopcorn.me/torrents.php?action=download&id=452135");
|
||||
first.InfoUrl.Should().Be("https://passthepopcorn.me/torrents.php?id=148131&torrentid=452135");
|
||||
|
||||
//first.PublishDate.Should().Be(DateTime.Parse("2017-04-17T12:13:42+0000").ToUniversalTime()); stupid timezones
|
||||
|
@@ -1,12 +1,12 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net6.0</TargetFrameworks>
|
||||
<TargetFrameworks>net8.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Dapper" Version="2.0.151" />
|
||||
<PackageReference Include="Dapper" Version="2.1.66" />
|
||||
<PackageReference Include="NBuilder" Version="6.1.0" />
|
||||
<PackageReference Include="System.Data.SQLite.Core.Servarr" Version="1.0.115.5-18" />
|
||||
<PackageReference Include="YamlDotNet" Version="13.1.1" />
|
||||
<PackageReference Include="YamlDotNet" Version="16.3.0" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\NzbDrone.Test.Common\Prowlarr.Test.Common.csproj" />
|
||||
|
@@ -16,7 +16,7 @@ namespace NzbDrone.Core.Applications
|
||||
protected readonly IAppIndexerMapService _appIndexerMapService;
|
||||
protected readonly Logger _logger;
|
||||
|
||||
protected static readonly Regex AppIndexerRegex = new (@"\/(?<indexer>\d{1,3})(?:\/(?:api)?\/?)?$", RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||
protected static readonly Regex AppIndexerRegex = new(@"\/(?<indexer>\d{1,3})(?:\/(?:api)?\/?)?$", RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||
|
||||
public abstract string Name { get; }
|
||||
|
||||
|
@@ -19,7 +19,7 @@ namespace NzbDrone.Core.Applications.LazyLibrarian
|
||||
|
||||
public class LazyLibrarianSettings : IApplicationSettings
|
||||
{
|
||||
private static readonly LazyLibrarianSettingsValidator Validator = new ();
|
||||
private static readonly LazyLibrarianSettingsValidator Validator = new();
|
||||
|
||||
public LazyLibrarianSettings()
|
||||
{
|
||||
|
@@ -121,9 +121,16 @@ namespace NzbDrone.Core.Applications.Lidarr
|
||||
{
|
||||
var indexerCapabilities = GetIndexerCapabilities(indexer);
|
||||
|
||||
if (!indexerCapabilities.MusicSearchAvailable && !indexerCapabilities.SearchAvailable)
|
||||
{
|
||||
_logger.Debug("Skipping add for indexer {0} [{1}] due to missing music or basic search support by the indexer", indexer.Name, indexer.Id);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
|
||||
{
|
||||
_logger.Trace("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
|
||||
_logger.Debug("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -178,7 +185,8 @@ namespace NzbDrone.Core.Applications.Lidarr
|
||||
{
|
||||
_logger.Debug("Syncing remote indexer with current settings");
|
||||
|
||||
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||
if ((indexerCapabilities.MusicSearchAvailable || indexerCapabilities.SearchAvailable) &&
|
||||
indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||
{
|
||||
// Retain user fields not-affiliated with Prowlarr
|
||||
lidarrIndexer.Fields.AddRange(remoteIndexer.Fields.Where(f => lidarrIndexer.Fields.All(s => s.Name != f.Name)));
|
||||
@@ -204,7 +212,8 @@ namespace NzbDrone.Core.Applications.Lidarr
|
||||
{
|
||||
_appIndexerMapService.Delete(indexerMapping.Id);
|
||||
|
||||
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||
if ((indexerCapabilities.MusicSearchAvailable || indexerCapabilities.SearchAvailable) &&
|
||||
indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||
{
|
||||
_logger.Debug("Remote indexer not found, re-adding {0} [{1}] to Lidarr", indexer.Name, indexer.Id);
|
||||
lidarrIndexer.Id = 0;
|
||||
|
@@ -18,7 +18,7 @@ namespace NzbDrone.Core.Applications.Lidarr
|
||||
|
||||
public class LidarrSettings : IApplicationSettings
|
||||
{
|
||||
private static readonly LidarrSettingsValidator Validator = new ();
|
||||
private static readonly LidarrSettingsValidator Validator = new();
|
||||
|
||||
public LidarrSettings()
|
||||
{
|
||||
|
@@ -23,7 +23,7 @@ namespace NzbDrone.Core.Applications.Lidarr
|
||||
|
||||
public class LidarrV1Proxy : ILidarrV1Proxy
|
||||
{
|
||||
private static Version MinimumApplicationVersion => new (1, 0, 2, 0);
|
||||
private static Version MinimumApplicationVersion => new(1, 0, 2, 0);
|
||||
|
||||
private const string AppApiRoute = "/api/v1";
|
||||
private const string AppIndexerApiRoute = $"{AppApiRoute}/indexer";
|
||||
|
@@ -19,7 +19,7 @@ namespace NzbDrone.Core.Applications.Mylar
|
||||
|
||||
public class MylarSettings : IApplicationSettings
|
||||
{
|
||||
private static readonly MylarSettingsValidator Validator = new ();
|
||||
private static readonly MylarSettingsValidator Validator = new();
|
||||
|
||||
public MylarSettings()
|
||||
{
|
||||
|
@@ -121,9 +121,16 @@ namespace NzbDrone.Core.Applications.Radarr
|
||||
{
|
||||
var indexerCapabilities = GetIndexerCapabilities(indexer);
|
||||
|
||||
if (!indexerCapabilities.MovieSearchAvailable && !indexerCapabilities.SearchAvailable)
|
||||
{
|
||||
_logger.Debug("Skipping add for indexer {0} [{1}] due to missing movie or basic search support by the indexer", indexer.Name, indexer.Id);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
|
||||
{
|
||||
_logger.Trace("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
|
||||
_logger.Debug("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -176,7 +183,8 @@ namespace NzbDrone.Core.Applications.Radarr
|
||||
|
||||
if (!radarrIndexer.Equals(remoteIndexer) || forceSync)
|
||||
{
|
||||
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||
if ((indexerCapabilities.MovieSearchAvailable || indexerCapabilities.SearchAvailable) &&
|
||||
indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||
{
|
||||
// Retain user fields not-affiliated with Prowlarr
|
||||
radarrIndexer.Fields.AddRange(remoteIndexer.Fields.Where(f => radarrIndexer.Fields.All(s => s.Name != f.Name)));
|
||||
@@ -202,7 +210,8 @@ namespace NzbDrone.Core.Applications.Radarr
|
||||
{
|
||||
_appIndexerMapService.Delete(indexerMapping.Id);
|
||||
|
||||
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||
if ((indexerCapabilities.MovieSearchAvailable || indexerCapabilities.SearchAvailable) &&
|
||||
indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||
{
|
||||
_logger.Debug("Remote indexer not found, re-adding {0} [{1}] to Radarr", indexer.Name, indexer.Id);
|
||||
radarrIndexer.Id = 0;
|
||||
|
@@ -19,7 +19,7 @@ namespace NzbDrone.Core.Applications.Radarr
|
||||
|
||||
public class RadarrSettings : IApplicationSettings
|
||||
{
|
||||
private static readonly RadarrSettingsValidator Validator = new ();
|
||||
private static readonly RadarrSettingsValidator Validator = new();
|
||||
|
||||
public RadarrSettings()
|
||||
{
|
||||
|
@@ -23,8 +23,8 @@ namespace NzbDrone.Core.Applications.Radarr
|
||||
|
||||
public class RadarrV3Proxy : IRadarrV3Proxy
|
||||
{
|
||||
private static Version MinimumApplicationV4Version => new (4, 0, 4, 0);
|
||||
private static Version MinimumApplicationV3Version => new (3, 1, 1, 0);
|
||||
private static Version MinimumApplicationV4Version => new(4, 0, 4, 0);
|
||||
private static Version MinimumApplicationV3Version => new(3, 1, 1, 0);
|
||||
|
||||
private const string AppApiRoute = "/api/v3";
|
||||
private const string AppIndexerApiRoute = $"{AppApiRoute}/indexer";
|
||||
|
@@ -121,9 +121,16 @@ namespace NzbDrone.Core.Applications.Readarr
|
||||
{
|
||||
var indexerCapabilities = GetIndexerCapabilities(indexer);
|
||||
|
||||
if (!indexerCapabilities.BookSearchAvailable && !indexerCapabilities.SearchAvailable)
|
||||
{
|
||||
_logger.Debug("Skipping add for indexer {0} [{1}] due to missing book or basic search support by the indexer", indexer.Name, indexer.Id);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
|
||||
{
|
||||
_logger.Trace("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
|
||||
_logger.Debug("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -178,7 +185,8 @@ namespace NzbDrone.Core.Applications.Readarr
|
||||
{
|
||||
_logger.Debug("Syncing remote indexer with current settings");
|
||||
|
||||
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||
if ((indexerCapabilities.BookSearchAvailable || indexerCapabilities.SearchAvailable) &&
|
||||
indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||
{
|
||||
// Retain user fields not-affiliated with Prowlarr
|
||||
readarrIndexer.Fields.AddRange(remoteIndexer.Fields.Where(f => readarrIndexer.Fields.All(s => s.Name != f.Name)));
|
||||
@@ -204,7 +212,8 @@ namespace NzbDrone.Core.Applications.Readarr
|
||||
{
|
||||
_appIndexerMapService.Delete(indexerMapping.Id);
|
||||
|
||||
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||
if ((indexerCapabilities.BookSearchAvailable || indexerCapabilities.SearchAvailable) &&
|
||||
indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||
{
|
||||
_logger.Debug("Remote indexer not found, re-adding {0} [{1}] to Readarr", indexer.Name, indexer.Id);
|
||||
readarrIndexer.Id = 0;
|
||||
|
@@ -19,7 +19,7 @@ namespace NzbDrone.Core.Applications.Readarr
|
||||
|
||||
public class ReadarrSettings : IApplicationSettings
|
||||
{
|
||||
private static readonly ReadarrSettingsValidator Validator = new ();
|
||||
private static readonly ReadarrSettingsValidator Validator = new();
|
||||
|
||||
public ReadarrSettings()
|
||||
{
|
||||
|
@@ -125,10 +125,17 @@ namespace NzbDrone.Core.Applications.Sonarr
|
||||
{
|
||||
var indexerCapabilities = GetIndexerCapabilities(indexer);
|
||||
|
||||
if (!indexerCapabilities.TvSearchAvailable && !indexerCapabilities.SearchAvailable)
|
||||
{
|
||||
_logger.Debug("Skipping add for indexer {0} [{1}] due to missing TV or basic search support by the indexer", indexer.Name, indexer.Id);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty() &&
|
||||
indexerCapabilities.Categories.SupportedCategories(Settings.AnimeSyncCategories.ToArray()).Empty())
|
||||
{
|
||||
_logger.Trace("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
|
||||
_logger.Debug("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -183,7 +190,8 @@ namespace NzbDrone.Core.Applications.Sonarr
|
||||
{
|
||||
_logger.Debug("Syncing remote indexer with current settings");
|
||||
|
||||
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any() || indexerCapabilities.Categories.SupportedCategories(Settings.AnimeSyncCategories.ToArray()).Any())
|
||||
if ((indexerCapabilities.TvSearchAvailable || indexerCapabilities.SearchAvailable) &&
|
||||
(indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any() || indexerCapabilities.Categories.SupportedCategories(Settings.AnimeSyncCategories.ToArray()).Any()))
|
||||
{
|
||||
// Retain user fields not-affiliated with Prowlarr
|
||||
sonarrIndexer.Fields.AddRange(remoteIndexer.Fields.Where(f => sonarrIndexer.Fields.All(s => s.Name != f.Name)));
|
||||
@@ -210,7 +218,8 @@ namespace NzbDrone.Core.Applications.Sonarr
|
||||
{
|
||||
_appIndexerMapService.Delete(indexerMapping.Id);
|
||||
|
||||
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any() || indexerCapabilities.Categories.SupportedCategories(Settings.AnimeSyncCategories.ToArray()).Any())
|
||||
if ((indexerCapabilities.TvSearchAvailable || indexerCapabilities.SearchAvailable) &&
|
||||
(indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any() || indexerCapabilities.Categories.SupportedCategories(Settings.AnimeSyncCategories.ToArray()).Any()))
|
||||
{
|
||||
_logger.Debug("Remote indexer not found, re-adding {0} [{1}] to Sonarr", indexer.Name, indexer.Id);
|
||||
sonarrIndexer.Id = 0;
|
||||
|
@@ -18,7 +18,7 @@ namespace NzbDrone.Core.Applications.Sonarr
|
||||
|
||||
public class SonarrSettings : IApplicationSettings
|
||||
{
|
||||
private static readonly SonarrSettingsValidator Validator = new ();
|
||||
private static readonly SonarrSettingsValidator Validator = new();
|
||||
|
||||
public SonarrSettings()
|
||||
{
|
||||
|
@@ -23,7 +23,7 @@ namespace NzbDrone.Core.Applications.Sonarr
|
||||
|
||||
public class SonarrV3Proxy : ISonarrV3Proxy
|
||||
{
|
||||
private static Version MinimumApplicationVersion => new (3, 0, 5, 0);
|
||||
private static Version MinimumApplicationVersion => new(3, 0, 5, 0);
|
||||
|
||||
private const string AppApiRoute = "/api/v3";
|
||||
private const string AppIndexerApiRoute = $"{AppApiRoute}/indexer";
|
||||
|
@@ -19,7 +19,7 @@ namespace NzbDrone.Core.Applications.Whisparr
|
||||
|
||||
public class WhisparrSettings : IApplicationSettings
|
||||
{
|
||||
private static readonly WhisparrSettingsValidator Validator = new ();
|
||||
private static readonly WhisparrSettingsValidator Validator = new();
|
||||
|
||||
public WhisparrSettings()
|
||||
{
|
||||
|
@@ -1,8 +1,11 @@
|
||||
using System;
|
||||
|
||||
namespace NzbDrone.Core.Authentication
|
||||
{
|
||||
public enum AuthenticationType
|
||||
{
|
||||
None = 0,
|
||||
[Obsolete("Use Forms authentication instead")]
|
||||
Basic = 1,
|
||||
Forms = 2,
|
||||
External = 3
|
||||
|
@@ -207,13 +207,24 @@ namespace NzbDrone.Core.Configuration
|
||||
|
||||
if (enabled)
|
||||
{
|
||||
SetValue("AuthenticationMethod", AuthenticationType.Basic);
|
||||
return AuthenticationType.Basic;
|
||||
SetValue("AuthenticationMethod", AuthenticationType.Forms);
|
||||
return AuthenticationType.Forms;
|
||||
}
|
||||
|
||||
return Enum.TryParse<AuthenticationType>(_authOptions.Method, out var enumValue)
|
||||
var value = Enum.TryParse<AuthenticationType>(_authOptions.Method, out var enumValue)
|
||||
? enumValue
|
||||
: GetValueEnum("AuthenticationMethod", AuthenticationType.None);
|
||||
|
||||
#pragma warning disable CS0618 // Type or member is obsolete
|
||||
if (value == AuthenticationType.Basic)
|
||||
#pragma warning restore CS0618 // Type or member is obsolete
|
||||
{
|
||||
SetValue("AuthenticationMethod", AuthenticationType.Forms);
|
||||
|
||||
return AuthenticationType.Forms;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -274,7 +285,7 @@ namespace NzbDrone.Core.Configuration
|
||||
{
|
||||
var instanceName = _appOptions.InstanceName ?? GetValue("InstanceName", BuildInfo.AppName);
|
||||
|
||||
if (instanceName.ContainsIgnoreCase(BuildInfo.AppName))
|
||||
if (instanceName.Contains(BuildInfo.AppName, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return instanceName;
|
||||
}
|
||||
@@ -389,6 +400,12 @@ namespace NzbDrone.Core.Configuration
|
||||
{
|
||||
SetValue("EnableSsl", false);
|
||||
}
|
||||
#pragma warning disable CS0618 // Type or member is obsolete
|
||||
if (AuthenticationMethod == AuthenticationType.Basic)
|
||||
#pragma warning restore CS0618 // Type or member is obsolete
|
||||
{
|
||||
SetValue("AuthenticationMethod", AuthenticationType.Forms);
|
||||
}
|
||||
}
|
||||
|
||||
private void DeleteOldValues()
|
||||
|
@@ -254,7 +254,7 @@ namespace NzbDrone.Core.Datastore
|
||||
|
||||
protected void Delete(SqlBuilder builder)
|
||||
{
|
||||
var sql = builder.AddDeleteTemplate(typeof(TModel)).LogQuery();
|
||||
var sql = builder.AddDeleteTemplate(typeof(TModel));
|
||||
|
||||
using (var conn = _database.OpenConnection())
|
||||
{
|
||||
|
@@ -5,7 +5,7 @@ namespace NzbDrone.Core.Datastore;
|
||||
|
||||
public static class DatabaseVersionParser
|
||||
{
|
||||
private static readonly Regex VersionRegex = new (@"^[^ ]+", RegexOptions.Compiled);
|
||||
private static readonly Regex VersionRegex = new(@"^[^ ]+", RegexOptions.Compiled);
|
||||
|
||||
public static Version ParseServerVersion(string serverVersion)
|
||||
{
|
||||
|
@@ -27,7 +27,7 @@ namespace NzbDrone.Core.Datastore
|
||||
switch (expression.NodeType)
|
||||
{
|
||||
case ExpressionType.Lambda:
|
||||
return VisitLamda((LambdaExpression)expression);
|
||||
return VisitLambda((LambdaExpression)expression);
|
||||
case ExpressionType.ArrayLength:
|
||||
case ExpressionType.Convert:
|
||||
case ExpressionType.ConvertChecked:
|
||||
@@ -87,7 +87,7 @@ namespace NzbDrone.Core.Datastore
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Visits the memeber access expression. To be implemented by user.
|
||||
/// Visits the member access expression. To be implemented by user.
|
||||
/// </summary>
|
||||
/// <param name="expression"></param>
|
||||
/// <returns></returns>
|
||||
@@ -130,11 +130,11 @@ namespace NzbDrone.Core.Datastore
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Visits the lamda expression.
|
||||
/// Visits the lambda expression.
|
||||
/// </summary>
|
||||
/// <param name="lambdaExpression"></param>
|
||||
/// <returns></returns>
|
||||
protected virtual Expression VisitLamda(LambdaExpression lambdaExpression)
|
||||
protected virtual Expression VisitLambda(LambdaExpression lambdaExpression)
|
||||
{
|
||||
Visit(lambdaExpression.Body);
|
||||
return lambdaExpression;
|
||||
|
@@ -0,0 +1,60 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using Dapper;
|
||||
using FluentMigrator;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NzbDrone.Common.Serializer;
|
||||
using NzbDrone.Core.Datastore.Migration.Framework;
|
||||
|
||||
namespace NzbDrone.Core.Datastore.Migration
|
||||
{
|
||||
[Migration(042)]
|
||||
public class myanonamouse_freeleech_wedge_options : NzbDroneMigrationBase
|
||||
{
|
||||
protected override void MainDbUpgrade()
|
||||
{
|
||||
Execute.WithConnection(MigrateIndexersToWedgeOptions);
|
||||
}
|
||||
|
||||
private void MigrateIndexersToWedgeOptions(IDbConnection conn, IDbTransaction tran)
|
||||
{
|
||||
var updated = new List<object>();
|
||||
|
||||
using (var cmd = conn.CreateCommand())
|
||||
{
|
||||
cmd.Transaction = tran;
|
||||
cmd.CommandText = "SELECT \"Id\", \"Settings\" FROM \"Indexers\" WHERE \"Implementation\" = 'MyAnonamouse'";
|
||||
|
||||
using (var reader = cmd.ExecuteReader())
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
var id = reader.GetInt32(0);
|
||||
var settings = Json.Deserialize<JObject>(reader.GetString(1));
|
||||
|
||||
if (settings.ContainsKey("freeleech") && settings.Value<JToken>("freeleech").Type == JTokenType.Boolean)
|
||||
{
|
||||
var optionValue = settings.Value<bool>("freeleech") switch
|
||||
{
|
||||
true => 2, // Required
|
||||
_ => 0 // Never
|
||||
};
|
||||
|
||||
settings.Remove("freeleech");
|
||||
settings.Add("useFreeleechWedge", optionValue);
|
||||
}
|
||||
|
||||
updated.Add(new
|
||||
{
|
||||
Id = id,
|
||||
Settings = settings.ToJson()
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var updateSql = "UPDATE \"Indexers\" SET \"Settings\" = @Settings WHERE \"Id\" = @Id";
|
||||
conn.Execute(updateSql, updated, transaction: tran);
|
||||
}
|
||||
}
|
||||
}
|
@@ -7,6 +7,7 @@ using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
@@ -25,8 +26,9 @@ namespace NzbDrone.Core.Download.Clients.Aria2
|
||||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
@@ -8,6 +8,7 @@ using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
|
||||
namespace NzbDrone.Core.Download.Clients.Blackhole
|
||||
@@ -20,8 +21,9 @@ namespace NzbDrone.Core.Download.Clients.Blackhole
|
||||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
}
|
||||
|
||||
|
@@ -7,6 +7,7 @@ using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
|
||||
namespace NzbDrone.Core.Download.Clients.Blackhole
|
||||
@@ -16,8 +17,9 @@ namespace NzbDrone.Core.Download.Clients.Blackhole
|
||||
public UsenetBlackhole(IHttpClient httpClient,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(httpClient, configService, diskProvider, logger)
|
||||
: base(httpClient, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
}
|
||||
|
||||
|
@@ -9,6 +9,7 @@ using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
@@ -23,8 +24,9 @@ namespace NzbDrone.Core.Download.Clients.Deluge
|
||||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
@@ -10,6 +10,7 @@ using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Download.Clients.DownloadStation.Proxies;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.ThingiProvider;
|
||||
using NzbDrone.Core.Validation;
|
||||
@@ -33,8 +34,9 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation
|
||||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_dsInfoProxy = dsInfoProxy;
|
||||
_dsTaskProxySelector = dsTaskProxySelector;
|
||||
|
@@ -9,6 +9,7 @@ using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Download.Clients.DownloadStation.Proxies;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.ThingiProvider;
|
||||
using NzbDrone.Core.Validation;
|
||||
@@ -31,8 +32,9 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation
|
||||
IHttpClient httpClient,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(httpClient, configService, diskProvider, logger)
|
||||
: base(httpClient, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_dsInfoProxy = dsInfoProxy;
|
||||
_dsTaskProxySelector = dsTaskProxySelector;
|
||||
|
@@ -8,6 +8,7 @@ using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Download.Clients.Flood.Models;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.ThingiProvider;
|
||||
|
||||
@@ -22,8 +23,9 @@ namespace NzbDrone.Core.Download.Clients.Flood
|
||||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
@@ -36,7 +36,7 @@ namespace NzbDrone.Core.Download.Clients.FreeboxDownload
|
||||
|
||||
public class FreeboxDownloadSettings : IProviderConfig
|
||||
{
|
||||
private static readonly FreeboxDownloadSettingsValidator Validator = new ();
|
||||
private static readonly FreeboxDownloadSettingsValidator Validator = new();
|
||||
|
||||
public FreeboxDownloadSettings()
|
||||
{
|
||||
|
@@ -6,6 +6,7 @@ using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
|
||||
namespace NzbDrone.Core.Download.Clients.FreeboxDownload
|
||||
@@ -19,8 +20,9 @@ namespace NzbDrone.Core.Download.Clients.FreeboxDownload
|
||||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
@@ -6,6 +6,7 @@ using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
@@ -20,8 +21,9 @@ namespace NzbDrone.Core.Download.Clients.Hadouken
|
||||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
@@ -7,6 +7,7 @@ using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
@@ -20,8 +21,9 @@ namespace NzbDrone.Core.Download.Clients.NzbVortex
|
||||
IHttpClient httpClient,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(httpClient, configService, diskProvider, logger)
|
||||
: base(httpClient, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
@@ -10,6 +10,7 @@ using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Exceptions;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
@@ -18,15 +19,14 @@ namespace NzbDrone.Core.Download.Clients.Nzbget
|
||||
public class Nzbget : UsenetClientBase<NzbgetSettings>
|
||||
{
|
||||
private readonly INzbgetProxy _proxy;
|
||||
private readonly string[] _successStatus = { "SUCCESS", "NONE" };
|
||||
private readonly string[] _deleteFailedStatus = { "HEALTH", "DUPE", "SCAN", "COPY", "BAD" };
|
||||
|
||||
public Nzbget(INzbgetProxy proxy,
|
||||
IHttpClient httpClient,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(httpClient, configService, diskProvider, logger)
|
||||
: base(httpClient, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
@@ -8,6 +8,7 @@ using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
|
||||
@@ -17,8 +18,9 @@ namespace NzbDrone.Core.Download.Clients.Pneumatic
|
||||
{
|
||||
public Pneumatic(IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(configService, diskProvider, logger)
|
||||
: base(configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
}
|
||||
|
||||
|
@@ -8,6 +8,7 @@ using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
@@ -30,8 +31,9 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ICacheManager cacheManager,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxySelector = proxySelector;
|
||||
|
||||
|
@@ -9,6 +9,7 @@ using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Exceptions;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
@@ -22,8 +23,9 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
|
||||
IHttpClient httpClient,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(httpClient, configService, diskProvider, logger)
|
||||
: base(httpClient, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
@@ -5,6 +5,7 @@ using NLog;
|
||||
using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
|
||||
namespace NzbDrone.Core.Download.Clients.Transmission
|
||||
{
|
||||
@@ -15,8 +16,9 @@ namespace NzbDrone.Core.Download.Clients.Transmission
|
||||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(proxy, torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(proxy, torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
}
|
||||
|
||||
|
@@ -6,6 +6,7 @@ using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
@@ -20,8 +21,9 @@ namespace NzbDrone.Core.Download.Clients.Transmission
|
||||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
_proxy = proxy;
|
||||
}
|
||||
|
@@ -4,6 +4,7 @@ using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Download.Clients.Transmission;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Localization;
|
||||
|
||||
namespace NzbDrone.Core.Download.Clients.Vuze
|
||||
{
|
||||
@@ -16,8 +17,9 @@ namespace NzbDrone.Core.Download.Clients.Vuze
|
||||
ISeedConfigProvider seedConfigProvider,
|
||||
IConfigService configService,
|
||||
IDiskProvider diskProvider,
|
||||
ILocalizationService localizationService,
|
||||
Logger logger)
|
||||
: base(proxy, torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
|
||||
: base(proxy, torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
|
||||
{
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user