From d25b860162a338d60bd0a0da9ddf453993efcc84 Mon Sep 17 00:00:00 2001 From: Henrik Petersson <44243358+hnrkcode@users.noreply.github.com> Date: Tue, 6 Sep 2022 21:07:40 +0200 Subject: [PATCH 01/10] Add method that counds total pages that exists in a forum category --- loading_sdk/settings.py | 1 + loading_sdk/sync_api/client.py | 58 ++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/loading_sdk/settings.py b/loading_sdk/settings.py index 52a7a1c..008758f 100644 --- a/loading_sdk/settings.py +++ b/loading_sdk/settings.py @@ -3,6 +3,7 @@ API_VERSION = "v1" USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" EDITORIAL_SORT = ["title"] +FORUM_CATEGORIES = ["games", "other", "texts"] EDITORIAL_POST_TYPES = [ "neRegular", "review", diff --git a/loading_sdk/sync_api/client.py b/loading_sdk/sync_api/client.py index 6c70cb9..f614e8d 100644 --- a/loading_sdk/sync_api/client.py +++ b/loading_sdk/sync_api/client.py @@ -4,6 +4,7 @@ from loading_sdk.settings import ( API_URL, API_VERSION, + FORUM_CATEGORIES, EDITORIAL_POST_TYPES, EDITORIAL_SORT, USER_AGENT, @@ -481,3 +482,60 @@ def get_socials(self): return {"code": 404, "message": "No results found", "data": None} return {"code": 200, "message": "OK", "data": data} + + def get_total_thread_pages(self): + pass + + def get_total_category_pages(self, category): + if category not in FORUM_CATEGORIES: + return {"code": 404, "message": "Invalid category", "data": None} + + working_page = None + current_page = 1 + url = f"{API_URL}/{API_VERSION}/posts/" + headers = { + "User-Agent": USER_AGENT, + "page": str(current_page), + category: category, + } + + if category == "texts": + headers["post-type"] = "neRegular" + + # Double current page until no results are returned + # then we know all pages after that won't work either. + while True: + headers["page"] = str(current_page) + response = requests.get(url, headers=headers, timeout=10) + data = response.json() + + if not data["posts"]: + break + + working_page = current_page + current_page *= 2 + + # Check the page in the middle of highest known working page and + # current page until they have the same page number. + while True: + page = working_page + (current_page - working_page) / 2 + headers["page"] = str(page) + + response = requests.get(url, headers=headers, timeout=10) + data = response.json() + + if data["posts"]: + working_page = page + else: + current_page = page + + if math.floor(current_page) == math.floor(working_page): + break + + total_pages = math.floor(working_page) + + return { + "code": 200, + "message": "OK", + "data": {"total_pages": total_pages}, + } From 9c8d8f3223dcd1c6dde78027cce1baeb7dbb3dcf Mon Sep 17 00:00:00 2001 From: Henrik Petersson <44243358+hnrkcode@users.noreply.github.com> Date: Tue, 6 Sep 2022 21:22:31 +0200 Subject: [PATCH 02/10] Add method that returns a threads total pages --- loading_sdk/settings.py | 1 + loading_sdk/sync_api/client.py | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/loading_sdk/settings.py b/loading_sdk/settings.py index 008758f..6bf7983 100644 --- a/loading_sdk/settings.py +++ b/loading_sdk/settings.py @@ -3,6 +3,7 @@ API_VERSION = "v1" USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" EDITORIAL_SORT = ["title"] +POSTS_PER_PAGE = 30 FORUM_CATEGORIES = ["games", "other", "texts"] EDITORIAL_POST_TYPES = [ "neRegular", diff --git a/loading_sdk/sync_api/client.py b/loading_sdk/sync_api/client.py index f614e8d..ac7117e 100644 --- a/loading_sdk/sync_api/client.py +++ b/loading_sdk/sync_api/client.py @@ -4,9 +4,10 @@ from loading_sdk.settings import ( API_URL, API_VERSION, - FORUM_CATEGORIES, EDITORIAL_POST_TYPES, EDITORIAL_SORT, + FORUM_CATEGORIES, + POSTS_PER_PAGE, USER_AGENT, ) from loading_sdk.sync_api.extractors import extract_data @@ -189,7 +190,7 @@ def get_thread(self, thread_id, page=None): # Doing this checks to make sure it only return data from a page that exists. if page: replies = data["posts"][-1]["replies"] - pages = math.ceil(replies / 30) + pages = math.ceil(replies / POSTS_PER_PAGE) # There is always atleast one page. if pages == 0: @@ -483,8 +484,21 @@ def get_socials(self): return {"code": 200, "message": "OK", "data": data} - def get_total_thread_pages(self): - pass + def get_total_thread_pages(self, thread_id): + response = self.get_thread(thread_id) + + if response["code"] != 200: + return response + + thread_start = response["data"]["posts"][-1] + replies = thread_start["replies"] + + if replies < 1: + replies = 1 + + pages = math.ceil(replies / POSTS_PER_PAGE) + + return pages def get_total_category_pages(self, category): if category not in FORUM_CATEGORIES: From 4c99a9ae5220f16f1dc4e73bd836422951311cf4 Mon Sep 17 00:00:00 2001 From: Henrik Petersson <44243358+hnrkcode@users.noreply.github.com> Date: Tue, 6 Sep 2022 21:25:04 +0200 Subject: [PATCH 03/10] Refactor replies --- loading_sdk/sync_api/client.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/loading_sdk/sync_api/client.py b/loading_sdk/sync_api/client.py index ac7117e..5585253 100644 --- a/loading_sdk/sync_api/client.py +++ b/loading_sdk/sync_api/client.py @@ -491,11 +491,7 @@ def get_total_thread_pages(self, thread_id): return response thread_start = response["data"]["posts"][-1] - replies = thread_start["replies"] - - if replies < 1: - replies = 1 - + replies = max(thread_start["replies"], 1) pages = math.ceil(replies / POSTS_PER_PAGE) return pages From 073e595d2211597ba2f8a935f3b4bb18de4e1b95 Mon Sep 17 00:00:00 2001 From: Henrik Petersson <44243358+hnrkcode@users.noreply.github.com> Date: Tue, 6 Sep 2022 21:29:53 +0200 Subject: [PATCH 04/10] Add docstrings --- loading_sdk/sync_api/client.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/loading_sdk/sync_api/client.py b/loading_sdk/sync_api/client.py index 5585253..241e859 100644 --- a/loading_sdk/sync_api/client.py +++ b/loading_sdk/sync_api/client.py @@ -485,6 +485,13 @@ def get_socials(self): return {"code": 200, "message": "OK", "data": data} def get_total_thread_pages(self, thread_id): + """Returns total pages of a thread. + + :param thread_id: Unique thread id + :type thread_id: str + :rtype: dict + """ + response = self.get_thread(thread_id) if response["code"] != 200: @@ -497,6 +504,13 @@ def get_total_thread_pages(self, thread_id): return pages def get_total_category_pages(self, category): + """Returns total pages of a forum category. + + :param category: Category name. Can be games, other, or texts + :type category: str + :rtype: dict + """ + if category not in FORUM_CATEGORIES: return {"code": 404, "message": "Invalid category", "data": None} From 607cd8501f39f47ada94589c3e97e61ac085e8c5 Mon Sep 17 00:00:00 2001 From: Henrik Petersson <44243358+hnrkcode@users.noreply.github.com> Date: Tue, 6 Sep 2022 21:30:21 +0200 Subject: [PATCH 05/10] Update docs --- docs/build/doctrees/environment.pickle | Bin 25996 -> 26960 bytes docs/build/doctrees/loading_sdk.doctree | Bin 172544 -> 185106 bytes docs/build/html/genindex.html | 16 ++++++- docs/build/html/loading_sdk.html | 56 ++++++++++++++++++++++++ docs/build/html/objects.inv | Bin 589 -> 622 bytes docs/build/html/searchindex.js | 2 +- 6 files changed, 71 insertions(+), 3 deletions(-) diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index dd74cb8f76cc37387f99b892c1b1e44098456910..cc1b73ad4c0e420221f761f30daa259f0a2c8fa0 100644 GIT binary patch delta 2046 zcmah~eMnnZ6!%#Z*QK#WhpCKKjZqV=sIA|&F2QNGT1_-2T1|X;`5?({V%Fpd)8ZG~ z6!8s9&y%Rob`G|`w#f*L!B!ZI!nSTOHW-637>s>&EBmi(qm14AqAxd2@Sn%Izw^7l zbM86k-Y48=zWj<&EGjm7!|y7XvNQS7n14DFNQi#-;;L&yE6aTtsfCsvH_)J#;@yeRxHzeKx z6x#GIW-BG?jSRC1o@yQZP_@7$vGrOl35k9sA0mfxkKqpqg$l7XE#&brUqYM{4QMM> zTVrJ)(yE7Bh7ZBiR+PGGoXy361|HQtR7%?`!F>J{?6wTy2s+^F?J#4|r+%-mVX&b| zRW_`qjk}F+r;Y39Zl;Yh%?Sp6JR7^&8Ub~)2Ig8nW|Ap$+XLn#NwGgy%CBF6lF-@F zQ$R4ch$e879ER39>Ll6?w2>zj1tnAWIvz7m?C~~JpLVhNrM6&zXZaYcs?qsPc zv-3ds!ogam1vJ*v;IZT#okDj;h>ikS2EsjRIBnGsp+gdZwPA!i|7iHKnv`Z$s_H7P zpw-Ue+1R!Bn@?t1`RS# z4eGucFmX@Hc!66BL6@1<8^9^_kpY5#UB_vM4T{~vG+>8o?m-%G!hQE88n^-#le$w> zeOyx2@Q3sQGy_#?x?3!!KLtCJWweGDKA*fGC%nUIp_;9y2_azFE}78e(Zc&|oxGm& zbQE*m*fgKj-)qq7G0`GC{K+;Stl|)-h3`B@nl}rDTqh08!5yv{*wL&~En@JZoI=c7 z0)KOL^sZ%Gsj~f>sylLwSMfN?^rL21fJSfo0#)>NGL%`DU>a>;j6CeONki@sf@(ne zMfFbc@fi`YOM27)!jE3a60%5l2mM6YQKj@mkZVFNLB^}cj(x9!xLxpvmu2SRvag<5 zfLY)9!j}l;4dQ#5Sg*icU-iP0B$(|IPNdT*f1dmxMRIddHUqtix2=fFqIX3Ul!*Wr z_k~0R7z|m^p^_@QL@Kx8N1swuW%3ar>Mv!sVa4CjI8PEJpO9r)L~CRv?5{|ay-?V< RO;+3Rv){qI2^Rvk{{S?ogZKad delta 1594 zcmZuxUrbY19OhQqj#RMB8C*n2jh#|(|j?!%ovS{4<>HO5_ir8Zcoi#PJZY6zVrQl z=gU3!@gG9&kzl-HoSl@GjDihT+m@1?`Ft`yc1{{q9k$IIT=RyaB45X!59-kVV-1

9y8-_Do(W9ov5^L$A~>sGOg*}L$SvZ7UosO;SwNL+p)4^LRi31 z_4l=`A$iUgW=0Gf=)xKiE3L+I#pz^hRLLk#GOyOw92Zd9T#ii3W_;`Xl^XWDrVJGN z2>;Z*z*oDI)VK<1cQ4MhIMkQ!8i5w&s=YqDS}ZsGv|3zloLMbCX&x0!T0c8Fnzmwb z_cAUy9hh#pi;(L>wP(*0VH2CN)1VF5X(S8S+jg*wVS@@8pi@RDG}Tt8$)?F{v6cy0 zP#?7YD}1n~n^PZpM6;SYl-h*nCkE-|y@8{pjLd4jS?cj!KosWiF5orK8jFgYWDZAz z-Fp2)@PuB!3;Ojsc(O;Y7f;yKI(|BoH@wf) zTl@3Fr1~q+J{KG&LiBj+%Hv!f(-iJRnnLGximxbQbPBUy^EAH@ty4NPF^(td5952r^iDWH`0i}{;AP}wK@v}5FVrtUUr z?~T0^_SNQDD<#%hBcp@3ds-BtuqNC>4EqyJ)&!H>Vw}vXGnhI!@)` z;ka~BVUL0oD#!(T?7DJIiC$N7rco&}5|b731qEdv`Cm&*uO_PWM-md}XvxoW5xeA% pg>iJs^$k%rAX{YLHH9SEF15a6UDjGrZk+ALaYqgaH)hWG{{z4M(%=99 diff --git a/docs/build/doctrees/loading_sdk.doctree b/docs/build/doctrees/loading_sdk.doctree index 95ec314286909a65ada6e6f354b106cc598218c1..0ad7cd6ea23d0ae29faeabeaef49b0806ff1b00e 100644 GIT binary patch delta 23303 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 rI_oeF(jVH~8$}iP)0O_5qdf&JV~r5UIfb*k>^ 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

