{"id":13668937,"url":"https://github.com/bjzhou/Coolapk-kotlin","last_synced_at":"2025-04-27T01:32:04.075Z","repository":{"id":19801812,"uuid":"23061722","full_name":"bjzhou/Coolapk-kotlin","owner":"bjzhou","description":"酷安开源版.....","archived":false,"fork":false,"pushed_at":"2018-11-14T02:10:45.000Z","size":5546,"stargazers_count":176,"open_issues_count":3,"forks_count":34,"subscribers_count":9,"default_branch":"develop","last_synced_at":"2024-12-13T18:01:47.151Z","etag":null,"topics":["android","api","apk","coolapk","coolmarket","kotlin","market"],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bjzhou.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-08-18T06:57:54.000Z","updated_at":"2024-11-22T06:28:35.000Z","dependencies_parsed_at":"2022-07-25T07:16:56.276Z","dependency_job_id":null,"html_url":"https://github.com/bjzhou/Coolapk-kotlin","commit_stats":null,"previous_names":["bjzhou/coolapk"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjzhou%2FCoolapk-kotlin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjzhou%2FCoolapk-kotlin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjzhou%2FCoolapk-kotlin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjzhou%2FCoolapk-kotlin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bjzhou","download_url":"https://codeload.github.com/bjzhou/Coolapk-kotlin/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251077102,"owners_count":21532607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","api","apk","coolapk","coolmarket","kotlin","market"],"created_at":"2024-08-02T08:00:54.798Z","updated_at":"2025-04-27T01:31:59.066Z","avatar_url":"https://github.com/bjzhou.png","language":"Kotlin","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"Coolapk\n=======\n\n酷安开源版\n\n### 酷市场开源版 Demo\n\n[点此下载 Demo apk](https://github.com/bjzhou/Coolapk/raw/master/release/app-release.apk)\n\n![screenshot](https://github.com/bjzhou/Coolapk/raw/master/screenshot/device-2017-02-13-114402.png)\n\n### 酷市场 V7 版 API 相关\n\n所有接口使用统一的前缀： https://api.coolapk.com/v6/\n\n所有接口使用统一的 HTTP 头：\n\n```\nUser-Agent: Dalvik/2.1.0 (Linux; U; Android 5.1.1; Nexus 4 Build/LMY48T) (#Build; google; Nexus 4; LMY48T; 5.1.1) +CoolMarket/7.3\nX-Requested-With: XMLHttpRequest\nX-Sdk-Int: 22\nX-Sdk-Locale: zh-CN\nX-App-Id: coolmarket\nX-App-Token: 2a6e2adc2897c8d8133db17c2cd3b1045834ce58-d7d5-38eb-95d5-563167a1983d0x588f16cd\nX-App-Version: 7.3\nX-App-Code: 1701135\nX-Api-Version: 7\n```\n具体参数获取方式可参考ApiManager.java，其中X-App-Token的生成是c++写的，直接引用了酷市场的 so 文件，不清楚具体算法，组合方式应该是`校验和+uuid+时间戳`\n\n本项目介绍了 `main/init` 和 `picture/list` 两个接口的具体使用方法，分别是获取启动图和所有酷图的，其他接口可参考下面的 retrofit 接口文件：\n\n```java\npublic interface CoolMarketService {\n        @POST(\"feed/favorite\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3639A(@Query(\"id\") String str);\n\n        @POST(\"user/follow\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3640B(@Query(\"uid\") String str);\n\n        @POST(\"user/unfollow\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3641C(@Query(\"uid\") String str);\n\n        @POST(\"feed/cancelRecommend\")\n        Observable\u003cResult\u003cString\u003e\u003e m3642D(@Query(\"id\") String str);\n\n        @POST(\"feed/Recommend\")\n        Observable\u003cResult\u003cString\u003e\u003e m3643E(@Query(\"id\") String str);\n\n        @POST(\"discovery/loadDiscoveryInfo\")\n        Observable\u003cResult\u003cDiscoveryQuery\u003e\u003e m3644F(@Query(\"query\") String str);\n\n        @GET(\"topic/tagDetail\")\n        Observable\u003cResult\u003cTopic\u003e\u003e m3645G(@Query(\"tag\") String str);\n\n        @GET(\"feed/followTag\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3646H(@Query(\"tag\") String str);\n\n        @GET(\"feed/unFollowTag\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3647I(@Query(\"tag\") String str);\n\n        @GET(\"message/receive\")\n        Observable\u003cResult\u003cMessage\u003e\u003e m3648J(@Query(\"id\") String str);\n\n        @GET(\"message/read\")\n        Observable\u003cResult\u003cNotifyCount\u003e\u003e m3649K(@Query(\"ukey\") String str);\n\n        @GET(\"cloudInstall/task\")\n        Observable\u003cResult\u003cServiceApp\u003e\u003e m3650L(@Query(\"id\") String str);\n\n        @GET(\"apk/qr\")\n        Observable\u003cResult\u003cServiceApp\u003e\u003e m3651M(@Query(\"id\") String str);\n\n        @GET(\"main/index\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3652a();\n\n        @GET(\"main/headline\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3653a(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @GET(\"album/list\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3654a(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2, @Query(\"listType\") String str3);\n\n        @POST(\"account/changeAvatar\")\n        Observable\u003cResult\u003cString\u003e\u003e m3655a(@Body RequestBody requestBody);\n\n        @GET(\"main/checkHeadlineCount\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3656a(@Query(\"firstItem\") String str);\n\n        @GET(\"apk/detail\")\n        Observable\u003cResult\u003cServiceApp\u003e\u003e m3657a(@Query(\"id\") String str, @Query(\"installed\") int i);\n\n        @POST(\"message/send\")\n        @Multipart\n        Observable\u003cResult\u003cMessage\u003e\u003e m3658a(@Query(\"uid\") String str, @Query(\"quick_reply\") int i, @Part(\"message\") String str2);\n\n        @GET(\"apk/index\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3659a(@Query(\"apkType\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"feed/replyList\")\n        Observable\u003cResult\u003cList\u003cFeedReply\u003e\u003e\u003e m3660a(@Query(\"id\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3, @Query(\"discussMode\") int i2, @Query(\"feedType\") String str4);\n\n        @GET(\"topic/tagFeedList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3661a(@Query(\"tag\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3, @Query(\"listType\") String str4);\n\n        @POST(\"album/addApk\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3662a(@Query(\"id\") String str, @Body RequestBody requestBody);\n\n        @POST(\"apk/checkUpdate\")\n        @Multipart\n        Observable\u003cResult\u003cList\u003cPatchInfo\u003e\u003e\u003e m3663a(@Part(\"pkgs\") String str, @Query(\"coolmarket_beta\") String str2);\n\n        @GET(\"apk/search\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3664a(@Query(\"q\") String str, @Query(\"apkType\") String str2, @Query(\"page\") int i, @Query(\"firstItem\") String str3, @Query(\"lastItem\") String str4);\n\n        @POST(\"feed/uploadImage\")\n        Observable\u003cResult\u003cString\u003e\u003e m3665a(@Query(\"fieldName\") String str, @Query(\"uploadDir\") String str2, @Body RequestBody requestBody);\n\n        @GET(\"album/index\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3666a(@Query(\"page\") String str, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"apk/index?listType=cat\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3667a(@Query(\"catId\") String str, @Query(\"apkType\") String str2, @Query(\"rankType\") String str3, @Query(\"page\") int i, @Query(\"firstItem\") String str4, @Query(\"lastItem\") String str5);\n\n        @GET(\"apk/recommendList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3668a(@Query(\"apkType\") String str, @Query(\"title\") String str2, @Query(\"subTitle\") String str3, @Query(\"action\") String str4, @Query(\"page\") int i, @Query(\"firstItem\") String str5, @Query(\"lastItem\") String str6);\n\n        @GET(\"apk/downloadStat\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3669a(@Query(\"pn\") String str, @Query(\"aid\") String str2, @Query(\"extra\") String str3, @Query(\"ni\") String str4, @Query(\"uninstall\") String str5);\n\n        @FormUrlEncoded\n        @POST(\"album/addApk\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3670a(@Query(\"id\") String str, @Field(\"packageName\") String str2, @Field(\"title\") String str3, @Field(\"url\") String str4, @Field(\"note\") String str5, @Field(\"displayOrder\") int i, @Field(\"logo\") String str6);\n\n        @GET(\"main/init\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e init();\n\n        @GET(\"main/updateList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3672b(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @POST(\"feed/newFeed\")\n        Observable\u003cResult\u003cFeed\u003e\u003e m3673b(@Body RequestBody requestBody);\n\n        @GET(\"apk/realRankList\")\n        Observable\u003cResult\u003cList\u003cServiceApp\u003e\u003e\u003e m3674b(@Query(\"apkType\") String str);\n\n        @GET(\"apk/rating\")\n        Observable\u003cResult\u003cMap\u003cString, String\u003e\u003e\u003e m3675b(@Query(\"id\") String str, @Query(\"value\") int i);\n\n        @GET(\"apk/search?searchType=developer\")\n        Observable\u003cResult\u003cList\u003cServiceApp\u003e\u003e\u003e m3676b(@Query(\"developer\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @POST(\"apk/comment\")\n        Observable\u003cResult\u003cFeed\u003e\u003e m3677b(@Query(\"id\") String str, @Body RequestBody requestBody);\n\n        @FormUrlEncoded\n        @POST(\"apk/unFavorite\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3678b(@Field(\"id\") String str, @Field(\"targetType\") String str2);\n\n        @GET(\"picture/list\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3679b(@Query(\"tag\") @NonNull String str, @Query(\"type\") @NonNull String str2, @Query(\"page\") int i, @Query(\"firstItem\") String str3, @Query(\"lastItem\") String str4);\n\n        @POST(\"feed/reply\")\n        Observable\u003cResult\u003cFeedReply\u003e\u003e m3680b(@Query(\"id\") String str, @Query(\"type\") String str2, @Body RequestBody requestBody);\n\n        @FormUrlEncoded\n        @POST(\"album/edit\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3681b(@Query(\"id\") String str, @Field(\"title\") String str2, @Field(\"intro\") String str3);\n\n        @GET(\"apk/search\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3682b(@Query(\"q\") String str, @Query(\"apkType\") String str2, @Query(\"rankType\") String str3, @Query(\"page\") int i, @Query(\"firstItem\") String str4, @Query(\"lastItem\") String str5);\n\n        @GET(\"device/ip\")\n        Observable\u003cResult\u003cString\u003e\u003e m3683c();\n\n        @GET(\"apk/newestList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3684c(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @POST(\"picture/newPicture\")\n        Observable\u003cResult\u003cFeed\u003e\u003e m3685c(@Body RequestBody requestBody);\n\n        @GET(\"apk/categoryList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3686c(@Query(\"apkType\") String str);\n\n        @GET(\"user/albumlist\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3687c(@Query(\"uid\") String str, @Query(\"pageSize\") int i);\n\n        @GET(\"apk/discovererList\")\n        Observable\u003cResult\u003cList\u003cRelatedData\u003e\u003e\u003e m3688c(@Query(\"id\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"user/delGift\")\n        Observable\u003cResult\u003cString\u003e\u003e m3689c(@Query(\"docId\") String str, @Query(\"gift\") String str2);\n\n        @GET(\"apk/commentList\")\n        Observable\u003cResult\u003cList\u003cFeed\u003e\u003e\u003e m3690c(@Query(\"id\") String str, @Query(\"listType\") String str2, @Query(\"page\") int i, @Query(\"firstItem\") String str3, @Query(\"lastItem\") String str4);\n\n        @POST(\"user/block\")\n        Observable\u003cResult\u003cString\u003e\u003e m3691c(@Query(\"uid\") String str, @Query(\"action\") String str2, @Query(\"clearTypes\") String str3);\n\n        @GET(\"apk/search?searchType=tag\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3692c(@Query(\"tag\") String str, @Query(\"apkType\") String str2, @Query(\"rankType\") String str3, @Query(\"page\") int i, @Query(\"firstItem\") String str4, @Query(\"lastItem\") String str5);\n\n        @GET(\"notification/checkCount\")\n        Observable\u003cResult\u003cNotifyCount\u003e\u003e m3693d();\n\n        @GET(\"discovery/index\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3694d(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @POST(\"discovery/newDiscovery\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3695d(@Body RequestBody requestBody);\n\n        @GET(\"apk/offline\")\n        Observable\u003cResult\u003cString\u003e\u003e m3696d(@Query(\"id\") String str);\n\n        @FormUrlEncoded\n        @POST(\"user/deleteAvatar\")\n        Observable\u003cResult\u003cString\u003e\u003e m3697d(@Query(\"uid\") String str, @Field(\"lock\") int i);\n\n        @GET(\"apk/ratingUserList\")\n        Observable\u003cResult\u003cList\u003cRelatedData\u003e\u003e\u003e m3698d(@Query(\"id\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @POST(\"album/create\")\n        @Multipart\n        Observable\u003cResult\u003cInteger\u003e\u003e m3699d(@Part(\"title\") String str, @Part(\"intro\") String str2);\n\n        @GET(\"{feedType}/search\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3700d(@Path(\"feedType\") String str, @Query(\"q\") String str2, @Query(\"page\") int i, @Query(\"firstItem\") String str3, @Query(\"lastItem\") String str4);\n\n        @GET(\"apk/giftList\")\n        Observable\u003cResult\u003cList\u003cGift\u003e\u003e\u003e m3701e(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @GET(\"picture/addToSplash\")\n        Observable\u003cResult\u003cString\u003e\u003e m3702e(@Query(\"id\") String str);\n\n        @POST(\"feed/like\")\n        Observable\u003cResult\u003cLikeResult\u003e\u003e m3703e(@Query(\"id\") String str, @Query(\"detail\") int i);\n\n        @GET(\"picture/userPictures\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3704e(@Query(\"uid\") @NonNull String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @POST(\"album/delApk\")\n        @Multipart\n        Observable\u003cResult\u003cString\u003e\u003e m3705e(@Query(\"id\") String str, @Part(\"packageName\") String str2);\n\n        @GET(\"user/blackList\")\n        Observable\u003cResult\u003cList\u003cUser\u003e\u003e\u003e m3706f(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @GET(\"apk/downloadVersionList\")\n        Observable\u003cResult\u003cList\u003cVersionApp\u003e\u003e\u003e m3707f(@Query(\"id\") String str);\n\n        @POST(\"feed/unlike\")\n        Observable\u003cResult\u003cLikeResult\u003e\u003e m3708f(@Query(\"id\") String str, @Query(\"detail\") int i);\n\n        @GET(\"apk/developerAppList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3709f(@Query(\"uid\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @FormUrlEncoded\n        @POST(\"album/editApkDisplayOrder\")\n        Observable\u003cResult\u003cString\u003e\u003e m3710f(@Query(\"id\") String str, @Field(\"displayOrder\") String str2);\n\n        @GET(\"user/ignoreList\")\n        Observable\u003cResult\u003cList\u003cUser\u003e\u003e\u003e m3711g(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @GET(\"apk/follow\")\n        Observable\u003cResult\u003cMap\u003cString, String\u003e\u003e\u003e m3712g(@Query(\"id\") String str);\n\n        @POST(\"feed/deleteFeed\")\n        Observable\u003cResult\u003cString\u003e\u003e m3713g(@Query(\"id\") String str, @Query(\"notNotify\") int i);\n\n        @GET(\"apk/giftList\")\n        Observable\u003cResult\u003cList\u003cGift\u003e\u003e\u003e m3714g(@Query(\"apkId\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @POST(\"album/unFavorite\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3715g(@Query(\"id\") String str, @Query(\"targetType\") String str2);\n\n        @GET(\"user/limitList\")\n        Observable\u003cResult\u003cList\u003cUser\u003e\u003e\u003e m3716h(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @GET(\"apk/url\")\n        Observable\u003cResult\u003cString\u003e\u003e m3717h(@Query(\"id\") String str);\n\n        @POST(\"feed/deleteReply\")\n        Observable\u003cResult\u003cString\u003e\u003e m3718h(@Query(\"id\") String str, @Query(\"notNotify\") int i);\n\n        @GET(\"user/giftList\")\n        Observable\u003cResult\u003cList\u003cGift\u003e\u003e\u003e m3719h(@Query(\"uid\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"feed/detail\")\n        Observable\u003cResult\u003cFeed\u003e\u003e m3720h(@Query(\"id\") String str, @Query(\"rid\") String str2);\n\n        @GET(\"topic/recentFeedList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3721i(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @GET(\"apk/unfollow\")\n        Observable\u003cResult\u003cMap\u003cString, String\u003e\u003e\u003e m3722i(@Query(\"id\") String str);\n\n        @GET(\"album/search\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3723i(@Query(\"q\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @POST(\"feed/unFavorite\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3724i(@Query(\"id\") String str, @Query(\"targetType\") String str2);\n\n        @GET(\"topic/hotFeedList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3725j(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @FormUrlEncoded\n        @POST(\"apk/favorite\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3726j(@Field(\"id\") String str);\n\n        @GET(\"user/albumlist\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3727j(@Query(\"uid\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @POST(\"message/send\")\n        @Multipart\n        Observable\u003cResult\u003cMessage\u003e\u003e m3728j(@Query(\"uid\") String str, @Part(\"message\") String str2);\n\n        @GET(\"topic/tagList\")\n        Observable\u003cResult\u003cList\u003cTopic\u003e\u003e\u003e m3729k(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @GET(\"apk/unrating\")\n        Observable\u003cResult\u003cMap\u003cString, String\u003e\u003e\u003e m3730k(@Query(\"id\") String str);\n\n        @GET(\"album/replyList\")\n        Observable\u003cResult\u003cList\u003cFeedReply\u003e\u003e\u003e m3731k(@Query(\"id\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @POST(\"account/changeProfile\")\n        @Multipart\n        Observable\u003cResult\u003cUserProfile\u003e\u003e m3732k(@Part(\"key\") String str, @Part(\"value\") String str2);\n\n        @GET(\"user/replyToMeList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3733l(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @GET(\"apk/getGift\")\n        Observable\u003cResult\u003cString\u003e\u003e m3734l(@Query(\"docId\") String str);\n\n        @GET(\"user/apkRatingList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3735l(@Query(\"uid\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"feed/editorChoiceList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3736m(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @GET(\"album/detail\")\n        Observable\u003cResult\u003cAlbum\u003e\u003e m3737m(@Query(\"id\") String str);\n\n        @GET(\"topic/tagFeedList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3738m(@Query(\"tag\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"user/followTagList\")\n        Observable\u003cResult\u003cList\u003cTopic\u003e\u003e\u003e m3739n(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @POST(\"album/recommend\")\n        Observable\u003cResult\u003cString\u003e\u003e m3740n(@Query(\"id\") String str);\n\n        @GET(\"user/feedList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3741n(@Query(\"uid\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"notification/list\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3742o(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @FormUrlEncoded\n        @POST(\"album/favorite\")\n        Observable\u003cResult\u003cInteger\u003e\u003e m3743o(@Field(\"id\") String str);\n\n        @GET(\"topic/feedList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3744o(@Query(\"type\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"notification/atCommentMeList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3745p(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @GET(\"account/accessToken\")\n        Observable\u003cResult\u003cLoginInfo\u003e\u003e m3746p(@Query(\"code\") String str);\n\n        @GET(\"user/likeList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3747p(@Query(\"uid\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"notification/atMeList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3748q(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @GET(\"user/profile\")\n        Observable\u003cResult\u003cUserProfile\u003e\u003e m3749q(@Query(\"uid\") String str);\n\n        @GET(\"user/apkCommentList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3750q(@Query(\"uid\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"notification/commentMeList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3751r(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @POST(\"user/addToBlackList\")\n        Observable\u003cResult\u003cString\u003e\u003e m3752r(@Query(\"uid\") String str);\n\n        @GET(\"user/discoveryList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3753r(@Query(\"uid\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"notification/feedLikeList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3754s(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @POST(\"user/removeFromBlackList\")\n        Observable\u003cResult\u003cString\u003e\u003e m3755s(@Query(\"uid\") String str);\n\n        @GET(\"user/apkFollowList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3756s(@Query(\"uid\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"message/list\")\n        Observable\u003cResult\u003cList\u003cMessage\u003e\u003e\u003e m3757t(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @POST(\"user/addToIgnoreList\")\n        Observable\u003cResult\u003cString\u003e\u003e m3758t(@Query(\"uid\") String str);\n\n        @GET(\"user/replyList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3759t(@Query(\"uid\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"feed/newestList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3760u(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @POST(\"user/removeFromIgnoreList\")\n        Observable\u003cResult\u003cString\u003e\u003e m3761u(@Query(\"uid\") String str);\n\n        @GET(\"user/followList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3762u(@Query(\"uid\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"feed/newestReplyList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3763v(@Query(\"page\") int i, @Query(\"firstItem\") String str, @Query(\"lastItem\") String str2);\n\n        @POST(\"user/addToLimitList\")\n        Observable\u003cResult\u003cString\u003e\u003e m3764v(@Query(\"uid\") String str);\n\n        @GET(\"user/fansList\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3765v(@Query(\"uid\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @POST(\"user/removeFromLimitList\")\n        Observable\u003cResult\u003cString\u003e\u003e m3766w(@Query(\"uid\") String str);\n\n        @GET(\"user/search\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3767w(@Query(\"q\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"feed/replyDetail\")\n        Observable\u003cResult\u003cFeedReply\u003e\u003e m3768x(@Query(\"id\") String str);\n\n        @GET(\"message/chat\")\n        Observable\u003cResult\u003cList\u003cMessage\u003e\u003e\u003e m3769x(@Query(\"ukey\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"feed/addToHeadline\")\n        Observable\u003cResult\u003cString\u003e\u003e m3770y(@Query(\"feedId\") String str);\n\n        @GET(\"favorite/list\")\n        Observable\u003cResult\u003cList\u003cEntity\u003e\u003e\u003e m3771y(@Query(\"type\") String str, @Query(\"page\") int i, @Query(\"firstItem\") String str2, @Query(\"lastItem\") String str3);\n\n        @GET(\"feed/removeFromHeadline\")\n        Observable\u003cResult\u003cString\u003e\u003e m3772z(@Query(\"feedId\") String str);\n}\n```\n### TODO\n\n* 全部使用新版 API\n* 分类\n* 排行\n* UI\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbjzhou%2FCoolapk-kotlin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbjzhou%2FCoolapk-kotlin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbjzhou%2FCoolapk-kotlin/lists"}