RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-293646

danilshik's questions

Martin Hope
danilshik
Asked: 2020-05-10 03:42:20 +0000 UTC

Python 日期时间

  • 0

日期格式为必填项RFC 3339 (1970-01-01T00: 00: 00Z)

我这样做了

d = datetime.datetime.now().replace(microsecond=0).isoformat() + "Z"

如何让时间减少 6 小时?

python
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-05-08 02:55:40 +0000 UTC

FirebaseCrashlytics SDK Android 安装

  • 0

我正在重写一个应用程序并决定用 FirebaseCrashlytics SDK 替换 Crashlytics

完成所有步骤

https://firebase.google.com/docs/crashlytics/get-started?hl=ru&platform=android

应用程序在启动时崩溃

2020-05-07 21:43:01.288 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .     |  | 
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .     |  |
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .     |  |
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .   \ |  | /
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .    \    /
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .     \  /
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .      \/
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: The Crashlytics build ID is missing. This occurs when Crashlytics tooling is absent from your app's build configuration. Please review Crashlytics onboarding instructions and ensure you have a valid Crashlytics account.
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .      /\
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .     /  \
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .    /    \
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .   / |  | \
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .     |  |
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki I/chatty: uid=10080(com.app.peshkariki) identical 1 line
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .     |  |
2020-05-07 21:43:01.289 6597-6597/com.app.peshkariki E/FirebaseCrashlytics: .
2020-05-07 21:43:01.294 6597-6597/com.app.peshkariki D/AndroidRuntime: Shutting down VM
2020-05-07 21:43:01.305 6597-6597/com.app.peshkariki E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.app.peshkariki, PID: 6597
    java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.IllegalStateException: The Crashlytics build ID is missing. This occurs when Crashlytics tooling is absent from your app's build configuration. Please review Crashlytics onboarding instructions and ensure you have a valid Crashlytics account.
        at android.app.ActivityThread.installProvider(ActivityThread.java:6242)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:5805)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5722)
        at android.app.ActivityThread.-wrap1(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: java.lang.IllegalStateException: The Crashlytics build ID is missing. This occurs when Crashlytics tooling is absent from your app's build configuration. Please review Crashlytics onboarding instructions and ensure you have a valid Crashlytics account.
        at com.google.firebase.crashlytics.c.g.k.n(com.google.firebase:firebase-crashlytics@@17.0.0:136)
        at com.google.firebase.crashlytics.b.b(com.google.firebase:firebase-crashlytics@@17.0.0:78)
        at com.google.firebase.crashlytics.CrashlyticsRegistrar.b(com.google.firebase:firebase-crashlytics@@17.0.0:55)
        at com.google.firebase.crashlytics.CrashlyticsRegistrar.a(Unknown Source:0)
        at com.google.firebase.crashlytics.a.a(Unknown Source:2)
        at com.google.firebase.components.l.f(com.google.firebase:firebase-components@@16.0.0:69)
        at com.google.firebase.components.i.get(Unknown Source:4)
        at com.google.firebase.components.q.get(com.google.firebase:firebase-components@@16.0.0:53)
        at com.google.firebase.components.l.e(com.google.firebase:firebase-components@@16.0.0:158)
        at com.google.firebase.c.l(com.google.firebase:firebase-common@@19.3.0:563)
        at com.google.firebase.c.o(com.google.firebase:firebase-common@@19.3.0:304)
        at com.google.firebase.c.n(com.google.firebase:firebase-common@@19.3.0:268)
        at com.google.firebase.c.m(com.google.firebase:firebase-common@@19.3.0:253)
        at com.google.firebase.provider.FirebaseInitProvider.onCreate(com.google.firebase:firebase-common@@19.3.0:51)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1917)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1892)
        at com.google.firebase.provider.FirebaseInitProvider.attachInfo(com.google.firebase:firebase-common@@19.3.0:45)
        at android.app.ActivityThread.installProvider(ActivityThread.java:6239)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:5805) 
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5722) 
        at android.app.ActivityThread.-wrap1(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6494) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 

以前使用的代码

Crashlytics.setUserIdentifier(user.id)

现在Crashlytics.setUserId(user.id)

这个对象在哪里

object Crashlytics {
    fun log(e: Error){
        FirebaseCrashlytics.getInstance().log(e.printStackTrace().toString())
        Log.d("Error даня", e.printStackTrace().toString())
    }
    fun log(e: Exception){
        FirebaseCrashlytics.getInstance().log(e.printStackTrace().toString())
        Log.d("Exception даня2", e.printStackTrace().toString())
    }

    fun log(message: String){
        FirebaseCrashlytics.getInstance().log(message)
        Log.d("Exception даня3", message)
    }

    fun setUserId(id: String){
        FirebaseCrashlytics.getInstance().setUserId(id)
    }

}

还缺少什么?

毕业项目

uildscript {
    ext.nav_version = '1.0.0'
    repositories {
        google()
        mavenCentral()
        maven { url "https://dl.bintray.com/drummer-aidan/maven/" }
        jcenter()
        maven { url 'https://jitpack.io' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.0-alpha08'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72"
        classpath 'com.google.gms:google-services:4.3.3'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.0.0'
    }

}

allprojects {
    repositories {
        google()
        maven { url 'https://jitpack.io' }
        maven { url "https://dl.bintray.com/drummer-aidan/maven/" }
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

毕业模块

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 29
    defaultConfig {
        applicationId ""
        minSdkVersion 18
        targetSdkVersion 29
        versionCode 346
        versionName "3.2.0"

        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true

        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ["room.incremental":"true"]
            }
        }
    }


    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

    }

    buildTypes.each {
        it.buildConfigField 'String', 'appMetrica', appMetrica
    }

    buildFeatures{
//        viewBinding = false //новая хуйня, лучше чем синтетика (вроде)

        dataBinding = true
    }
    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }


}

dependencies {

    //Firebase
    implementation 'com.google.firebase:firebase-core:17.3.0'
    implementation 'com.google.firebase:firebase-messaging:20.1.4'
    implementation 'com.google.firebase:firebase-dynamic-links:19.1.0'
    implementation 'com.google.firebase:firebase-crashlytics:17.0.0'
    implementation 'com.google.firebase:firebase-analytics:17.4.0'
}

apply plugin: 'com.google.gms.google-services'
android
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-04-02 19:59:38 +0000 UTC

单例 Android Kotlin

  • 1

需要帮助创建单例。

有一个类 - 文件资源管理器。