T#L{dVBkjHWDgT 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
  • (loading_sdk.sync_api.client.LoadingApiClient method)
  • - - + diff --git a/docs/build/html/loading_sdk.html b/docs/build/html/loading_sdk.html index 6f7adc3..3b09429 100644 --- a/docs/build/html/loading_sdk.html +++ b/docs/build/html/loading_sdk.html @@ -274,6 +274,34 @@

    Submodules +
    +get_total_category_pages(category)
    +

    Returns total pages of a forum category.

    +
    +
    Parameters
    +

    category (str) – Category name. Can be games, other, or texts

    +
    +
    Return type
    +

    dict

    +
    +
    +

    + +
    +
    +get_total_thread_pages(thread_id)
    +

    Returns total pages of a thread.

    +
    +
    Parameters
    +

    thread_id (str) – Unique thread id

    +
    +
    Return type
    +

    dict

    +
    +
    +
    +
    search(query)
    @@ -704,6 +732,34 @@

    Submodules +
    +get_total_category_pages(category)
    +

    Returns total pages of a forum category.

    +
    +
    Parameters
    +

    category (str) – Category name. Can be games, other, or texts

    +
    +
    Return type
    +

    dict

    +
    +
    +

    + +
    +
    +get_total_thread_pages(thread_id)
    +

    Returns total pages of a thread.

    +
    +
    Parameters
    +

    thread_id (str) – Unique thread id

    +
    +
    Return type
    +

    dict

    +
    +
    +
    +
    search(query)
    diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv index aabd7380d9212ab2bfe983b4bd12be653441d1bf..b762ca5096fa4e4964c5386facc942488aa10291 100644 GIT binary patch delta 500 zcmVz5QcX@1y#E`YSwH~r%J69sY6GL0I^XqSO!b=*4OCk^+}42 z(>PA5z!^`84(|I8IR79Nrd;NkrXQ$kH>IMDVCWHvQ+!pJQrx?d^Z}*Gcxx~f#ovCt7Ar(mO;LjHG7Z|Czv!u>Fe4{0S& z1)z6^&=;&8=zp^Tbg26VNB}%JfDUl#0QzE`19tTQKFI3>_zO0E46hvm$0>FoBcL~C z3=f~yHp{(l!Qj5_ONJc%O*YW0{kV%%4D@F&F4UR5-~dnd;sV^*i@QKqfF0P24Dwzt z@?woV{~aD61Amv_6!E<~awfT?>=S82Hv;dOK^xXYTPSdC&-K5cscP5A` z88XT$S~-~xVyPAT`TEw#<}{@(40rd<-FPiy9jl)S)AC>tiVac-^m6?<`k zbuFHxfXZ~FU0X3DR7IBOtSRJDJ(E;xO!0y>Kn-NI(mkjIQ-3Ia3&|Arm*2<&E=-J> zdQOyyaxfX)s@6o{bW^EDP^lxpa#}(Rjxq%_5jYV}t;aNKC+y30J4q`R=}||yNE&Fv ziZBT6yphpbEZE;GA1t3K*5g(E?f^JQqMm z*e`%S+s#3nGJk-N@@D{l#)}`rwL{>r#3nL^`fiKi@ab$f+4~v{?`>Z)=IF1ok*@aR z&N4C5&t6=tnZ4i$Cwp-bHumDqa4XOT_9CO)>qVaBBK!I_he}i&K8ZGbCFvF Date: Tue, 6 Sep 2022 21:44:00 +0200 Subject: [PATCH 06/10] Make async version for get_total_category_pages --- loading_sdk/async_api/client.py | 69 +++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/loading_sdk/async_api/client.py b/loading_sdk/async_api/client.py index 26467f0..3f0ae98 100644 --- a/loading_sdk/async_api/client.py +++ b/loading_sdk/async_api/client.py @@ -6,6 +6,8 @@ API_VERSION, EDITORIAL_POST_TYPES, EDITORIAL_SORT, + FORUM_CATEGORIES, + POSTS_PER_PAGE, USER_AGENT, ) from loading_sdk.async_api.extractors import extract_data @@ -517,3 +519,70 @@ async def get_socials(self): return {"code": 404, "message": "No results found", "data": None} return {"code": 200, "message": "OK", "data": data} + + async def get_total_thread_pages(self, thread_id): + """Returns total pages of a thread. + + :param thread_id: Unique thread id + :type thread_id: str + :rtype: dict + """ + pass + + async def get_total_category_pages(self, category): + """Returns total pages of a forum category. + + :param category: Category name. Can be games, other, or texts + :type category: str + :rtype: dict + """ + + if category not in FORUM_CATEGORIES: + return {"code": 404, "message": "Invalid category", "data": None} + + working_page = None + current_page = 1 + url = f"{API_URL}/{API_VERSION}/posts/" + headers = { + "User-Agent": USER_AGENT, + "page": str(current_page), + category: category, + } + + if category == "texts": + headers["post-type"] = "neRegular" + + async with aiohttp.ClientSession() as session: + # Double current page until no results are returned + # then we know all pages after that won't work either. + while True: + headers["page"] = str(current_page) + async with session.get(url, headers=headers) as response: + data = await response.json() + + if not data["posts"]: + break + + working_page = current_page + current_page *= 2 + + # Check the page in the middle of highest known working page and + # current page until they have the same page number. + while True: + page = working_page + (current_page - working_page) / 2 + headers["page"] = str(page) + + async with session.get(url, headers=headers) as response: + data = await response.json() + + if data["posts"]: + working_page = page + else: + current_page = page + + if math.floor(current_page) == math.floor(working_page): + break + + total_pages = math.floor(working_page) + + return total_pages From efbbd5352fd4fed36f277646e375e20543a435f5 Mon Sep 17 00:00:00 2001 From: Henrik Petersson <44243358+hnrkcode@users.noreply.github.com> Date: Tue, 6 Sep 2022 21:45:33 +0200 Subject: [PATCH 07/10] Make async version for get_total_thread_pages --- loading_sdk/async_api/client.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/loading_sdk/async_api/client.py b/loading_sdk/async_api/client.py index 3f0ae98..e954727 100644 --- a/loading_sdk/async_api/client.py +++ b/loading_sdk/async_api/client.py @@ -527,7 +527,17 @@ async def get_total_thread_pages(self, thread_id): :type thread_id: str :rtype: dict """ - pass + + response = await self.get_thread(thread_id) + + if response["code"] != 200: + return response + + thread_start = response["data"]["posts"][-1] + replies = max(thread_start["replies"], 1) + pages = math.ceil(replies / POSTS_PER_PAGE) + + return pages async def get_total_category_pages(self, category): """Returns total pages of a forum category. From 68928d0047f44ef41c6fe6e831f4e89660906010 Mon Sep 17 00:00:00 2001 From: Henrik Petersson <44243358+hnrkcode@users.noreply.github.com> Date: Tue, 6 Sep 2022 21:46:29 +0200 Subject: [PATCH 08/10] Update docs --- docs/build/doctrees/environment.pickle | Bin 26960 -> 27526 bytes docs/build/doctrees/loading_sdk.doctree | Bin 185106 -> 192046 bytes docs/build/html/genindex.html | 8 +++++-- docs/build/html/loading_sdk.html | 28 ++++++++++++++++++++++++ docs/build/html/objects.inv | Bin 622 -> 632 bytes docs/build/html/searchindex.js | 2 +- 6 files changed, 35 insertions(+), 3 deletions(-) diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index cc1b73ad4c0e420221f761f30daa259f0a2c8fa0..575e4f8e5caabb0865c32df690d0d28ea3139208 100644 GIT binary patch delta 1296 zcmZuxYe-aS7@luz#!T173(;lWiE+>wO*7pxH(OU09Lh9F9i5vq=jI$g&7o9iH)QRP zt#lS`-Xk_?S1PSQi_?#Sq6qp^f24x$Kl&3z1^uuhh}ic#lpUcz56}BN@AqE5bD6zM z1|Ja1fMs-V=S2&#|6=Lr7NtF^lG+vH#E$N0xJT?%mE@fyD=otqDHjykyQC`cNi37Bvc8#O3*2FaMFI`0sY zfJokPG6p0+YZ)sad!e+~X}IbmeO1@O5uwH@V;$Wk_Xty!PB)`G+QR`F*#(?Ti@U@s1( z0~LjO+6Wz8WHJq7*MxSf;xoY^Z*E$dLA>z1(FFrFC8QRfhs(hpu)=l!Qt&sWktUdx zmO+1$P4~Ba^|Rnz2PpspRKEx0 zm8%Ta8qA_o2t&QjLa_Pz_j2truV~y@M}EG@}|+P6kW(ZBD*6xV8+KTqe@~?q4CrZ zn59azUZE9~HX2O_IP(BWG(#9gg)}y$!V%;hA$}v&ZpJN{#M~!_kr`V00 z24A~t?Q2H&TIb&i_UL7g?9orqQZ$S%4;R|QL;+j0i2Mh?N6TynS;lGhS;iRy*cZ+F zXIQVd&{ERs^xwtmE&9KNy;yW%1|7#^`_(~}->)jx9*Ns6$SOU7qU@nREScJ+-b~dQ&W#f^%{+xfJhc_#b2R Bt?>W= delta 1112 zcmZWoTSydP6y8yH(=2lp%*stz7hTuZM9WKVnM6unDhe;_uDa{Y?9Tj}maC9Ord$wk0 zFNM!!nDWPvqfIm{bVLI=q(TsNkxHOMhJxj>Mb7C3GgT*aV&^LhiWwK{;;+d-bXJ`GYJGODaSZy$~M6b^9&r!i3v8Qo(n-iAN-m&7NJw7 zlAtgv9wztBLWkJ|gV|GHPmKwl$a%wUVW*ddC^wgC@tA#ihoYEPONj$_xl!uROHOD8JJHnYh-C9Dqze^gFz<1kTGh4{Uy2GL$! zi8xhVjTm8P++}wl&L}*#hAE_`0`YMT>)GaD*y>;j^9~U)!^tC3=SjpBr)|f$R--X1 z8_6!D!?j572U{;FPn{o{2x$A;w=9J zP*p(W=?*LY`^s-l$tZM_-5H&13j?XRhmw9)`F~Yx&-ya-Mp-oq%cO#vfb7QOKLLOg Ba^(O3 diff --git a/docs/build/doctrees/loading_sdk.doctree b/docs/build/doctrees/loading_sdk.doctree index 0ad7cd6ea23d0ae29faeabeaef49b0806ff1b00e..a4bf1278ff817b7a69f02c88f023ee19e1c69738 100644 GIT binary patch delta 12104 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 C{*2fF delta 10633 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 G>i+=7ZmgF8 diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html index f581b8c..f952ab5 100644 --- a/docs/build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -207,15 +207,19 @@

    G

  • (loading_sdk.sync_api.client.LoadingApiClient method)
  • -
  • get_total_category_pages() (loading_sdk.LoadingApiClient method) +
  • get_total_category_pages() (loading_sdk.async_api.client.AsyncLoadingApiClient method)
  • -
  • get_total_thread_pages() (loading_sdk.LoadingApiClient method) +
  • get_total_thread_pages() (loading_sdk.async_api.client.AsyncLoadingApiClient method)
  • diff --git a/docs/build/html/loading_sdk.html b/docs/build/html/loading_sdk.html index 3b09429..2c7874d 100644 --- a/docs/build/html/loading_sdk.html +++ b/docs/build/html/loading_sdk.html @@ -512,6 +512,34 @@

    Submodules +
    +async get_total_category_pages(category)
    +

    Returns total pages of a forum category.

    +
    +
    Parameters
    +

    category (str) – Category name. Can be games, other, or texts

    +
    +
    Return type
    +

    dict

    +
    +
    +

    + +
    +
    +async get_total_thread_pages(thread_id)
    +

    Returns total pages of a thread.

    +
    +
    Parameters
    +

    thread_id (str) – Unique thread id

    +
    +
    Return type
    +

    dict

    +
    +
    +
    +
    async search(query)
    diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv index b762ca5096fa4e4964c5386facc942488aa10291..3f0d26ddfc0e53cd584509c55996bfeb5b0ab241 100644 GIT binary patch delta 481 zcmV<70UrMD1o#AygnxrD6h(Kw!d1HxHEXu0Q>9jl)S)ACYzM3w8(|}rt-sOV>zCAE z(h!m=_QOnxp6zoV@VFPDFy%7OH2pwTyD1fI1VfKVoa(E>l;Ym4qz@=f#%o*MO7h|g z+loI4&ZOx`hei^^l|<`H))aE>JP}xH$l(>K88$4dlQ~pnorV-M7q_{2FWOc zMMmuFlB>GSDx61ogbwSvlT-mBe;FlD1)z6^&=>3;=(7QIsQU&;06aN>4shxK`eKs< zcJ%;0$m;|63lIMMTnH9}r-i3fj0_nH$1QdtBcN~R7}+%KZB{DXg2D61mkb%{n`~eP z`EeKN7??X=TxjBW!2wz0#Ra5{7k7cF04IwV8I&nrra;4>}O^*xi=&MU7*SrfPJ=PjZ7dpv^bVFj-U+cNj XaO2Mox|%!l=GJ%JmHYzw17Q1M{gCY+ delta 456 zcmV;(0XP2m1nvZognz>z5QcX@1y#E`YSwH~r%J69sY6GL0I^XqSO!b=*4OCk^+}42 z(>PA5z!^`84(|I8IR79Nrd;NkrXQ$kH>IMDVCWHvQ+!pJQrx?d^Z}*Gcxx~f#ovCt7_zO0E46hvm z$0>FoBcL~C3=f~yHp{(l!Qj5_ONJc%O*YW0{kV%%4D@F&F4UR5-~dnd;sV^*i@QKq zfF0P24Dwzt@?woV{~aD61Amv_6!E<~awfT?>=S82Hv;dOK diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index 922d151..057ba27 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["index", "loading_sdk", "modules"], "filenames": ["index.rst", "loading_sdk.rst", "modules.rst"], "titles": ["Welcome to python-loading-sdk\u2019s documentation!", "loading_sdk package", "loading_sdk"], "terms": {"simpl": 0, "exampl": 0, "how": 0, "us": [0, 1], "from": [0, 1], "loading_sdk": 0, "import": 0, "loadingapicli": [0, 1], "creat": [0, 1], "client": [0, 1], "i": [0, 1], "authent": [0, 1], "user": [0, 1], "credenti": [0, 1], "email": [0, 1], "com": 0, "password": [0, 1], "example_password": 0, "requir": [0, 1], "auth": 0, "profile_data": 0, "get_profil": [0, 1], "print": 0, "can": [0, 1], "anonym": [0, 1], "post_data": 0, "get_post": [0, 1], "post_id": [0, 1], "5bb7aac18fef22001d90267b": 0, "messag": [0, 1], "ok": 0, "f": 0, "post": [0, 1], "data": [0, 1], "0": 0, "bodi": [0, 1], "packag": [0, 2], "index": 0, "modul": [0, 2], "search": [0, 1], "page": [0, 1], "class": 1, "sync_api": 1, "none": 1, "base": 1, "object": 1, "A": 1, "allow": 1, "python": 1, "app": 1, "easili": 1, "commun": 1, "load": 1, "forum": 1, "web": 1, "some": 1, "method": 1, "while": 1, "other": 1, "paramet": 1, "str": 1, "address": 1, "option": 1, "create_post": 1, "thread_id": 1, "new": 1, "thread": 1, "uniqu": 1, "id": 1, "text": 1, "format": 1, "markdown": 1, "return": 1, "type": 1, "dict": 1, "create_thread": 1, "titl": 1, "category_nam": 1, "post_typ": 1, "one": 1, "categori": 1, "either": 1, "game": 1, "regular": 1, "default": 1, "edit_post": 1, "edit": 1, "exist": 1, "replac": 1, "old": 1, "edit_thread": 1, "get_about": 1, "get": 1, "about": 1, "rtype": 1, "get_editori": 1, "sort": 1, "retrun": 1, "specif": 1, "int": 1, "articl": 1, "review": 1, "opinion": 1, "updat": 1, "podcast": 1, "convers": 1, "date": 1, "": 1, "instead": 1, "get_gam": 1, "get_oth": 1, "profil": 1, "get_soci": 1, "social": 1, "media": 1, "link": 1, "get_thread": 1, "all": 1, "get_total_category_pag": 1, "total": 1, "name": 1, "get_total_thread_pag": 1, "queri": 1, "match": 1, "asyncloadingapicli": 1, "an": 1, "async": 1, "async_loading_api_cli": 1, "submodul": 2, "api": 2, "async_api": 2, "content": 2}, "objects": {"": [[1, 0, 0, "-", "loading_sdk"]], "loading_sdk": [[1, 1, 1, "", "AsyncLoadingApiClient"], [1, 2, 1, "", "LoadingApiClient"]], "loading_sdk.LoadingApiClient": [[1, 3, 1, "", "create_post"], [1, 3, 1, "", "create_thread"], [1, 3, 1, "", "edit_post"], [1, 3, 1, "", "edit_thread"], [1, 3, 1, "", "get_about"], [1, 3, 1, "", "get_editorials"], [1, 3, 1, "", "get_games"], [1, 3, 1, "", "get_other"], [1, 3, 1, "", "get_post"], [1, 3, 1, "", "get_profile"], [1, 3, 1, "", "get_socials"], [1, 3, 1, "", "get_thread"], [1, 3, 1, "", "get_total_category_pages"], [1, 3, 1, "", "get_total_thread_pages"], [1, 3, 1, "", "search"]], "loading_sdk.async_api": [[1, 0, 0, "-", "client"]], "loading_sdk.async_api.client": [[1, 2, 1, "", "AsyncLoadingApiClient"], [1, 1, 1, "", "async_loading_api_client"]], "loading_sdk.async_api.client.AsyncLoadingApiClient": [[1, 3, 1, "", "create_post"], [1, 3, 1, "", "create_thread"], [1, 3, 1, "", "edit_post"], [1, 3, 1, "", "edit_thread"], [1, 3, 1, "", "get_about"], [1, 3, 1, "", "get_editorials"], [1, 3, 1, "", "get_games"], [1, 3, 1, "", "get_other"], [1, 3, 1, "", "get_post"], [1, 3, 1, "", "get_profile"], [1, 3, 1, "", "get_socials"], [1, 3, 1, "", "get_thread"], [1, 3, 1, "", "search"]], "loading_sdk.sync_api": [[1, 0, 0, "-", "client"]], "loading_sdk.sync_api.client": [[1, 2, 1, "", "LoadingApiClient"]], "loading_sdk.sync_api.client.LoadingApiClient": [[1, 3, 1, "", "create_post"], [1, 3, 1, "", "create_thread"], [1, 3, 1, "", "edit_post"], [1, 3, 1, "", "edit_thread"], [1, 3, 1, "", "get_about"], [1, 3, 1, "", "get_editorials"], [1, 3, 1, "", "get_games"], [1, 3, 1, "", "get_other"], [1, 3, 1, "", "get_post"], [1, 3, 1, "", "get_profile"], [1, 3, 1, "", "get_socials"], [1, 3, 1, "", "get_thread"], [1, 3, 1, "", "get_total_category_pages"], [1, 3, 1, "", "get_total_thread_pages"], [1, 3, 1, "", "search"]]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:method"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"]}, "titleterms": {"welcom": 0, "python": 0, "load": 0, "sdk": 0, "": 0, "document": 0, "content": [0, 1], "indic": 0, "tabl": 0, "loading_sdk": [1, 2], "packag": 1, "submodul": 1, "api": 1, "modul": 1, "async_api": 1}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["index", "loading_sdk", "modules"], "filenames": ["index.rst", "loading_sdk.rst", "modules.rst"], "titles": ["Welcome to python-loading-sdk\u2019s documentation!", "loading_sdk package", "loading_sdk"], "terms": {"simpl": 0, "exampl": 0, "how": 0, "us": [0, 1], "from": [0, 1], "loading_sdk": 0, "import": 0, "loadingapicli": [0, 1], "creat": [0, 1], "client": [0, 1], "i": [0, 1], "authent": [0, 1], "user": [0, 1], "credenti": [0, 1], "email": [0, 1], "com": 0, "password": [0, 1], "example_password": 0, "requir": [0, 1], "auth": 0, "profile_data": 0, "get_profil": [0, 1], "print": 0, "can": [0, 1], "anonym": [0, 1], "post_data": 0, "get_post": [0, 1], "post_id": [0, 1], "5bb7aac18fef22001d90267b": 0, "messag": [0, 1], "ok": 0, "f": 0, "post": [0, 1], "data": [0, 1], "0": 0, "bodi": [0, 1], "packag": [0, 2], "index": 0, "modul": [0, 2], "search": [0, 1], "page": [0, 1], "class": 1, "sync_api": 1, "none": 1, "base": 1, "object": 1, "A": 1, "allow": 1, "python": 1, "app": 1, "easili": 1, "commun": 1, "load": 1, "forum": 1, "web": 1, "some": 1, "method": 1, "while": 1, "other": 1, "paramet": 1, "str": 1, "address": 1, "option": 1, "create_post": 1, "thread_id": 1, "new": 1, "thread": 1, "uniqu": 1, "id": 1, "text": 1, "format": 1, "markdown": 1, "return": 1, "type": 1, "dict": 1, "create_thread": 1, "titl": 1, "category_nam": 1, "post_typ": 1, "one": 1, "categori": 1, "either": 1, "game": 1, "regular": 1, "default": 1, "edit_post": 1, "edit": 1, "exist": 1, "replac": 1, "old": 1, "edit_thread": 1, "get_about": 1, "get": 1, "about": 1, "rtype": 1, "get_editori": 1, "sort": 1, "retrun": 1, "specif": 1, "int": 1, "articl": 1, "review": 1, "opinion": 1, "updat": 1, "podcast": 1, "convers": 1, "date": 1, "": 1, "instead": 1, "get_gam": 1, "get_oth": 1, "profil": 1, "get_soci": 1, "social": 1, "media": 1, "link": 1, "get_thread": 1, "all": 1, "get_total_category_pag": 1, "total": 1, "name": 1, "get_total_thread_pag": 1, "queri": 1, "match": 1, "asyncloadingapicli": 1, "an": 1, "async": 1, "async_loading_api_cli": 1, "submodul": 2, "api": 2, "async_api": 2, "content": 2}, "objects": {"": [[1, 0, 0, "-", "loading_sdk"]], "loading_sdk": [[1, 1, 1, "", "AsyncLoadingApiClient"], [1, 2, 1, "", "LoadingApiClient"]], "loading_sdk.LoadingApiClient": [[1, 3, 1, "", "create_post"], [1, 3, 1, "", "create_thread"], [1, 3, 1, "", "edit_post"], [1, 3, 1, "", "edit_thread"], [1, 3, 1, "", "get_about"], [1, 3, 1, "", "get_editorials"], [1, 3, 1, "", "get_games"], [1, 3, 1, "", "get_other"], [1, 3, 1, "", "get_post"], [1, 3, 1, "", "get_profile"], [1, 3, 1, "", "get_socials"], [1, 3, 1, "", "get_thread"], [1, 3, 1, "", "get_total_category_pages"], [1, 3, 1, "", "get_total_thread_pages"], [1, 3, 1, "", "search"]], "loading_sdk.async_api": [[1, 0, 0, "-", "client"]], "loading_sdk.async_api.client": [[1, 2, 1, "", "AsyncLoadingApiClient"], [1, 1, 1, "", "async_loading_api_client"]], "loading_sdk.async_api.client.AsyncLoadingApiClient": [[1, 3, 1, "", "create_post"], [1, 3, 1, "", "create_thread"], [1, 3, 1, "", "edit_post"], [1, 3, 1, "", "edit_thread"], [1, 3, 1, "", "get_about"], [1, 3, 1, "", "get_editorials"], [1, 3, 1, "", "get_games"], [1, 3, 1, "", "get_other"], [1, 3, 1, "", "get_post"], [1, 3, 1, "", "get_profile"], [1, 3, 1, "", "get_socials"], [1, 3, 1, "", "get_thread"], [1, 3, 1, "", "get_total_category_pages"], [1, 3, 1, "", "get_total_thread_pages"], [1, 3, 1, "", "search"]], "loading_sdk.sync_api": [[1, 0, 0, "-", "client"]], "loading_sdk.sync_api.client": [[1, 2, 1, "", "LoadingApiClient"]], "loading_sdk.sync_api.client.LoadingApiClient": [[1, 3, 1, "", "create_post"], [1, 3, 1, "", "create_thread"], [1, 3, 1, "", "edit_post"], [1, 3, 1, "", "edit_thread"], [1, 3, 1, "", "get_about"], [1, 3, 1, "", "get_editorials"], [1, 3, 1, "", "get_games"], [1, 3, 1, "", "get_other"], [1, 3, 1, "", "get_post"], [1, 3, 1, "", "get_profile"], [1, 3, 1, "", "get_socials"], [1, 3, 1, "", "get_thread"], [1, 3, 1, "", "get_total_category_pages"], [1, 3, 1, "", "get_total_thread_pages"], [1, 3, 1, "", "search"]]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:method"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"]}, "titleterms": {"welcom": 0, "python": 0, "load": 0, "sdk": 0, "": 0, "document": 0, "content": [0, 1], "indic": 0, "tabl": 0, "loading_sdk": [1, 2], "packag": 1, "submodul": 1, "api": 1, "modul": 1, "async_api": 1}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 56}}) \ No newline at end of file From 9c9c6ca19c33ae2ae1d2507b1c2a07f055499f8c Mon Sep 17 00:00:00 2001 From: Henrik Petersson <44243358+hnrkcode@users.noreply.github.com> Date: Tue, 6 Sep 2022 21:48:28 +0200 Subject: [PATCH 09/10] Update readme --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0cbc5a3..cd49caa 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ response = client.get_profile() ``` It can also be used asyncrounously: + ```python from loading_sdk import AsyncLoadingApiClient @@ -94,4 +95,12 @@ response = client.get_about() ```python response = client.get_socials() -``` \ No newline at end of file +``` + +```python +response = client.get_total_thread_pages(thread_id="5bbb986af1deda001d33bc4b") +``` + +```python +response = client.get_total_category_pages(category="games") +``` From 50378ea14cf8ddab7074e0ad59d2780109f2f72b Mon Sep 17 00:00:00 2001 From: Henrik Petersson <44243358+hnrkcode@users.noreply.github.com> Date: Tue, 6 Sep 2022 21:50:26 +0200 Subject: [PATCH 10/10] Bump to version 0.4.0 --- docs/build/doctrees/environment.pickle | Bin 27526 -> 27526 bytes docs/build/html/.buildinfo | 2 +- .../html/_static/documentation_options.js | 2 +- docs/build/html/genindex.html | 2 +- docs/build/html/index.html | 2 +- docs/build/html/loading_sdk.html | 2 +- docs/build/html/modules.html | 2 +- docs/build/html/py-modindex.html | 2 +- docs/build/html/search.html | 2 +- docs/source/conf.py | 2 +- pyproject.toml | 2 +- 11 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 575e4f8e5caabb0865c32df690d0d28ea3139208..c1acbdb807154b67d3ce5f0e661eb278c1a91760 100644 GIT binary patch delta 812 zcmZXST}V@57{~X{Z5l&mkg0_(xA{?S6t4EB*4zwT zW@{-;{;#*n?Uu^~*d{Z4Y`jQvz%|Y4X$whRg2>5L&9Ag@V|NN|6O7yXA?dKltF~r> zg+Vs&NGnBQ=L4mfXv-)?y?uY0F#bqBqzJ~tdTO>zfUXWpu>3_kG$%1 zqBHL-QIovt`hKZSYr;-rhOnf7( z#T!wq=DkRk??uk?9^@L|gX|D!Jtg!ZUkV;&<0NzocHp>j6q%ue$lF6S{JqFs3EFBR zL1*|jL8sIx?ne%buFm4ze`-`J(JOk>vgvcjlZt^NxY-} E1E(b$uK)l5 delta 830 zcmaKqUr1AN6vy|Q+jI<-K_*Lb=BBfp6>7`5)TG)<`^O~r=WgD+?OwNCZ(F57BvL*k zNkZh=!{%EL6-YsFD|*NvLZP645GdIHAS59e6!cc-w@XPcy?lP>_dVZp&hH-X#3Gqk zB)9Jn(jwm_3wqK5bB0O)!)6rb3{e#1nu_9UUs?Ws-z4V#-hSA&0$1zO)BNR3!;}@eELFOgloV1U z@US)jrz|zlX|d~R$$t!ua+~!60k+-(AL`DL9B}os2HI3q7a?+Th3&Z(uIxx-x)w&7 z`ap76<<%w|!N4e6woNL*-1b{aFxot=1l6s>1U}o-(+&wrTa7U0cuaC~_s%>iq5XTc zVh-A!M{(pOrxP>t<C*%1>NxHlTLB-&;&=lj!=@&yp;#zJth{J|9x!4^qY7kG$vi zBg+Fc9t<$L!sE-JI=C0!9nh7CH?%5MgO~+VkUCBTk0BR=w8qR(o?&RmmyCdPgks2< zP#^MJXcw|Ed>DB)97ZmMIizzSq|9i87n~d3^V;b^nWDI$bHEL|StHuKY(x>e7168t z_c=x`gsv3FAfIvriuVw^WBP^{!VNS5zG&hl<#p5Kpb7ic^#^dg@LZl!Pxx`bBXxKb3E!F|Z9 zgVg-Bz?L{|H5#Wod=;l#s!QxaCKIlX!rp&sRH}q0;h7xCjAz7ET)jA|E9{^CQg*zr PWt%baCo6wUTvPuB)XpO| diff --git a/docs/build/html/.buildinfo b/docs/build/html/.buildinfo index fa8dc66..c89c533 100644 --- a/docs/build/html/.buildinfo +++ b/docs/build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 7ab8668ea613b274fc02285e87c81f72 +config: 730689ce3338e0cc7457f096d6c27a8b tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/_static/documentation_options.js b/docs/build/html/_static/documentation_options.js index 44e1488..c00afe7 100644 --- a/docs/build/html/_static/documentation_options.js +++ b/docs/build/html/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.3.0', + VERSION: '0.4.0', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html index f952ab5..ee6ba44 100644 --- a/docs/build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -3,7 +3,7 @@ - Index — python-loading-sdk 0.3.0 documentation + Index — python-loading-sdk 0.4.0 documentation