mirror of
https://github.com/markbeep/AudioBookRequest.git
synced 2026-05-01 13:59:17 -05:00
reorganize folder structure. move to internal
This commit is contained in:
+2
-2
@@ -2,9 +2,9 @@ import pathlib
|
||||
from logging.config import fileConfig
|
||||
|
||||
from alembic import context
|
||||
from app import models
|
||||
from app.db import engine
|
||||
from app.internal import models
|
||||
from app.internal.env_settings import Settings
|
||||
from app.util.db import engine
|
||||
|
||||
# this is the Alembic Config object, which provides
|
||||
# access to the values within the .ini file in use.
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
import asyncio
|
||||
from datetime import datetime
|
||||
import time
|
||||
from datetime import datetime
|
||||
from typing import Literal, Optional
|
||||
from urllib.parse import urlencode
|
||||
from aiohttp import ClientSession
|
||||
|
||||
import pydantic
|
||||
from aiohttp import ClientSession
|
||||
from sqlmodel import Session, col, select
|
||||
|
||||
from app.models import BookRequest
|
||||
from app.internal.models import BookRequest
|
||||
|
||||
REFETCH_TTL = 60 * 60 * 24 * 7 # 1 week
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
# pyright: reportUnknownVariableType=false
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from enum import Enum
|
||||
from typing import Annotated, Literal, Optional, Union
|
||||
import uuid
|
||||
from sqlmodel import Field, SQLModel, JSON, Column, UniqueConstraint, func, DateTime
|
||||
|
||||
from sqlmodel import JSON, Column, DateTime, Field, SQLModel, UniqueConstraint, func
|
||||
|
||||
|
||||
class BaseModel(SQLModel):
|
||||
@@ -1,9 +1,10 @@
|
||||
from typing import Optional
|
||||
|
||||
from aiohttp import ClientSession
|
||||
from sqlmodel import select
|
||||
|
||||
from app.db import open_session
|
||||
from app.models import BookRequest, ManualBookRequest, Notification
|
||||
from app.internal.models import BookRequest, ManualBookRequest, Notification
|
||||
from app.util.db import open_session
|
||||
|
||||
|
||||
def create_title_body(
|
||||
@@ -83,7 +84,6 @@ async def send_manual_notification(
|
||||
book: ManualBookRequest,
|
||||
requester_username: Optional[str] = None,
|
||||
):
|
||||
print("SENDING", "CALLED")
|
||||
try:
|
||||
async with ClientSession() as client_session:
|
||||
title, body = create_title_body(
|
||||
@@ -95,7 +95,6 @@ async def send_manual_notification(
|
||||
",".join(book.narrators),
|
||||
notification.event.value,
|
||||
)
|
||||
print("SENDING", title, body)
|
||||
|
||||
async with client_session.post(
|
||||
notification.apprise_url,
|
||||
@@ -108,5 +107,5 @@ async def send_manual_notification(
|
||||
response.raise_for_status()
|
||||
return await response.json()
|
||||
except Exception as e:
|
||||
print("SENDING", e)
|
||||
print("Failed to send notification", e)
|
||||
return None
|
||||
@@ -7,8 +7,8 @@ from urllib.parse import urlencode, urljoin
|
||||
from aiohttp import ClientResponse, ClientSession
|
||||
from sqlmodel import Session
|
||||
|
||||
from app.models import ProwlarrSource, TorrentSource, UsenetSource
|
||||
from app.util.cache import StringConfigCache, SimpleCache
|
||||
from app.internal.models import ProwlarrSource, TorrentSource, UsenetSource
|
||||
from app.util.cache import SimpleCache, StringConfigCache
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
# what is currently being queried
|
||||
from contextlib import contextmanager
|
||||
|
||||
import pydantic
|
||||
from aiohttp import ClientSession
|
||||
from fastapi import HTTPException
|
||||
import pydantic
|
||||
from sqlmodel import Session, select
|
||||
|
||||
from app.models import BookRequest, ProwlarrSource
|
||||
from app.util.ranking.download_ranking import rank_sources
|
||||
from app.util.prowlarr import query_prowlarr, start_download
|
||||
from app.util.prowlarr import prowlarr_config
|
||||
from app.internal.models import BookRequest, ProwlarrSource
|
||||
from app.internal.prowlarr.prowlarr import (
|
||||
prowlarr_config,
|
||||
query_prowlarr,
|
||||
start_download,
|
||||
)
|
||||
from app.internal.ranking.download_ranking import rank_sources
|
||||
|
||||
querying: set[str] = set()
|
||||
|
||||
@@ -7,9 +7,9 @@ from aiohttp import ClientSession
|
||||
from rapidfuzz import fuzz, utils
|
||||
from sqlmodel import Session
|
||||
|
||||
from app.models import BookRequest, ProwlarrSource
|
||||
from app.util.ranking.quality import quality_config
|
||||
from app.util.ranking.quality_extract import Quality, extract_qualities
|
||||
from app.internal.models import BookRequest, ProwlarrSource
|
||||
from app.internal.ranking.quality import quality_config
|
||||
from app.internal.ranking.quality_extract import Quality, extract_qualities
|
||||
|
||||
|
||||
class RankSource(pydantic.BaseModel):
|
||||
@@ -1,16 +1,17 @@
|
||||
# pyright: basic
|
||||
|
||||
import os
|
||||
from collections import defaultdict
|
||||
from aiohttp import ClientSession
|
||||
|
||||
import aiohttp
|
||||
import pydantic
|
||||
from sqlmodel import Session
|
||||
from app.util.prowlarr import prowlarr_config
|
||||
import torrent_parser as tp
|
||||
import os
|
||||
from aiohttp import ClientSession
|
||||
from sqlmodel import Session
|
||||
|
||||
from app.models import BookRequest, ProwlarrSource
|
||||
from app.util.ranking.quality import FileFormat
|
||||
from app.internal.models import BookRequest, ProwlarrSource
|
||||
from app.internal.prowlarr.prowlarr import prowlarr_config
|
||||
from app.internal.ranking.quality import FileFormat
|
||||
|
||||
# HACK: Disabled because it doesn't work well with ratelimiting
|
||||
# We instead completely rely on the title and size of the complete torrent
|
||||
+4
-2
@@ -1,14 +1,16 @@
|
||||
from typing import Any
|
||||
from urllib.parse import quote_plus
|
||||
|
||||
from fastapi import FastAPI, HTTPException, Request, status
|
||||
from fastapi.responses import RedirectResponse
|
||||
from sqlalchemy import func
|
||||
from sqlmodel import select
|
||||
from app.db import open_session
|
||||
|
||||
from app.internal.env_settings import Settings
|
||||
from app.models import User
|
||||
from app.internal.models import User
|
||||
from app.routers import root, search, settings, wishlist
|
||||
from app.util.auth import RequiresLoginException
|
||||
from app.util.db import open_session
|
||||
|
||||
app = FastAPI(
|
||||
title="AudioBookRequest",
|
||||
|
||||
+2
-2
@@ -6,8 +6,7 @@ from fastapi.responses import FileResponse, RedirectResponse
|
||||
from fastapi.security import OAuth2PasswordRequestForm
|
||||
from sqlmodel import Session
|
||||
|
||||
from app.db import get_session
|
||||
from app.models import GroupEnum
|
||||
from app.internal.models import GroupEnum
|
||||
from app.util.auth import (
|
||||
DetailedUser,
|
||||
LoginTypeEnum,
|
||||
@@ -19,6 +18,7 @@ from app.util.auth import (
|
||||
get_authenticated_user,
|
||||
raise_for_invalid_password,
|
||||
)
|
||||
from app.util.db import get_session
|
||||
from app.util.templates import templates
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
+15
-12
@@ -12,8 +12,13 @@ from fastapi import (
|
||||
)
|
||||
from sqlmodel import Session, col, select
|
||||
|
||||
from app.db import get_session, open_session
|
||||
from app.models import (
|
||||
from app.internal.book_search import (
|
||||
audible_region_type,
|
||||
audible_regions,
|
||||
get_audnexus_book,
|
||||
list_audible_books,
|
||||
)
|
||||
from app.internal.models import (
|
||||
BookRequest,
|
||||
BookSearchResult,
|
||||
EventEnum,
|
||||
@@ -21,19 +26,17 @@ from app.models import (
|
||||
ManualBookRequest,
|
||||
Notification,
|
||||
)
|
||||
from app.internal.prowlarr.notifications import (
|
||||
send_manual_notification,
|
||||
send_notification,
|
||||
)
|
||||
from app.internal.prowlarr.prowlarr import prowlarr_config
|
||||
from app.internal.query import query_sources
|
||||
from app.internal.ranking.quality import quality_config
|
||||
from app.routers.wishlist import get_wishlist_books
|
||||
from app.util.auth import DetailedUser, get_authenticated_user
|
||||
from app.util.book_search import (
|
||||
audible_region_type,
|
||||
audible_regions,
|
||||
get_audnexus_book,
|
||||
list_audible_books,
|
||||
)
|
||||
from app.util.connection import get_connection
|
||||
from app.util.notifications import send_manual_notification, send_notification
|
||||
from app.util.prowlarr import prowlarr_config
|
||||
from app.util.query import query_sources
|
||||
from app.util.ranking.quality import quality_config
|
||||
from app.util.db import get_session, open_session
|
||||
from app.util.templates import template_response
|
||||
|
||||
router = APIRouter(prefix="/search")
|
||||
|
||||
@@ -6,9 +6,11 @@ from aiohttp import ClientResponseError, ClientSession
|
||||
from fastapi import APIRouter, Depends, Form, HTTPException, Request, Response
|
||||
from sqlmodel import Session, select
|
||||
|
||||
from app.db import get_session
|
||||
from app.internal.models import EventEnum, GroupEnum, Notification, User
|
||||
from app.internal.prowlarr.indexer_categories import indexer_categories
|
||||
from app.models import EventEnum, GroupEnum, Notification, User
|
||||
from app.internal.prowlarr.notifications import send_notification
|
||||
from app.internal.prowlarr.prowlarr import flush_prowlarr_cache, prowlarr_config
|
||||
from app.internal.ranking.quality import IndexerFlag, QualityRange, quality_config
|
||||
from app.util.auth import (
|
||||
DetailedUser,
|
||||
LoginTypeEnum,
|
||||
@@ -19,9 +21,7 @@ from app.util.auth import (
|
||||
raise_for_invalid_password,
|
||||
)
|
||||
from app.util.connection import get_connection
|
||||
from app.util.notifications import send_notification
|
||||
from app.util.prowlarr import flush_prowlarr_cache, prowlarr_config
|
||||
from app.util.ranking.quality import IndexerFlag, QualityRange, quality_config
|
||||
from app.util.db import get_session
|
||||
from app.util.templates import template_response
|
||||
|
||||
router = APIRouter(prefix="/settings")
|
||||
@@ -578,7 +578,6 @@ def delete_notification(
|
||||
notifications = session.exec(select(Notification)).all()
|
||||
for notif in notifications:
|
||||
if notif.id == notification_id:
|
||||
print("DELETED")
|
||||
session.delete(notif)
|
||||
session.commit()
|
||||
break
|
||||
|
||||
+12
-7
@@ -1,5 +1,5 @@
|
||||
from typing import Annotated, Literal, Optional
|
||||
import uuid
|
||||
from typing import Annotated, Literal, Optional
|
||||
|
||||
from aiohttp import ClientSession
|
||||
from fastapi import (
|
||||
@@ -15,16 +15,21 @@ from fastapi.responses import RedirectResponse
|
||||
from sqlalchemy import func
|
||||
from sqlmodel import Session, col, select
|
||||
|
||||
from app.db import get_session, open_session
|
||||
from app.models import BookRequest, BookWishlistResult, GroupEnum, ManualBookRequest
|
||||
from app.util.auth import DetailedUser, get_authenticated_user
|
||||
from app.util.connection import get_connection
|
||||
from app.util.prowlarr import (
|
||||
from app.internal.models import (
|
||||
BookRequest,
|
||||
BookWishlistResult,
|
||||
GroupEnum,
|
||||
ManualBookRequest,
|
||||
)
|
||||
from app.internal.prowlarr.prowlarr import (
|
||||
ProwlarrMisconfigured,
|
||||
prowlarr_config,
|
||||
start_download,
|
||||
)
|
||||
from app.util.query import query_sources
|
||||
from app.internal.query import query_sources
|
||||
from app.util.auth import DetailedUser, get_authenticated_user
|
||||
from app.util.connection import get_connection
|
||||
from app.util.db import get_session, open_session
|
||||
from app.util.templates import template_response
|
||||
|
||||
router = APIRouter(prefix="/wishlist")
|
||||
|
||||
+5
-5
@@ -1,20 +1,20 @@
|
||||
import base64
|
||||
from datetime import timedelta, datetime, timezone
|
||||
from enum import Enum
|
||||
import re
|
||||
import secrets
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from enum import Enum
|
||||
from typing import Annotated, Literal, Optional
|
||||
|
||||
import jwt
|
||||
from argon2 import PasswordHasher
|
||||
from argon2.exceptions import VerifyMismatchError
|
||||
from fastapi import Depends, HTTPException, Request, status
|
||||
from fastapi.security import HTTPBasic, OAuth2PasswordBearer
|
||||
import jwt
|
||||
from sqlmodel import Session
|
||||
|
||||
from app.db import get_session
|
||||
from app.models import User, GroupEnum
|
||||
from app.internal.models import GroupEnum, User
|
||||
from app.util.cache import StringConfigCache
|
||||
from app.util.db import get_session
|
||||
|
||||
JWT_ALGORITHM = "HS256"
|
||||
|
||||
|
||||
+2
-3
@@ -1,11 +1,10 @@
|
||||
from abc import ABC
|
||||
import time
|
||||
from abc import ABC
|
||||
from typing import Generic, Optional, TypeVar, overload
|
||||
|
||||
from sqlmodel import Session, select
|
||||
|
||||
from app.models import Config
|
||||
|
||||
from app.internal.models import Config
|
||||
|
||||
T = TypeVar("T")
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from contextlib import contextmanager
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
from sqlmodel import Session, text
|
||||
|
||||
Reference in New Issue
Block a user