μλ, λ²κ·Έ! κ·Έκ²μ μΌμ΄λλ€. NewPipe κ΄λ ¨ λ¬Έμ λ₯Ό μ κ³ ν΄ μ£Όμ μ κ°μ¬ν©λλ€. λ²κ·Έλ₯Ό λ°κ²¬ν κ²½μ° μ΄ ν νλ¦Ώμ μ¬μ©νμ¬ μλ €μ£Όμμμ€. μ ν¬κ° λ³΄λ€ μ½κ² ββλμμ λ릴 μ μλλ‘ μλμ μμΈν μ 보λ₯Ό μ λ ₯ν΄ μ£Όμμμ€. μ΅μ λ²μ μ NewPipeμ λ§μ€ν° λΈλμΉλ§ μ§μν©λλ€. ν΄λΉ λ²μ μ΄ μ€μΉλμ΄ μλμ§ νμΈνμμμ€. κ·Έλ μ§ μμ κ²½μ° λ¬Έμ λ₯Ό μ΄κΈ° μ μ λ¬Έμ λ₯Ό μ κ·Έλ μ΄λνκ³ μ¬ννμμμ€. λ¦΄λ¦¬μ€ νμ΄μ§(https://github.com/TeamNewPipe/NewPipe/releases/latest)λ μ΄ λ²μ μ μ»μ μ μλ κ³³μ λλ€. μ± λ²μ μ νμΈνλ €λ©΄ μΌμͺ½ μλμ μ΄κ³ "μ 보"λ₯Ό ν΄λ¦νμΈμ. μΆμ : μ°λ¦¬μ κΈ°μ¬ μ§μΉ¨μ λ³΄κ³ μλ₯Ό μμ±νκΈ° μ μ μ½μ μ μλ μ’μ λ¬ΈμμΌ μ μμ΅λλ€. :) https://github.com/TeamNewPipe/NewPipe/blob/HEAD/.github/CONTRIBUTING.mdμμ μ°Ύμ μ μμ΅λλ€.
λμμ μ¬ννλ λ¨κ³:
μΆ©λνμ§ μμ κ²μΌλ‘ μμλ©λλ€
μΆ©λ
: λλ NewPipeμ΄ music.youtube.com λ§ν¬μμ μ¬μ λͺ©λ‘μ λ³ν κ²μΌλ‘ λνλ¬μ΅λλ€ https://music.youtube.com/playlist?list=OLAK5uy_nQ_PpYn5QCPzEy6bLDHa001g6oruRlBmg νμμμ€ youtube.com λ§ν¬λ‘, https://www.youtube.com /playlist?list=OLAK5uy_nQ_PpYn5QCPzEy6bLDHa001g6oruRlBmg
μλ§λ κ΄λ ¨μ΄ μμ΅λλ€.
λ§ν¬ λλ²κ·Έμμ μ¬μ λͺ©λ‘μ λ€μ μ΄λ©΄ λ μ΄μ μΆ©λμ΄ λ°μνμ§ μμ§λ§ μ±μ κ°μ λ‘ μ€μ§νμλ§μ λ€μ λ°μν©λλ€.
RDCLAKμΌλ‘ μμνλ TOP 50, Trending 20...κ³Ό κ°μ μ¬μ λͺ©λ‘ λ―Ήμ€μμλ λ°μνμ§ μμ΅λλ€.
μ¬μ©μκ° λ§λ μ¬μ λͺ©λ‘μ λͺ¨λ μ¨λ²λ§ μλ κ² κ°μ΅λλ€.
μΆ©λ λ‘κ·Έ
java.lang.NullPointerException: Attempt to invoke virtual method 'com.grack.nanojson.JsonObject com.grack.nanojson.JsonObject.getObject(java.lang.String)' on a null object reference
at org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeParsingHelper.defaultAlertsCheck(YoutubeParsingHelper.java:404)
at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubePlaylistExtractor.onFetchPage(YoutubePlaylistExtractor.java:43)
at org.schabi.newpipe.extractor.Extractor.fetchPage(Extractor.java:56)
at org.schabi.newpipe.extractor.playlist.PlaylistInfo.getInfo(PlaylistInfo.java:29)
at org.schabi.newpipe.util.ExtractorHelper.lambda$getPlaylistInfo$9(ExtractorHelper.java:176)
at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$_QwiJvTe_SoIGFHJ5lSdqLNGnh8.call(Unknown Source:4)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
at io.reactivex.Single.subscribe(Single.java:3438)
at io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
at io.reactivex.Single.subscribe(Single.java:3438)
at io.reactivex.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
at io.reactivex.Maybe.subscribe(Maybe.java:4154)
at io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
at io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
at io.reactivex.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
at io.reactivex.Flowable.subscribe(Flowable.java:14479)
at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
at io.reactivex.Maybe.subscribe(Maybe.java:4154)
at io.reactivex.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
at io.reactivex.Single.subscribe(Single.java:3438)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
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:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
: λλ NewPipeμ΄ music.youtube.com λ§ν¬μμ μ¬μ λͺ©λ‘μ λ³ν κ²μΌλ‘ λνλ¬μ΅λλ€ https://music.youtube.com/playlist?list=OLAK5uy_nQ_PpYn5QCPzEy6bLDHa001g6oruRlBmg νμμμ€ youtube.com λ§ν¬λ‘, https://www.youtube.com /playlist?list=OLAK5uy_nQ_PpYn5QCPzEy6bLDHa001g6oruRlBmg κ΄λ ¨μ΄ μμ μ μμ΅λλ€.
μλμ, κ·Έλ μ§ μμ΅λλ€. μ΄κ²μ NewPipeExtractorμ λ λ€λ₯Έ YouTube λ²κ·Έμ λλ€. λ€μμ ν΄λΉ 리ν¬μ§ν 리μ μΆμΆκΈ° λ¬Έμ λ₯Ό μ μΆνμΈμ. 곧 μ‘°μ¬νκ² μ΅λλ€.
μ΄μ λ λ€μκ³Ό κ°μ΅λλ€.
κ·Έλ¦¬κ³ κ°νΉ μ νλΈμμ μμ μμ£Όλ κ²½μ°λ μμ΄μ μ μμ μΌλ‘ λ‘λ©μ΄ κ°λ₯ν©λλ€.
κ·Έκ²μ μμ νλ ν 리νμ€νΈκ° μμ΅λλ€: TeamNewPipe/NewPipeExtractor#285
TeamNewPipe/NewPipeExtractor#323μ μν΄ μμ λμμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
μ΄μ λ λ€μκ³Ό κ°μ΅λλ€.
κ·Έλ¦¬κ³ κ°νΉ μ νλΈμμ μμ μμ£Όλ κ²½μ°λ μμ΄μ μ μμ μΌλ‘ λ‘λ©μ΄ κ°λ₯ν©λλ€.
κ·Έκ²μ μμ νλ ν 리νμ€νΈκ° μμ΅λλ€: TeamNewPipe/NewPipeExtractor#285