在片段中,我创建了一个类的实例,如果文件是文件夹,那么在文件资源管理器中,我移动到文件夹级别,片段被简单地重新打开,当前文件夹中的数据应该已经加载

class FileManager(context: Context) {

    private lateinit var currentDirectory: File
    private var rootDirecory: File
    private var instance : FileManager? = null

    init {
        Log.d("Класс создался", "тут")
        val directory: File
        if (Environment.MEDIA_MOUNTED == Environment.getExternalStorageState())
            directory = Environment.getExternalStorageDirectory()
        else
            directory = ContextCompat.getDataDir(context)!!
        rootDirecory = directory
        navigateTo(directory)
    }

    fun navigateTo(directory: File): Boolean {
        /**
         * Проверяем является ли файл директорией
         */
        if (!directory.isDirectory) {
            Log.d("FileManager", "${directory.absolutePath} is not a directory!")
            return false
        }

        /**
         * Проверим, не поднялись ли мы выше rootDirectory
         */

        if ((directory != rootDirecory) && rootDirecory.absolutePath.contains(directory.absolutePath)) {
            Log.w(
                "FileManager",
                "Trying to navigate upper than root directory to " + directory.absolutePath
            );
            return false
        }

        currentDirectory = directory
        return true
    }

    fun navigateUp(): Boolean {
        return navigateTo(currentDirectory.parentFile!!)
    }

    fun getFiles(): ArrayList<File> {
        val items = ArrayList<File>()
        val files = currentDirectory.listFiles()
        files?.let {
            items.addAll(currentDirectory.listFiles())
        }
        return items
    }

    fun getInstance(context: Context): FileManager{
        if(instance == null)
            instance = FileManager(context)
        return instance as FileManager
    }
}

我不知道如何将代码从 init 移动到主构造函数,并且由于 Init 始终有效,结果证明这不是单例

而且我还是不喜欢我的调用方式,你需要去掉不必要的参数

fileManager = FileManager(context!!).getInstance(context!!)

