網易クラウド楽曲単一のローカルデータベースのエクスポートリストではなく、スロー、1000以上をサポート

メインコード、kotlinが書かれました

パッケージファック

インポートcom.google.gson.Gson
 インポートjava.io.Fileの
 インポートのjava.sql.Connection
 インポートのjava.sql.DriverManager
 インポートjava.sql.Statementのが

楽しいメイン(引数:アレイの<string> ){
     場合(args.size <2 ){ 
        printlnの( "使用:javaの-jar xxx.jar dbFilePath outputPath" リターン
    } 

    ヴァルdbFilePath =引数[0 ] 
    ヴァル関数savepath =引数[1 ] 

    initdbを(dbFilePath)

    getPlayLists()?.forEach {プレイリスト- > 
        getSonsByPid ("$ {playLists.id}")?.forEach { 
            ヴァルfromJson = Gson()。fromJson <JsonRootBean>(それは、JsonRootBean :: クラスの.java)
            VAR分野 = ""
             のための(fromJson.artistsの線){ 
                アート + = line.name + "" 
            } 
            ヴァルパス = "$関数savepath $ {playLists.name.replace(" / " " - ")}。TXT" 
            ファイル(関数savepath).mkdirs()
            ファイル(パス).appendText(fromJson.name + " - " +アート+ "\ n" 
        } 
    } 

    closeDB()
    のprintln( "导出完毕" 
} 

ヴァールC:接続=ヌル
のvarのstmt:ステートメント= ヌル

楽しいinitdbを(dbFilePath:文字列){ 
    Class.forNameの( "org.sqlite.JDBC" 
    、C =したDriverManager.getConnection( "JDBC:sqliteの:$ dbFilePath" 
    のstmt = C?.createStatement()
    のprintln( "データベースに成功オープン" 
} 

楽しいgetPlayLists():リスト <PlayListBean>?{ 
    ヴァルRS = STMT .executeQuery( "web_playlist FROM SELECTプレイリスト;"):?リターン ヌル

    ヴァルのPID = mutableListOf <PlayListBean> ()一方(rs.next()){
        pids.add(。Gson()fromJson((rs.getString 1)、PlayListBean :: クラスの.java))
    } 
    の戻りのPID 
} 

楽しいgetSonsByPid(PID:文字列):リスト <文字列>?{ 
    ヴァルSQL = "SELECTトラックweb_trackからWHEREのTID" + 
            "(web_playlist_track WHERE PID = '$ PID'からSELECT TID);" 
    ヴァル曲 = mutableListOfの<string> ()
    のVal RS = STMT .executeQuery(SQL):?戻り ヌル
    一方(rs.next()){ 
        songs.add(rs.getString( 1 ))
    } 
    戻り
} 
 
楽しいcloseDB( ){
    STMT.close()
    C.close()
}

 

倉庫住所

https://github.com/xirtam-ch/NeteaseMusicDBExport

おすすめ

転載: www.cnblogs.com/xirtam/p/12564109.html