1{
2 lib,
3 aiosqlite,
4 beautifulsoup4,
5 buildPythonPackage,
6 fake-useragent,
7 fetchFromGitHub,
8 hatchling,
9 httpx,
10 loguru,
11 pyotp,
12 pytestCheckHook,
13 pytest-asyncio,
14 pytest-httpx,
15 pythonOlder,
16}:
17
18buildPythonPackage rec {
19 pname = "twscrape";
20 version = "0.17.0";
21 pyproject = true;
22
23 disabled = pythonOlder "3.10";
24
25 src = fetchFromGitHub {
26 owner = "vladkens";
27 repo = "twscrape";
28 tag = "v${version}";
29 hash = "sha256-0j6nE8V0CWTuIHMS+2p5Ncz7d+D6VagjtyfMbQuI8Eg=";
30 };
31
32 build-system = [ hatchling ];
33
34 pythonRelaxDeps = [ "beautifulsoup4" ];
35
36 dependencies = [
37 aiosqlite
38 beautifulsoup4
39 fake-useragent
40 httpx
41 loguru
42 pyotp
43 ];
44
45 nativeCheckInputs = [
46 pytestCheckHook
47 pytest-asyncio
48 pytest-httpx
49 ];
50
51 pythonImportsCheck = [ "twscrape" ];
52
53 meta = {
54 description = "Twitter API scrapper with authorization support";
55 homepage = "https://github.com/vladkens/twscrape";
56 changelog = "https://github.com/vladkens/twscrape/releases/tag/v${version}";
57 license = lib.licenses.mit;
58 maintainers = [ lib.maintainers.amadejkastelic ];
59 };
60}