p2play-app-android/app/src/main/java/org/libre/agosto/p2play/ajax/Videos.kt

222 lines
7.2 KiB
Kotlin
Raw Normal View History

2018-08-18 07:04:31 +02:00
package org.libre.agosto.p2play.ajax
import android.util.JsonReader
2019-02-07 15:27:25 +01:00
import org.libre.agosto.p2play.ManagerSingleton
2018-08-18 07:04:31 +02:00
import org.libre.agosto.p2play.models.VideoModel
import java.io.InputStreamReader
2024-04-06 22:38:04 +02:00
class Videos : Client() {
2018-08-18 07:04:31 +02:00
2024-04-06 22:38:04 +02:00
private fun parseVideos(data: JsonReader): ArrayList<VideoModel> {
2019-02-18 00:29:52 +01:00
val videos = arrayListOf<VideoModel>()
2018-08-18 07:04:31 +02:00
data.beginObject()
2024-04-06 22:38:04 +02:00
while (data.hasNext()) {
when (data.nextName()) {
"data" -> {
2018-08-18 07:04:31 +02:00
data.beginArray()
while (data.hasNext()) {
val video = VideoModel()
video.parseVideo(data)
2018-08-18 07:04:31 +02:00
videos.add(video)
}
data.endArray()
}
2024-04-06 22:38:04 +02:00
else -> data.skipValue()
2018-08-18 07:04:31 +02:00
}
}
data.endObject()
return videos
}
2024-04-06 22:38:04 +02:00
private fun getVideos(start: Int, sort: String = "-publishedAt", isLocal: Boolean = false): ArrayList<VideoModel> {
2019-02-09 21:56:56 +01:00
val nsfw = ManagerSingleton.nfsw
2019-02-10 19:10:52 +01:00
val count = ManagerSingleton.videos_count
2024-03-20 04:42:26 +01:00
var params = "start=$start&count=$count&sort=$sort&nsfw=$nsfw&isLocal=$isLocal"
2024-04-06 22:38:04 +02:00
val con = this._newCon("videos?$params", "GET")
2018-08-18 07:04:31 +02:00
var videos = arrayListOf<VideoModel>()
try {
if (con.responseCode == 200) {
2019-02-18 00:29:52 +01:00
val response = InputStreamReader(con.inputStream)
val data = JsonReader(response)
2018-08-18 07:04:31 +02:00
videos = parseVideos(data)
data.close()
2018-08-18 07:04:31 +02:00
}
2024-04-06 22:38:04 +02:00
} catch (err: Exception) {
2019-02-18 00:29:52 +01:00
err.printStackTrace()
2018-08-18 07:04:31 +02:00
}
con.disconnect()
2018-08-18 07:04:31 +02:00
return videos
}
2024-04-06 22:38:04 +02:00
fun getLastVideos(start: Int = 0): ArrayList<VideoModel> {
2019-02-10 19:10:52 +01:00
return this.getVideos(start)
2018-08-18 07:04:31 +02:00
}
2024-04-06 22:38:04 +02:00
fun getPopularVideos(start: Int = 0): ArrayList<VideoModel> {
return this.getVideos(start, "-views")
2018-08-18 07:04:31 +02:00
}
2024-04-06 22:38:04 +02:00
fun getTrendingVideos(start: Int = 0): ArrayList<VideoModel> {
return this.getVideos(start, "-trending")
2019-02-18 01:34:38 +01:00
}
2024-04-06 22:38:04 +02:00
fun getLocalVideos(start: Int = 0): ArrayList<VideoModel> {
return this.getVideos(start, "-publishedAt", true)
2018-08-18 07:04:31 +02:00
}
2024-04-06 22:38:04 +02:00
fun myVideos(token: String, start: Int = 0): ArrayList<VideoModel> {
2019-02-10 19:10:52 +01:00
val count = ManagerSingleton.videos_count
2019-02-09 21:56:56 +01:00
val params = "start=$start&count=$count"
2024-04-06 22:38:04 +02:00
val con = this._newCon("users/me/videos?$params", "GET", token)
2018-08-18 07:04:31 +02:00
var videos = arrayListOf<VideoModel>()
try {
if (con.responseCode == 200) {
2019-02-18 00:29:52 +01:00
val response = InputStreamReader(con.inputStream)
val data = JsonReader(response)
2018-08-18 07:04:31 +02:00
videos = parseVideos(data)
data.close()
2018-08-18 07:04:31 +02:00
}
2024-04-06 22:38:04 +02:00
} catch (err: Exception) {
2019-02-18 00:29:52 +01:00
err.printStackTrace()
2018-08-18 07:04:31 +02:00
}
con.disconnect()
2018-08-18 07:04:31 +02:00
return videos
}
2024-04-06 22:38:04 +02:00
fun videoSubscriptions(token: String, start: Int = 0): ArrayList<VideoModel> {
2019-02-10 19:10:52 +01:00
val count = ManagerSingleton.videos_count
2019-02-09 21:56:56 +01:00
val params = "start=$start&count=$count"
2024-04-06 22:38:04 +02:00
val con = this._newCon("users/me/subscriptions/videos?$params", "GET", token)
2019-02-09 21:56:56 +01:00
var videos = arrayListOf<VideoModel>()
try {
if (con.responseCode == 200) {
2019-02-18 00:29:52 +01:00
val response = InputStreamReader(con.inputStream)
val data = JsonReader(response)
2019-02-09 21:56:56 +01:00
videos = parseVideos(data)
data.close()
2024-03-20 04:42:26 +01:00
} else {
val response = InputStreamReader(con.inputStream)
val data = JsonReader(response)
print(data)
2019-02-09 21:56:56 +01:00
}
2024-04-06 22:38:04 +02:00
} catch (err: Exception) {
2019-02-18 00:29:52 +01:00
err.printStackTrace()
2019-02-09 21:56:56 +01:00
}
con.disconnect()
2019-02-09 21:56:56 +01:00
return videos
}
2024-04-06 22:38:04 +02:00
fun videoHistory(token: String, start: Int = 0): ArrayList<VideoModel> {
2019-10-18 18:14:44 +02:00
val count = ManagerSingleton.videos_count
val params = "start=$start&count=$count"
2024-04-06 22:38:04 +02:00
val con = this._newCon("users/me/history/videos?$params", "GET", token)
2019-10-18 18:14:44 +02:00
var videos = arrayListOf<VideoModel>()
try {
if (con.responseCode == 200) {
val response = InputStreamReader(con.inputStream)
val data = JsonReader(response)
videos = parseVideos(data)
data.close()
}
2024-04-06 22:38:04 +02:00
} catch (err: Exception) {
2019-10-18 18:14:44 +02:00
err.printStackTrace()
}
con.disconnect()
return videos
}
2024-04-06 22:38:04 +02:00
fun search(text: String, start: Int = 0): ArrayList<VideoModel> {
2019-02-10 19:10:52 +01:00
val count = ManagerSingleton.videos_count
2019-02-09 21:56:56 +01:00
val nsfw = ManagerSingleton.nfsw
val params = "search=$text&start=$start&count=$count&nsfw=$nsfw"
2024-04-06 22:38:04 +02:00
val con = this._newCon("search/videos?$params", "GET")
var videos = arrayListOf<VideoModel>()
try {
if (con.responseCode == 200) {
2019-02-18 00:29:52 +01:00
val response = InputStreamReader(con.inputStream)
val data = JsonReader(response)
videos = parseVideos(data)
data.close()
}
2024-04-06 22:38:04 +02:00
} catch (err: Exception) {
2019-02-18 00:29:52 +01:00
err.printStackTrace()
}
con.disconnect()
return videos
}
2019-02-18 00:13:12 +01:00
2024-04-06 22:38:04 +02:00
fun fullDescription(videoId: Int): String {
val con = this._newCon("videos/$videoId/description", "GET")
2019-02-18 00:13:12 +01:00
var description = ""
try {
if (con.responseCode == 200) {
2019-02-18 00:29:52 +01:00
val response = InputStreamReader(con.inputStream)
val data = JsonReader(response)
2019-02-18 00:13:12 +01:00
data.beginObject()
2024-04-06 22:38:04 +02:00
while (data.hasNext()) {
2019-02-18 00:13:12 +01:00
val name = data.nextName()
2024-04-06 22:38:04 +02:00
when (name) {
2019-02-18 00:13:12 +01:00
"description" -> description = data.nextString()
else -> data.skipValue()
}
}
data.endObject()
data.close()
}
2024-04-06 22:38:04 +02:00
} catch (err: Exception) {
2019-02-18 00:13:12 +01:00
err.printStackTrace()
description = "Error!"
}
con.disconnect()
2019-02-18 00:13:12 +01:00
return description
}
2019-02-24 17:34:12 +01:00
fun channelVideos(account: String, start: Int): ArrayList<VideoModel> {
val count = ManagerSingleton.videos_count
val params = "start=$start&count=$count"
2024-04-06 22:38:04 +02:00
val con = this._newCon("video-channels/$account/videos?$params", "GET")
2019-02-24 17:34:12 +01:00
var videos = arrayListOf<VideoModel>()
try {
if (con.responseCode == 200) {
val response = InputStreamReader(con.inputStream)
val data = JsonReader(response)
videos = parseVideos(data)
data.close()
}
2024-04-06 22:38:04 +02:00
} catch (err: Exception) {
2019-02-24 17:34:12 +01:00
err.printStackTrace()
}
con.disconnect()
return videos
}
2019-12-13 16:53:10 +01:00
2024-04-06 22:38:04 +02:00
fun getMostLikedVideos(start: Int = 0): ArrayList<VideoModel> {
return this.getVideos(start, "-likes")
2019-12-13 16:53:10 +01:00
}
2024-03-28 03:44:52 +01:00
fun getVideo(uuid: String): VideoModel {
2024-04-06 22:38:04 +02:00
val con = this._newCon("videos/$uuid", "GET")
2024-03-28 03:44:52 +01:00
val video = VideoModel()
try {
if (con.responseCode == 200) {
val response = InputStreamReader(con.inputStream)
val data = JsonReader(response)
video.parseVideo(data)
data.close()
}
2024-04-06 22:38:04 +02:00
} catch (err: Exception) {
2024-03-28 03:44:52 +01:00
err.printStackTrace()
}
con.disconnect()
return video
}
2024-04-06 22:38:04 +02:00
}