分段

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        fileManager = FileManager(context!!).getInstance(context!!)
        val bundle = this.arguments

        fileProviderAdapter = FileProviderAdapter{

            if(it.isDirectory){
                fileManager.navigateTo(it.absoluteFile)
                Log.d("нафигация", it.absoluteFile.toString())
                Snackbar.make(getView()!!, "Навигация ${it.name}", Snackbar.LENGTH_LONG)
                    .show()
                loadFragment(FileProviderFragment())
            }
            else{
                Snackbar.make(getView()!!, "Клик по ${it.name}", Snackbar.LENGTH_LONG)
                    .show()
            }
android
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-02-24 09:50:20 +0000 UTC

aiohttp 特定超时

  • 0

解析时,我遇到了一个问题,它有点冻结。什么都没有发生,没有日志,绝对没有。

CPU 负载和内存消耗不会改变。

现在它在处理了 8000 个链接后冻结了。

我不知道有什么问题。

我认为服务器断开了连接,并且好像请求挂断了。

是否可以以某种方式指定执行请求的时间,例如 30 秒,这样如果这个时间过去了,它会抛出某种错误,以便我可以捕获它并再次执行请求?

我目前正在使用此代码

async def async_request(items):
    url = items[0]
    global request_semaphone
    async with request_semaphone:
        try:
            async with aiohttp.ClientSession() as client:
                async with client.get(url) as r:
                    print("Статус:", r.status , "url:", url)
                    if(r.status == 200):
                        name = url.split("/")[-1]
                        if(name.find(".jpg") != -1):
                            await save_image(r, name)
                        else:
                            if(len(items) > 1):
                                return [await r.text(), url, items[1]]
                            else:
                                return [await r.text(), url]



                    else:
                        print(r.status, "Задержка 1 секунда")
                        await asyncio.sleep(1)
                        await async_request(url)

        except Exception as e:
            print("Блокировка. Ожидание 10 секунд", e, items)
            await asyncio.sleep(1)
            await async_request(url)

我还将听取为什么 python(或解析器本身)冻结的建议。

python
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-02-23 00:50:25 +0000 UTC

帮助编写正则表达式

  • 0

解析的时候需要拉出页面中没有的参数之一,但是在js中。

js片

i","brandId":14426,"nomenclatures":{"2217416":{"cod1S":2217416,"ordersCount":700,"artikul":"

需要拉取ordersCount中的值

我首先尝试拉出2个搜索索引text.find(),然后将其从文本中剪掉,但它抛出了-1,即未找到

现在我正在尝试借助正则表达式,但编译它时出现问题。无法弄清楚如何限制左右。

最后一次尝试/^"ordersCount":.\$/

python
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-02-22 22:48:32 +0000 UTC

将日期转换为可读形式 Python

  • 1

有一条线

2020-01-25T19:27:49.3223932

如何将其转换为方便阅读的形式?例如 2020 年 1 月 25 日

像这样试过

datetime.datetime.strptime(first_comment, '%Y-%m-%dT%H:%M:%S')
python
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-02-07 00:23:43 +0000 UTC

在一个答案中改造不同的模型

  • 1

有一些搜索请求在其字段中返回包含不同模型的 JSON。

例子

{
 "resultCount":13,
 "results": [
{"wrapperType":"collection", "collectionType":"Album", "artistId":40876509, "collectionId":259510974, "amgArtistId":310510, "artistName":"D+", "collectionName":"Dandelion Seeds", "collectionCensoredName":"Dandelion Seeds", "artistViewUrl":"https://music.apple.com/us/artist/d/40876509?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/dandelion-seeds/259510974?uo=4", "artworkUrl60":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/60x60bb.jpg", "artworkUrl100":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/100x100bb.jpg", "collectionPrice":9.99, "collectionExplicitness":"notExplicit", "trackCount":12, "copyright":"℗ 1998 K Records", "country":"USA", "currency":"USD", "releaseDate":"2007-09-04T07:00:00Z", "primaryGenreName":"Alternative"}, 
{"wrapperType":"track", "kind":"song", "artistId":40876509, "collectionId":259510974, "trackId":259511004, "artistName":"D+", "collectionName":"Dandelion Seeds", "trackName":"Cut It Out", "collectionCensoredName":"Dandelion Seeds", "trackCensoredName":"Cut It Out", "artistViewUrl":"https://music.apple.com/us/artist/d/40876509?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/cut-it-out/259510974?i=259511004&uo=4", "trackViewUrl":"https://music.apple.com/us/album/cut-it-out/259510974?i=259511004&uo=4", 
"previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview71/v4/4e/fc/93/4efc93a5-f3f0-0c7e-ed14-68cb6b6d6fbd/mzaf_5721197462467928771.plus.aac.p.m4a", "artworkUrl30":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/30x30bb.jpg", "artworkUrl60":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/60x60bb.jpg", "artworkUrl100":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":0.99, "releaseDate":"1998-08-25T12:00:00Z", "collectionExplicitness":"notExplicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":12, "trackNumber":1, "trackTimeMillis":236187, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, 
{"wrapperType":"track", "kind":"song", "artistId":40876509, "collectionId":259510974, "trackId":259511045, "artistName":"D+", "collectionName":"Dandelion Seeds", "trackName":"Green Party", "collectionCensoredName":"Dandelion Seeds", "trackCensoredName":"Green Party", "artistViewUrl":"https://music.apple.com/us/artist/d/40876509?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/green-party/259510974?i=259511045&uo=4", "trackViewUrl":"https://music.apple.com/us/album/green-party/259510974?i=259511045&uo=4", "previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/Music/v4/eb/c7/6a/ebc76a4f-3825-8060-f781-a0f36532f198/mzaf_876283245701275269.plus.aac.p.m4a", "artworkUrl30":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/30x30bb.jpg", "artworkUrl60":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/60x60bb.jpg", "artworkUrl100":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":0.99, "releaseDate":"1998-08-25T12:00:00Z", "collectionExplicitness":"notExplicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":12, "trackNumber":2, "trackTimeMillis":170587, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, 
{"wrapperType":"track", "kind":"song", "artistId":40876509, "collectionId":259510974, "trackId":259511130, "artistName":"D+", "collectionName":"Dandelion Seeds", "trackName":"Don't Worry About Me", "collectionCensoredName":"Dandelion Seeds", "trackCensoredName":"Don't Worry About Me", "artistViewUrl":"https://music.apple.com/us/artist/d/40876509?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/dont-worry-about-me/259510974?i=259511130&uo=4", "trackViewUrl":"https://music.apple.com/us/album/dont-worry-about-me/259510974?i=259511130&uo=4", "previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/Music/v4/00/79/54/007954d4-c7f7-8900-cf96-1173ca7f608f/mzaf_5029393603193854925.plus.aac.p.m4a", "artworkUrl30":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/30x30bb.jpg", "artworkUrl60":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/60x60bb.jpg", "artworkUrl100":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":0.99, "releaseDate":"1998-08-25T12:00:00Z", "collectionExplicitness":"notExplicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":12, "trackNumber":3, "trackTimeMillis":227293, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, 
{"wrapperType":"track", "kind":"song", "artistId":40876509, "collectionId":259510974, "trackId":259511261, "artistName":"D+", "collectionName":"Dandelion Seeds", "trackName":"Dandelion Wine", "collectionCensoredName":"Dandelion Seeds", "trackCensoredName":"Dandelion Wine", "artistViewUrl":"https://music.apple.com/us/artist/d/40876509?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/dandelion-wine/259510974?i=259511261&uo=4", "trackViewUrl":"https://music.apple.com/us/album/dandelion-wine/259510974?i=259511261&uo=4", 
"previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview62/v4/bd/42/36/bd423652-c476-10f5-a1f5-383adfa56eb4/mzaf_1251229812831649846.plus.aac.p.m4a", "artworkUrl30":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/30x30bb.jpg", "artworkUrl60":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/60x60bb.jpg", "artworkUrl100":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":0.99, "releaseDate":"1998-08-25T12:00:00Z", "collectionExplicitness":"notExplicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":12, "trackNumber":4, "trackTimeMillis":231653, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, 
{"wrapperType":"track", "kind":"song", "artistId":40876509, "collectionId":259510974, "trackId":259511347, "artistName":"D+", "collectionName":"Dandelion Seeds", "trackName":"Profits Are Soaring", "collectionCensoredName":"Dandelion Seeds", "trackCensoredName":"Profits Are Soaring", "artistViewUrl":"https://music.apple.com/us/artist/d/40876509?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/profits-are-soaring/259510974?i=259511347&uo=4", "trackViewUrl":"https://music.apple.com/us/album/profits-are-soaring/259510974?i=259511347&uo=4", "previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/Music/v4/35/f3/46/35f34609-4e71-ae71-355b-c6ac72181730/mzaf_5686900859081999102.plus.aac.p.m4a", "artworkUrl30":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/30x30bb.jpg", "artworkUrl60":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/60x60bb.jpg", "artworkUrl100":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":0.99, "releaseDate":"1998-08-25T12:00:00Z", "collectionExplicitness":"notExplicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":12, "trackNumber":5, "trackTimeMillis":249600, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, 
{"wrapperType":"track", "kind":"song", "artistId":40876509, "collectionId":259510974, "trackId":259511409, "artistName":"D+", "collectionName":"Dandelion Seeds", "trackName":"Rusted", "collectionCensoredName":"Dandelion Seeds", "trackCensoredName":"Rusted", "artistViewUrl":"https://music.apple.com/us/artist/d/40876509?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/rusted/259510974?i=259511409&uo=4", "trackViewUrl":"https://music.apple.com/us/album/rusted/259510974?i=259511409&uo=4", "previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/Music2/v4/8b/33/67/8b336773-9747-cafe-a624-2ea18a8069a6/mzaf_2729424859737659172.plus.aac.p.m4a", "artworkUrl30":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/30x30bb.jpg", "artworkUrl60":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/60x60bb.jpg", "artworkUrl100":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":0.99, "releaseDate":"1998-08-25T12:00:00Z", "collectionExplicitness":"notExplicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":12, "trackNumber":6, "trackTimeMillis":316987, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, 
{"wrapperType":"track", "kind":"song", "artistId":40876509, "collectionId":259510974, "trackId":259511510, "artistName":"D+", "collectionName":"Dandelion Seeds", "trackName":"My Best Day", "collectionCensoredName":"Dandelion Seeds", "trackCensoredName":"My Best Day", "artistViewUrl":"https://music.apple.com/us/artist/d/40876509?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/my-best-day/259510974?i=259511510&uo=4", "trackViewUrl":"https://music.apple.com/us/album/my-best-day/259510974?i=259511510&uo=4", "previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/Music/v4/41/4c/a7/414ca717-b07d-b927-9ffa-8da8a231f2ac/mzaf_3343910103798289777.plus.aac.p.m4a", "artworkUrl30":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/30x30bb.jpg", "artworkUrl60":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/60x60bb.jpg", "artworkUrl100":"https://is4-ssl.mzstatic.com/image/thumb/Music/v4/67/d1/18/67d11843-724e-f40b-34ba-f94f087909c3/source/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":0.99, "releaseDate":"1998-08-25T12:00:00Z", "collectionExplicitness":"notExplicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":12, "trackNumber":7, "trackTimeMillis":188480, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, 
{"wrapperType":"track", "kind":"song", "artistId":40876509, "collectionId":259510974, "trackId":259511537, "artistName":"D+", "collectionName":"Dandelion Seeds", "trackName":"His Heels", "collectionCensoredName":"Dandelion Seeds", "trackCensoredName":"His Heels", "artistViewUrl":"https://music.apple.com/us/artist/d/40876509?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/his-heels/259510974?i=259511537&uo=4", "trackViewUrl":"https://music.apple.com/us/album/his-heels/259510974?i=259511537&uo=4", 

这种情况下如何发送请求,后面又如何解析呢?

fun getAlbumAndSongs(
        @Query("id") collectionId : Long,
        @Query("entity") entity: String = "songs"
    ) : Response<BaseResponse<T>>

用什么来代替T?我不能指定 2 个不同的型号?

data class BaseResponse<T>(
    val resultCount : Int,
    val results : List<T>
)

更新

val baseEntity = body.results.map {
                        gson.fromJson(it.toString(), BaseEntity::class.java)
                    }

因错误而崩溃

com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 142 path $.collectionName
android
  • 3 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-01-11 20:55:59 +0000 UTC

从 1 开始的 Pandas 索引

  • 0

在 Excel 中保存数据时,记录的索引从 0 开始

pd.DataFrame(products).to_excel(config["output_filename"], index=True)

有没有办法从1开始索引?

python
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-01-09 02:48:26 +0000 UTC

从 html 中清除文本 - 代码

  • 1

该网站上的 javascript 包含一些 Json,我使用正则表达式将其提取出来。

但是 Json 包含 html 元素。有没有办法摆脱它们,只留下文字?

例如

<div>Гарантированный анализ:</b> протеин 0,0014%, жиры 0,00029%, зола 5,3%, влага 81%, кальций 5,2%, калий 0,026%, магний 0,000014%, натрий 0,000047%, фосфор 0,0011%.</div><div style="text-align: justify;"><b>Состав: </b>минералы, сахар, молоко и молочные продукты, концентрат черной смородины.</div><div style="text-align: justify;">  </div><div style="text-align: justify;"><b>Гарантированный анализ:</b> протеин 0,0014%, жиры 0,00029%, зола 5,3%, влага 81%, кальций 5,2%, калий 0,026%, магний 0,000014%, натрий 0,000047%, фосфор 0,0011%.</div><div style="text-align: justify;">  </div><div style="text-align: justify;"><b>Добавки на 1 л:</b> витамин С 200 мг.</div>

更新:这些方法不适用于此:

\r\n\u003cul>\r\n  \u003cli style=\"text-align: justify;\">Полноценный корм в виде хлопьев с натуральными усилителями цвета\u003c/li>

更新 如果您将 bs4 打印到控制台,它会打印

Результат: 
Полноценный корм в виде хлопьев с натуральными усилителями цвета
Поддерживает яркость и полноту окраса всех видов красных, оранжевых и желтых декоративных рыб 
Эффект усиления цвета виден всего через две недели 
БиоАктив-формула поддерживает здоровой иммунную систему 
Содержит пребиотики для лучшего переваривания пищи 
Для здорового роста рыб и чистой воды

一切都很好,但是如果我将值输入字典,然后显示该字典,那么特殊字符会从我身上溜走

{'composition': 'Ингредиенты:\xa0рыба и побочные рыбные продукты, зерновые культуры, дрожжи, моллюски и раки, экстракты растительного белка, масла и жиры, водоросли, сахар (олигофруктоза 0,9%), минеральные вещества.\n\n\n\nАналитический состав:\n\n\
python
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-12-15 04:36:42 +0000 UTC

数据框中的字典

  • 1

我已经解析了一些数据,现在我需要将数据从 dict 转换为 dataframe。我不是熊猫的朋友,所以希望能得到你的帮助

df = pd.DataFrame(text)
print(df)

不知何故不清楚

0   {'film_name': '21 мост', 'film_genres': ['боев...
1   {'film_name': 'FORD против FERRARI', 'film_gen...
2   {'film_name': 'Аббатство Даунтон', 'film_genre...
3   {'film_name': 'Арахисовый сокол', 'film_genres...
4   {'film_name': 'Война токов', 'film_genres': ['...
5   {'film_name': 'Давай разведемся', 'film_genres...

text:

{
  'filmes': [
    {
      'film_name': '21 мост', 
      'film_genres': ['боевик', 'триллер'], 
      'cinames': [
        {
          'cinema': 'Nescafe-IMAX', 
          'sessions': [
            {
              'time': '23:55', 
              'price': '190 ₽', 
              'format': '2D'
            }
          ]
        }, 
        {
          'cinema': 'Каро 13 Кунцево', 
          'sessions': [
            {
              'time': '23:25', 
              'price': '430 ₽', 
              'format': '2D'
            }
          ]
        }, 
        {
          'cinema': 'Каро 8 Теплый Стан', 
          'sessions': [
            {
              'time': '23:25', 
              'price': '350 ₽', 
              'format': '2D'
            }
          ]
        }, 
        {
          'cinema': 'Киномакс Мозаика', 
          'sessions': [
            {
              'time': '23:50', 
              'price': '290 ₽', 
              'format': '2D'
            }
          ]
        },
      ]
    }
  ]
}
python
  • 2 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-12-15 03:46:44 +0000 UTC

Python 用西里尔字母将 dict 保存到 json

  • 1

我想将dict保存到json。

我这样保存:

def save_json(json_text, output_filename):
    with open(output_filename, 'w') as outfile:
        outfile.write(json_text)

西里尔文形式的代码在文件中。像这样试过

def save_json(json_text, output_filename):
    with open(output_filename, 'w') as outfile:
        json.dump(json_text, outfile, ensure_ascii=False)

引发 AttributeError:'dict' 对象没有属性 'dump',已删除、重命名,现在最后一个选项返回

UnicodeEncodeError: 'charmap' codec can't encode character '\u20bd' in position 5: character maps to <undefined>
python
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-11-09 21:39:28 +0000 UTC

Python 需要帮助进行排序

  • 1

我需要按升序对列表进行排序。作为排序参数,你必须指定每个item被某个参数拆分后的列表长度 split("paramater")

def sorted(items):
    return sorted(items, key = )

入口:

0.2090000.ru
0.fls.doubleclick.net
0.hiveon.net
0.internet.org
0.r.bat.bing.com
0.r.msn.com

出口:

0.2090000.ru          - 3 
0.hiveon.net          - 3
0.internet.org        - 3
0.fls.doubleclick.net - 4
0.r.msn.com           - 4
0.r.bat.bing.com      - 5

在键中指定什么?如何在items中引用item?

python
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-08-14 00:22:45 +0000 UTC

在 Pandas 中分组和选择数据

  • 1

我有一个这样的excel电子表格:

группа  запрос      .....   длстр

0       1 2 3 4 5 6           63
0       1 2 3 4 5             55
0       1 2 3 4 5 6           55
0       1 2 3 4               46
0       1 2 3 4               45
0       1 2 3 4               45
1       1 2 3 4 5 6           80
..

有一些组(在示例中此组为 0)

Среди группы необходимо получить только одну строку.
Условие выборки:
Если количество слов в столбце запрос = 5 выбираем, иначе
Если количество слов в столбце запрос = 6 выбираем, иначе если количество слов в столбце запрос равен 4 выбираем

Дополнительно, если встречаются несколько 5, 6 или 4, то нужно выбрать ту строчку, где значение в столбце длст ("G" в Excel) больше

在我们的例子中,输出线是

 группа  запрос      .....   длстр
    0    1 2 3 4 5             55

康

группа;Запрос;Позиция;Базовая частотность;Очень точная частотность;Количество слов;длстр
1;основные принципы демократического избирательного права таблица;47;12;12;6;63
1;основные принципы демократического избирательного права;39;148;14;5;55
1;порядок подачи жалобы на административное постановление;48;81;3;6;55
1;принципы демократического избирательного права;43;569;92;4;46
1;демократические принципы избирательного права;43;569;19;4;45
1;принцип демократического избирательного права;28;569;10;4;45
1;основные принципы избирательного права;45;745;111;4;38
1;принцип гласности избирательного права;50;21;1;4;38
1;принцип прямого избирательного права;50;368;56;4;36
1;принципы избирательного права это;49;285;44;4;33
1;принципы избирательного права;49;8504;1403;3;29
1;принцип избирательного права;38;8585;96;3;28
2;истечение срока давности уголовного преследования;40;553;28;5;49
2;срок давности по уголовным делам средней тяжести;48;46;15;7;48
2;срок исковой давности по уголовным преступлениям;42;30;12;6;48
2;как исчисляется срок давности по уголовным делам;10;19;15;7;48
2;когда истекает срок давности по уголовному делу;46;119;6;7;47
2;как считается срок давности по уголовным делам;6;9;1;7;46
2;срок давности для возбуждения уголовного дела;33;44;4;6;45
2;когда истекает срок давности уголовного дела;32;214;1;6;44
2;исчисление срока давности по уголовным делам;28;12;4;6;44
2;срок давности расследования уголовного дела;5;24;3;5;43
2;факт уголовного преследования срок хранения;35;19;3;5;43
2;что такое срок давности по уголовным делам;17;76;21;7;42
2;какие преступления не имеют срока давности;37;72;21;6;42
2;срок исковой давности в уголовном процессе;52;15;3;6;42
2;сроки исковой давности по уголовным делам;34;543;14;6;41
2;срок давности возбуждения уголовного дела;50;509;7;5;41
2;какой срок давности у тяжких преступлений;47;1;1;6;41
2;истечение срока давности уголовного дела;46;1536;17;5;40
2;срок давности по уголовным преступлениям;50;731;121;5;40
2;срок исковой давности по уголовным делам;36;556;171;6;40
2;срок исковой давности по уголовному делу;31;543;24;6;40
2;с какого момента начинается преступление;26;340;1;5;40
2;есть ли срок давности по уголовным делам;24;289;8;7;40
2;сколько срок давности по уголовным делам;32;52;9;6;40
2;сроки давности уголовного преследования;50;1063;49;4;39
2;какие сроки давности по уголовным делам;24;192;3;6;39
2;прошел срок давности по уголовным делам;28;40;4;6;39
2;какой срок давности по уголовным делам;28;187;12;6;38
2;преступления не имеющие срока давности;47;164;12;5;38
2;сроки преследования по уголовным делам;35;70;2;5;38
2;срок давности преступления сколько лет;49;43;2;5;38
2;срок исковой давности уголовного дела;34;711;18;5;37
2;срок преследования по уголовному делу;48;70;5;5;37
2;какой срок давности у уголовного дела;22;60;5;6;37
2;истечение срока давности преступления;49;11;11;4;37
2;какие статьи не имеют срока давности;39;16;2;6;36
2;исковая давность по уголовным делам;28;630;21;5;35
2;когда истекает срок уголовного дела;27;407;6;5;35
2;какой срок уголовного преследования;50;76;1;4;35
2;какой срок давности у уголовных дел;22;56;27;6;35
2;срок исковой давности по уголовным;37;586;2;5;34
2;срок давности в уголовном процессе;38;65;2;5;34
2;сроки давности по уголовным делам;47;5885;468;5;33
2;сроки давности по уголовному делу;43;5773;19;5;33
2;по каким делам нет срока давности;51;18;1;6;33
2;срок давности по уголовным делам;48;5885;1778;5;32
2;срок давности по уголовному делу;43;5773;41;5;32
2;какой срок давности преступления;51;501;4;4;32
2;какие статьи имеют срок давности;24;22;2;5;32
2;давность лет по уголовным делам;18;118;6;5;31
2;срок истечения уголовного дела;34;2030;7;4;30
2;сроки уголовного преследования;32;1519;36;3;30
2;срок действия уголовной статьи;54;22;1;4;30
2;срок давности уголовного дела;29;8239;86;4;29
2;срок уголовного преследования;39;1519;27;3;29
2;срок действия уголовного дела;23;357;5;4;29
2;срок годности уголовного дела;32;41;7;4;29
2;срок давности уголовных дел;23;8056;24;4;27
2;сроки давности по уголовным;45;7877;30;4;27
2;сроки давности преступлений;50;7309;61;3;27
2;давность по уголовным делам;28;6019;5;4;27
2;срок действия уголовных дел;30;357;2;4;27
2;срок давности по уголовным;39;7877;39;4;26
2;срок давности преступление;49;7456;5;3;26
2;срок действия преступлений;30;224;3;3;26
2;срок действия преступления;36;222;10;3;26
2;срок годности преступления;39;16;16;3;26
2;давность уголовного дела;25;8321;2;3;24
2;срок давности дела;49;17016;6;3;18
20;как сделать лицензию на такси самому;34;33;6;6;36
22;уголовный кодекс об оскорблении личности человка;43;5;2;6;40
22;моральное оскорбление личности статья;37;44;6;4;37
26;образец жалобы на неправильно поставленный диагноз врача;33;1;1;7;56
26;врачи поставили неправильный диагноз куда жаловаться;17;36;4;6;52
26;если поставили неправильный диагноз куда жаловаться;12;57;4;6;51
26;врачи неправильно поставили диагноз куда обращаться;22;12;1;6;51
26;кому жаловаться на неправильно поставленный диагноз;17;3;1;6;51
26;если врач поставил неправильный диагноз что делать;44;51;19;7;50
26;врач поставил неправильный диагноз куда жаловаться;11;36;12;6;50
26;жалоба на неправильно поставленный диагноз образец;27;1;1;6;50
26;поставили неправильный диагноз куда жаловаться;7;57;3;5;46
26;куда жаловаться на неправильный диагноз врача;5;3;1;6;45
26;жалоба на неправильно поставленный диагноз;16;18;1;5;42
26;поставили неправильный диагноз что делать;50;96;2;5;41
26;если врач назначил неправильное лечение;37;42;7;5;39
26;куда жаловаться на неправильный диагноз;11;8;1;5;39
26;если врач неправильно поставил диагноз;51;407;4;5;38
26;неправильный диагноз врачей что делать;44;82;7;5;38
26;неправильный диагноз куда обращаться;24;71;1;4;36
26;жалоба на врача неправильный диагноз;9;31;1;5;36
26;если врач неверно поставил диагноз;46;84;3;5;34
26;врач написал неправильный диагноз;43;26;1;4;33
26;жалоба на неверный диагноз врача;9;9;4;5;32
26;если врач поставил неправильный;46;469;1;4;31
26;врач поставил ошибочный диагноз;49;114;1;4;31
26;жалобы на неправильный диагноз;21;71;1;4;30

输出数据(如果我自己没有弄错的话)

1 - 1;основные принципы демократического избирательного права;39;148;14;5;55
2 - 2;истечение срока давности уголовного преследования;40;553;28;5;49
20 - 20;как сделать лицензию на такси самому;34;33;6;6;36
22 - 22;уголовный кодекс об оскорблении личности человка;43;5;2;6;40
26 - 26;поставили неправильный диагноз куда жаловаться;7;57;3;5;46
python
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-05-06 05:15:13 +0000 UTC

录制在线广播并分割成片段

  • 1

您需要录制直播。

按时间或文件大小拆分,即录制广播并将其“随时随地”拆分为多个片段,以便立即开始编辑,而无需等待流结束。

目前,这个任务有几个库:

  1. Youtube-dl(废弃)
  2. 直播者(废弃)
  3. Streamlink(支持)

在线播放的问题是帧数可变(录制游戏),在 Sony Vegas 或 Adob​​e Premiere 中无法正常编辑(声音和视频不同步)(尽管在最新版本的 Adob​​e Premiere 中它们有支持可变数量的帧,但效果很差或根本不工作)

在此之前,我尝试使用 youtube-dl + ffmpeg 渲染到固定数量的帧来解决这个问题,但这会将我的笔记本电脑(i7,8 个线程,2.4 Gz)加载到 100%,这不允许使用安装与记录以前的情节并行。

我把这项任务推迟到更好的时候。

现在我决定使用streamlink返回。

虽然我正在尝试不渲染到恒定数量的帧。有必要实现视频的分段(按时间或文件大小)。但我不知道如何实现它。

当然,您可以在 Python 中运行一个 bat 文件,在其中启动 streamlink,并在 Python 中检查经过的时间,并在该过程结束时,减少该过程并重新开始。这里的问题是streamlink启动的时间比较长,在这期间会经过几秒的广播,不合适。

从streamlink的能力来看,这些是:

--hls-start-offset [HH:]MM:SS - Время, которое нужно пропустить с начала потока. Для потоков в реальном времени это отрицательное смещение от конца потока (перемотка назад).

--hls-duration [HH:]MM:SS - Ограничить продолжительность воспроизведения, полезно для просмотра сегментов потока. Фактическая продолжительность может быть немного больше, поскольку она округляется до ближайшего сегмента HLS.

По умолчанию: не ограничено .

我使用第二个命令并编写了一个 cmd - 脚本

:loop
set day=%DATE:~0,2%
set month=%DATE:~3,2%
set year=%DATE:~6,4%

set hour=%TIME:~0,2%
set minute=%TIME:~3,2%
set second=%TIME:~6,2%

set YYYYMMDD=%hour%_%minute%_%second%_%day%_%month%_%year%


streamlink --hls-live-edge 99999 --hls-segment-threads 10 --ringbuffer-size 1024M --hls-duration 00:05:00 -o %YYYYMMDD%.ts https://www.twitch.tv/makatao best


goto loop

但不幸的是,差距非常大。而且,如果我在视频中指定了5分钟,那么下一个将不会在5分钟或更多,而是不到5分钟开始。因此,需要在某个时间点将不同的视频相互同步,这也不是方便的

有没有人有什么建议?(频道选择了第一个可用的)

我的代码将 CPU 加载到 100% 以下

cls && @echo off & setlocal enableextensions enabledelayedexpansion 
set "_tag_00=https://www.youtube.com/watch?v=aiHqRt-mqxo"
set "_tag_01=--ignore-errors --abort-on-error --ignore-config --flat-playlist --geo-bypass "
set "_tag_02=--restrict-filenames --no-part --no-cache-dir --write-thumbnail --prefer-ffmpeg "
set "_tag_03=--ffmpeg-location .\ --postprocessor-args  -i "%%(title)s.%%(ext)s" -vf fps^=fps^=60^,"
set "_tag_04=scale^=1920x1080 -c:v libx264 -b:v 500k -preset superfast -c:a copy -f segment -segment_time "
set "_tag_05=60 %%^(title^)s.mp4"

youtube-dl "!_tag_00!" -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" -o "%%^(title^)s.%%^(ext^)s" !_tag_1!!_tag_2!!_tag_3!!_tag_4!!_tag_5!
Pause

代码 2(按持续时间拆分)

cls && @echo off & setlocal enableextensions enabledelayedexpansion 

    :: do some with the bat file, after then,  for all links need `call :_yd_dl` %1

    call :_yd_dl %1
    echo/ is done^^!!

    goto :eof

    :_yd_dl

    set "_tag_00=https://www.twitch.tv/ninja"
    set "_tag_01= -t 00:60:00 -v error -stats -vf fps=fps=60,scale=1920x1080 -c:v libx264 -preset superfast -c:a copy "
    for /f %%i in ('.\youtube-dl.exe -g !_tag_00! ^<nul ') do .\ffmpeg.exe  -i "%%i" !_tag_01! .\output.mp4
    exit /b 

更新写了一个脚本

def refactor(second):
    if str(second)[0] == "-":
        number_sign = "-"
        second = int(str(second)[1:])
    else:
        number_sign = ""
    current_hours = str(second // 3600)
    remainder_second = second % 3600

    current_minutes = str(remainder_second // 60)
    current_seconds = str(remainder_second % 60)
    if len(current_hours) == 1:
        current_hours = "0" + current_hours

    if len(current_minutes) == 1:
        current_minutes = "0" + current_minutes

    if len(current_seconds) == 1:
        current_seconds = "0" + current_seconds

    text_time = number_sign + current_hours + ":" + current_minutes + ":" + current_seconds

    return text_time


def run():
    duration = 60
    time_stream = 0
    print(refactor(time_stream))
    while True:
        current_time_date = datetime.datetime.now().strftime("%H.%M.%S_%d_%m_%Y")
        subprocess.call(["streamlink", "--hls-live-edge", "99999", "--hls-segment-threads", "10", "--ringbuffer-size", "1024M", "--hls-duration", refactor(duration), "--hls-start-offset", refactor(time_stream),"-o",  current_time_date + ".ts", "https://www.twitch.tv/csruhub", "best"])

        time_stream =+ duration

        time.sleep(10)

他把它分成几个部分,但问题是他按时开始,但只有在部分结束时才完成。

事实证明,这些部分是相互叠加的。所以这个问题仍然是相关的。

python
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-04-13 01:55:13 +0000 UTC

Android连接到本地服务器的问题

  • 0

我正在编写一个 Android 应用程序。

交互方式:REST API。

服务器:WampServer 本地服务器

问题:没有连接。我正在尝试连接到 API,但它不起作用:

编码:

public class ApiUtils {
//    private static String apiUrl = "https://localhost/usatu/";
//    private static String apiUrl = "https://192.168.0.102/usatu/";
 //   private static String apiUrl = "https://192.168.0.1/usatu/";
      private static String apiUrl = "https://10.0.3.2/"
    private static Retrofit retrofit;
    private static APIService api;

    public static Retrofit getRetrofit(){

        if(retrofit == null){
            retrofit = new Retrofit.Builder()
                    .baseUrl(apiUrl)
                    .addConverterFactory(GsonConverterFactory.create())
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .build();
        }

        return retrofit;
    }


    public static APIService getApi(){
        if(api == null){
            api = getRetrofit().create(APIService.class);
        }
        return api;
    }
}

我根本无法连接到服务器:回溯:

W/System.err: io.reactivex.exceptions.OnErrorNotImplementedException: Failed to connect to /192.168.0.1:443
        at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
        at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
        at io.reactivex.internal.observers.ConsumerSingleObserver.onError(ConsumerSingleObserver.java:47)
        at io.reactivex.internal.operators.single.SingleObserveOn$ObserveOnSingleObserver.run(SingleObserveOn.java:79)
        at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
    Caused by: java.net.ConnectException: Failed to connect to /192.168.0.1:443
        at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:248)
        at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:166)
        at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)
        at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
        at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
        at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:254)
        at okhttp3.RealCall.execute(RealCall.java:92)
        at retrofit2.OkHttpCall.execute(OkHttpCall.java:186)
        at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:41)
        at io.reactivex.Observable.subscribe(Observable.java:10955)
        at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
        at io.reactivex.Observable.subscribe(Observable.java:10955)
        at io.reactivex.internal.operators.observable.ObservableSingleSingle.subscribeActual(ObservableSingleSingle.java:35)
W/System.err:     at io.reactivex.Single.subscribe(Single.java:2779)
        at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
        at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452)
        at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61)
        at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
W/System.err:     at java.lang.Thread.run(Thread.java:764)
    Caused by: java.net.ConnectException: failed to connect to /192.168.0.1 (port 443) from /192.168.234.231 (port 55154) after 10000ms: isConnected failed: ECONNREFUSED (Connection refused)
        at libcore.io.IoBridge.isConnected(IoBridge.java:273)
        at libcore.io.IoBridge.connectErrno(IoBridge.java:188)
        at libcore.io.IoBridge.connect(IoBridge.java:130)
W/System.err:     at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:129)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:356)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
        at java.net.Socket.connect(Socket.java:616)
        at okhttp3.internal.platform.AndroidPlatform.connectSocket(AndroidPlatform.java:73)
        at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:246)
        ... 33 more
W/System.err: Caused by: android.system.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused)
        at libcore.io.IoBridge.isConnected(IoBridge.java:262)
        ... 43 more

虽然如果我通过浏览器访问服务器,http://localhost/usatu/v1/semesters会返回正确的结果。

ip 使用 ipconfig (window) 命令确定

在此处输入图像描述

在 Genymotion 模拟器上测试

更新:通过模拟器上的浏览器,我连接到地址htttp://10.0.3.2/v1/semesters 并且它在那里工作,但应用程序中的错误并没有消失

接口:

public interface APIService {
    @GET("v1/semesters")
    Single<List<Semester>> getSemesters();
}

主持人:

@InjectViewState
public class SearchScheduleStudentPresenter extends BasePresenter<SearchScheduleStudentView> {

    private SearchScheduleStudentView mView;

    public SearchScheduleStudentPresenter(SearchScheduleStudentView view) {
        mView = view;
    }

    public void getSemesters(){
        mCompositeDisposable.add(
                ApiUtils.getApi()
                .getSemesters()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(
                        response -> mView.showSemesters(response)
                )
        );


    }
}

看法

public interface SearchScheduleStudentView extends BaseView {

    void showSemesters(List<Semester> semesters);

}

分段:

@Override
    public void showSemesters(List<Semester> semesters) {
        List<String> semestersName = new ArrayList<>();
        for (Semester semester : semesters) {
            semestersName.add(semester.getName());

        }
//        adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, semestersName);
    }

显现

<uses-permission android:name="android.permission.INTERNET"/>

在浏览器中检查模拟器上的 工作在此处输入图像描述

android
  • 2 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-04-11 22:47:18 +0000 UTC

Python解析错误

  • 2

有一个代码:

<div class="sm gray">
<img class="absmid" alt="Продам" src="https://vestniktm.com/images/typep.gif"> Разместили сегодня (Дата окончания публикации: 18.04.2019 г.)</div>

本质上,此文本指的是一个 div。拉出这段文字就够了:

date = html.cssselect("div.sm.gray")[0].text

但是不,它返回无。我以为它指的是 Img,只是缺少尾随 /

date = html.cssselect("div.sm.gray > img")[0]

回来:

<img class="absmid" alt="Продам" src="https://vestniktm.com/images/typep.gif"> Разместили сегодня (Дата окончания публикации: 18.04.2019 г.)

所以这是真的。我们取文:

date = html.cssselect("div.sm.gray > img")[0].text

但它也返回无。什么?

将解析器从 l​​xml 更改为 html.parser,但错误仍然存​​在

python
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-04-09 22:57:37 +0000 UTC

Selenium Webdriver 无法通过文本找到链接

  • 2

关联

在文本中找不到链接İnceleme(土耳其语)

项目代码:

<a 
    href="https://www.hurriyetemlak.com/projeler/meydan-eryaman-review-2" 
    class="b-complex-sub-menu__item js-complex-sub-menu swiper-slide" 
    style="margin-right: 15px;">
        İnceleme
</a>

编码:

driver.find_element_by_link_text("İnceleme")
python
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-04-08 01:30:53 +0000 UTC

Python Selenium Webdriver网站分页问题

  • 2

大家好,您需要通过网站上的分页。

问题出现在第30页某处,加载货物的动画无限期挂起,因此无法执行任何操作。

此问题仅发生在 Selenium 中。

如果我自己浏览浏览器,一切都会好起来的。什么可能是这样的问题?

from selenium import webdriver
from selenium.common.exceptions import *
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
import time




def get_index_develop():
    global index_develop
    index_develop += 1
    return index_develop

def get_translated_text(text):
    return text

def init_driver():
    ff = "../install/geckodriver.exe"
    # chrome_option = webdriver.ChromeOptions()
    # # chrome_option.add_argument("headless")
    # prefs = {"profile.managed_default_content_settings.images": 2}
    # chrome_option.add_experimental_option("prefs", prefs)


    try:
        driver = webdriver.Firefox(executable_path=ff)
        # driver = webdriver.Chrome(executable_path=ff, options=chrome_option)
        # driver = webdriver.Chrome(executable_path=ff, chrome_options=chrome_option, service_args=service_args)
    except SessionNotCreatedException:
        print("Ошибка инициализации браузера. Скорее всего у вас не установлен браузер. Пожалуйста обратитесь к разработчику парсера")

    return driver



def close_pop_up_window(driver):
    blocks = driver.find_elements_by_css_selector(
        "div.b-popup.js-popup >div > div.b-popup__header.js-popup__header > div")
    for block in blocks:
        try:
            block.click()
            break
        except:
            continue
    time.sleep(1)


def parse_list_projects(driver):
    urls = []
    driver.get("https://www.hurriyetemlak.com/projeler/projects")




    # Блок пагинации
    while True:
        close_pop_up_window(driver)
        refresher = WebDriverWait(driver, 300).until(EC.invisibility_of_element_located((By.CSS_SELECTOR, "div.b-scroll.js-search-left-content.js-preload-parent.b-preload-block.load")))

        items = driver.find_elements_by_css_selector("div.b-snippet__wrapper.js-complex__wrapper")
        for item in items:
            href = item.get_attribute("data-href")
            print("Найдена ссылка на проект", href)
            urls.append(href)

        try:
            pagination_block = WebDriverWait(driver, 10).until(EC.visibility_of_element_located(
                (By.CSS_SELECTOR, "span.b-pagination__item.b-pagination__item--next.js-pagination-next")))
            pagination_block.click()
            print("Перешли на следующую страницу")
        except Exception as e:
            try:
                print("Проверка наличия всплываюшего окна")
                button_close = driver.find_element_by_css_selector(
                    "button.b-button.b-button--full.b-button--confirm")
                time.sleep(2)
                button_close.click()
                time.sleep(2)
                print("Окно закрыли")
                pagination_block = WebDriverWait(driver, 10).until(EC.visibility_of_element_located(
                    (By.CSS_SELECTOR, "span.b-pagination__item.b-pagination__item--next.js-pagination-next")))
                pagination_block.click()
                print("Нажатие на pagination снова")
            except Exception as e:
                try:
                    close_pop_up_window(driver)
                    pagination_block = WebDriverWait(driver, 15).until(EC.visibility_of_element_located(
                        (By.CSS_SELECTOR, "span.b-pagination__item.b-pagination__item--next.js-pagination-next")))
                    pagination_block.click()

                except:
                    print("Pagination не найдены. Конец перехода между страницами", e)
                    break

    return urls, driver



if __name__ == '__main__':
    start = time.time()
    driver = init_driver()
    urls, driver = parse_list_projects(driver)
    print("Парсинг проектов")

    print("Парсинг окончен. Время выполнения", time.time() - start)

refresher 只是在数据加载期间指示的元素

python
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-04-07 02:22:08 +0000 UTC

在 Selenium WebDriver 中初始化后是否可以更改浏览器代理?

  • 1

在浏览器初始化过程中,我们可以在初始化设置中指定代理。问题:我们可以在请求执行时更改它吗?

编程语言:Python
浏览器:Chrome

python
  • 1 个回答
  • 10 Views
Martin Hope
danilshik
Asked: 2020-03-22 04:37:42 +0000 UTC

C#中输入变量的可变数量

  • 11

今天去面试,问题之一是:

如何将可变数量的变量传递给方法?

第一个想法是使用数组。但是,不幸的是,有人澄清说没有提供数组的使用。

不幸的是,除了使用列表和数组之外,我什么都没想到。有兴趣了解选项。

问题是在 C# 的上下文中。

PS我写道:“实现方法重载”。

c#
  • 3 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5